synter-mcp-server
The Synter MCP Server enables AI agents to fully manage advertising campaigns across 9+ platforms (Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, X, StackAdapt, The Trade Desk) with comprehensive read/write capabilities.
Campaign Management
Create campaigns across platforms: Google Search, Display, Performance Max, Meta, LinkedIn, and Reddit — with targeting options like geo, industry, job function, subreddit, and interests
Pause campaigns and update daily budgets on any platform
List all campaigns across connected accounts with status and performance filters
Performance & Analytics
Retrieve metrics (impressions, clicks, spend, conversions, ROAS) by platform or campaign with customizable date ranges
View daily spend breakdowns across all connected ad accounts
Keywords & Targeting
Add keywords with match type control (Exact, Phrase, Broad) to campaigns or ad groups
Add negative keywords to block unwanted search terms at campaign or ad group level
Conversion Tracking
Create conversion actions (Purchase, Signup, Lead, etc.) in Google Ads
List existing conversion actions
Diagnose tracking installation by checking gtag.js, GTM, and pixel setup on any URL
AI Creative Generation
Generate ad images using Imagen 4, Flux, or Stable Diffusion in multiple sizes
Generate video ads using Veo, Runway, Luma, or Creatify
Upload images as ad assets to Google, Meta, or LinkedIn
Account & Advanced Utilities
List all connected ad accounts across all platforms
Access 140+ advanced Synter tools directly via
run_toolfor granular or specialized operations not covered by standard tools
Compatible with Claude Desktop, Cursor, Amp, and any MCP client supporting Streamable HTTP transport.
Allows managing advertising campaigns on Amazon Ads and Amazon DSP, including creation, performance monitoring, and budget management.
Provides tools for creating and managing Facebook ad campaigns, generating creative assets, and tracking performance metrics.
Enables creation and management of ads across Google Search and Google Display networks.
Comprehensive integration for managing Search, Display, and Performance Max campaigns, including keyword targeting, bidding adjustments, and conversion tracking.
Supports creating and managing Instagram ad campaigns and creative assets as part of the Meta advertising ecosystem.
Allows agents to manage advertising across Facebook and Instagram, including campaign creation, budget management, and ROAS analysis.
Provides tools for creating and managing Reddit ad campaigns, targeting niche communities, and monitoring daily spend.
Enables management of TikTok advertising campaigns, including campaign creation and performance analytics.
Supports the creation and management of YouTube video ad campaigns and tracking placement performance.
Synter MCP Server
The most complete MCP server for advertising.
Reporting across 19 ad platforms and full campaign creation on 14 of them (write actions on 16), spanning every major buying channel, with built-in confirmations for destructive actions.
Create campaigns. Adjust budgets. Pause underperformers. Generate creatives. Pull performance data. All through natural conversation, across Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, X, and more.
This is the first Model Context Protocol (MCP) server that gives AI agents a credit card.
Note:
Synter-Media-AI/pluginis the canonical installable Claude plugin repo. The.claude-plugin/copy in this repo is not the install source.
How Synter Compares
The official Google Ads MCP server is read-only by design: per Google's documentation, it is "strictly read-only" and "cannot modify bids, pause campaigns, or create new assets." Most third-party ad MCP servers cover a single platform. We built Synter to do both halves of the job, across every major buying channel, from one server.
Synter MCP | Official Google Ads MCP | Typical third-party ad MCPs | |
Access | Read on all 19 platforms, campaign creation on 14, write actions on 16 | Read-only (current release) | Often read-only or partial write |
Platforms | 19 reporting, 14 with full campaign creation (lists below) | Google Ads only | Usually a single platform |
Create campaigns | ✅ Google Search, Display, PMax, Meta, LinkedIn, Reddit, more via | ❌ | Rarely |
Budgets and pause | ✅ | ❌ | Varies |
AI creative generation | ✅ Images, video, copy | ❌ | ❌ |
Audience sync | ✅ Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, X | ❌ | ❌ |
Safety | Confirmations for destructive actions | n/a (read-only) | Varies |
Open source | ✅ MIT | ✅ | Varies |
Reporting coverage (19 platforms): Google Ads, Microsoft Ads (Bing), Meta (Facebook and Instagram), LinkedIn Ads, X (Twitter) Ads, Reddit Ads, TikTok Ads, Snapchat Ads, Pinterest Ads, Spotify Ads, Amazon Ads, Amazon DSP, Walmart Connect, Instacart Ads, Target Roundel, Criteo, The Trade Desk, Display & Video 360, and OpenAI Ads (ChatGPT).
Full campaign creation (14 platforms): Google Ads, Microsoft Ads, Meta, LinkedIn, X, Reddit, TikTok, Snapchat, Pinterest, Spotify, Amazon Ads (Sponsored Products, Brands, and Display), Amazon DSP, The Trade Desk, and OpenAI Ads. Display & Video 360 and StackAdapt additionally support write actions (pause, budget and line-item updates, audience upload) without campaign creation. The remaining 4 (Walmart Connect, Instacart, Target Roundel, and Criteo) are reporting-only today.
The npx package ships typed tools for the most common operations plus run_tool access to the full catalog of 140+ Synter tools. The remote server at https://mcp.syntermedia.ai/mcp/ exposes the full hosted tool set, including performance pulls for every platform above.
For registry-style MCP discovery, server.json is the machine-readable source of truth. Keep it aligned with package.json, manifest.json, and the setup examples in this README.
Related MCP server: flour-ads
⚠️ Fair Warning
Your AI agent will be able to:
Create campaigns that immediately start spending your budget
Adjust bids that affect how much you pay per click
Pause campaigns (sometimes that's a good thing)
Add keywords that change who sees your ads
Generate creatives and upload them to your accounts
We built in confirmations for destructive actions. But still, maybe don't give this to an agent you just met.
Quick Start
1. Get Your API Key
Sign up at syntermedia.ai and create an API key in the Developer Settings.
2. Configure Your AI Client
For Claude Desktop: Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"synter": {
"command": "npx",
"args": ["@synterai/mcp-server"],
"env": {
"SYNTER_API_KEY": "syn_your_api_key_here"
}
}
}
}For Cursor: Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"synter": {
"command": "npx",
"args": ["@synterai/mcp-server"],
"env": {
"SYNTER_API_KEY": "syn_your_api_key_here"
}
}
}
}For Amp: Add to .amp/settings.json:
{
"mcpServers": {
"synter": {
"command": "npx",
"args": ["@synterai/mcp-server"],
"env": {
"SYNTER_API_KEY": "syn_your_api_key_here"
}
}
}
}Remote (Streamable HTTP): For ChatGPT, n8n, Zapier, or any MCP client that supports HTTP transport:
URL: https://mcp.syntermedia.ai/mcp/
Header: X-Synter-Key: syn_your_api_key_hereNo local install needed. Works with any MCP client that supports Streamable HTTP transport.
3. Start Using It
Restart your AI client and start chatting:
"Show me all my Google Ads campaigns"
"Create a search campaign for 'project management software' with a $50/day budget"
"Pause the campaign that's overspending"
Prefer a full plugin? (Claude Code / Claude Desktop)
This package is the raw MCP server. If you use Claude Code or Claude Desktop, the Synter plugin wraps this same server with ready-made skills (/synter:launch, /synter:audience, /synter:optimize, …), specialized agents, and an approval-before-spend safety hook:
/plugin marketplace add Synter-Media-AI/plugin
/plugin install synter@synterIt also ships a headless Claude Agent SDK runner for automation. See the plugin repo or the Claude Plugin guide. Use this MCP package directly when you want just the tools, or are wiring another client.
What Can Your Agent Do?
📊 Campaign Management
Tool | Description |
| List campaigns across all connected platforms |
| Create a Google Search campaign with keywords and ads |
| Create a Google Display campaign with images |
| Create a Performance Max campaign |
| Create a Facebook/Instagram campaign |
| Create a LinkedIn campaign for B2B |
| Create a Reddit campaign |
| Pause any campaign |
| Change daily budget |
📈 Performance & Analytics
Tool | Description |
| Get impressions, clicks, spend, conversions, ROAS |
| Daily spend breakdown by platform |
🎯 Keywords & Targeting
Tool | Description |
| Add keywords to a campaign or ad group |
| Block unwanted search terms |
🔄 Conversion Tracking
Tool | Description |
| Set up a conversion action |
| List existing conversion actions |
| Check if tracking is installed correctly |
🎨 Creative Generation
Tool | Description |
| AI-generate ad images |
| AI-generate video ads |
| Upload images as ad assets |
🔧 Utility
Tool | Description |
| List all connected ad accounts |
| Run any of 140+ Synter tools directly |
No Ads Experience? No Problem.
If you've never run ads before, here's what you need to know:
What is a Campaign?
A campaign is like a project folder. It contains your ads, who sees them, and how much you spend.
Campaign: "Q1 Lead Generation"
├── Budget: $50/day
├── Targeting: USA, people searching "project management"
└── Ads: Headlines, descriptions, imagesWhat Platforms Can I Use?
Platform | Best For | Min Budget |
Google Ads | People actively searching for your product | $10/day |
Meta (Facebook/Instagram) | Visual products, broad audiences | $5/day |
B2B, enterprise, job seekers | $25/day | |
Niche communities, tech-savvy users | $5/day | |
Microsoft (Bing) | Older demographics, B2B | $10/day |
TikTok | Gen Z, entertainment, e-commerce | $20/day |
Campaign Types Explained
Search Campaigns: Your ad shows when someone Googles specific keywords.
Example: Someone searches "best CRM software" → Your ad appears
Display Campaigns: Image ads shown across websites and apps.
Example: Banner ad on a news site
Performance Max (PMax): Google's AI shows your ads everywhere (Search, YouTube, Display, Gmail, Maps).
Example: Google figures out the best placements for you
Video Campaigns: Video ads on YouTube and partner sites.
Example: 15-second ad before a YouTube video
Common Terms
Term | What It Means |
Impressions | How many times your ad was shown |
Clicks | How many people clicked your ad |
CTR | Click-through rate (clicks ÷ impressions × 100) |
CPC | Cost per click |
Conversions | Desired actions (signups, purchases, etc.) |
ROAS | Return on ad spend (revenue ÷ spend) |
First Campaign Checklist
Before creating your first campaign, you'll need:
✅ A landing page URL where people will go when they click
✅ An idea of who you want to reach (location, interests)
✅ A daily budget you're comfortable with ($10-50 to start)
✅ Some headlines and descriptions for your ad
Pro tip: Start with a Search campaign on Google. It's the easiest to understand and shows ads to people already looking for what you offer.
Example Conversations
Create Your First Campaign
You: Create a Google Search campaign for my SaaS product. Target people searching for "team collaboration software" and "project management tools". Budget is $25/day. Landing page is https://myapp.com/signup
Agent: I'll create a Search campaign with those keywords. What headlines should I use? Here are some suggestions:
"Team Collaboration Made Simple"
"Project Management for Modern Teams"
"Start Free - No Credit Card"
Check Performance
You: How are my campaigns doing this week?
Agent: Here's your performance for the last 7 days:
Campaign
Spend
Clicks
Conversions
ROAS
Brand Search
$142
89
12
4.2x
Competitor Keywords
$98
45
3
1.5x
Display Retargeting
$67
234
8
2.8x
The "Competitor Keywords" campaign is underperforming. Want me to pause it or adjust the targeting?
Add Negative Keywords
You: I'm getting clicks for "free project management" but we don't have a free tier. Block those.
Agent: Added "free" as a negative keyword to your campaign. This will stop your ads from showing for any search containing "free".
Generate Ad Creative
You: I need a display ad image for a marketing automation product. Dark theme, professional, 1200x628.
Agent: Generating your image...
Created: "Marketing automation dashboard with data visualization on dark background" Asset saved and ready to use in your next Display campaign.
Connect Your Ad Accounts
To manage ads on each platform, you'll need to connect your accounts in Synter:
Click "Connect" next to each platform
Complete the OAuth flow
Your agent can now manage that platform
Supported Platforms (19; ✅ = reporting + full campaign execution, 📊 = reporting):
Google Ads ✅
Meta (Facebook/Instagram) ✅
LinkedIn Ads ✅
Microsoft Ads (Bing) ✅
Reddit Ads ✅
TikTok Ads ✅
X (Twitter) Ads ✅
Snapchat Ads ✅
Pinterest Ads ✅
Spotify Ads ✅
Amazon DSP ✅
The Trade Desk ✅
Amazon Ads 📊
Walmart Connect 📊
Instacart Ads 📊
Target Roundel 📊
Criteo 📊
Display & Video 360 📊
OpenAI Ads (ChatGPT) 📊
Advanced: Direct Tool Access
For power users, you can call any of 140+ Synter tools directly:
> Use run_tool to call google_ads_list_audiencesSee the full tool list at docs.syntermedia.ai/tools or ask your agent:
> What tools are available for LinkedIn Ads?Safe by Default: execute Dry-Runs Unless Told Otherwise
The universal execute tool never runs an action on the first call unless you opt in. By default (dry_run: true) it validates the request and stops there — nothing executes, nothing spends. Pass dry_run: false to actually run the action; for anything that spends money, do that only with the account owner's approval.
Environment Variables
Variable | Required | Description |
| Yes | Your Synter API key |
| No | API URL override (default: https://syntermedia.ai) |
Local Development
# Clone and install
git clone https://github.com/Synter-Media-AI/mcp-server.git
cd mcp-server
npm install
# Build
npm run build
# Run locally
SYNTER_API_KEY=syn_your_key_here node dist/index.jsTroubleshooting
"SYNTER_API_KEY not set"
Make sure your API key is in the env section of your MCP config. The key should start with syn_.
"Invalid or expired API key"
Check that you copied the full key (they're long!)
Verify the key is active at syntermedia.ai/developer
Make sure the key has
tools:writescope
"No ad accounts connected"
You need to connect at least one ad platform:
Click "Connect" next to Google Ads (or another platform)
Complete the OAuth authorization
Tools aren't showing in Claude/Cursor
Restart your AI client completely (not just refresh)
Check the MCP server logs for errors
Verify the config file path and JSON syntax
FAQ
Is there an MCP server for Google Ads?
Yes, two kinds. Google ships an official Google Ads MCP server, which is read-only in its current release: it can query reports, metrics, and metadata, but per Google's documentation it "cannot modify bids, pause campaigns, or create new assets." Our MCP server covers Google Ads with both read and write: create Search, Display, and Performance Max campaigns, add keywords and negative keywords, adjust budgets, pause campaigns, manage Customer Match audiences, set up conversion tracking, and pull performance data. The same server reports across 18 other ad platforms and offers full campaign execution on 11 of them.
Can Claude or ChatGPT manage my ad campaigns?
Yes. With the Synter MCP server connected, Claude (Claude Desktop, Claude Code), ChatGPT, Cursor, and any other MCP-compatible client can create campaigns, adjust budgets, pause underperformers, generate creatives, and sync audiences on 14 ad platforms (write actions on 16), and pull performance data across all 19. Claude and other stdio clients connect via npx @synterai/mcp-server with a SYNTER_API_KEY; ChatGPT and other HTTP clients connect to the remote server at https://mcp.syntermedia.ai/mcp/ with an X-Synter-Key header. Destructive actions have built-in confirmations.
What is the difference between the official Google Ads MCP and Synter?
Two things: write access and platform coverage. The official Google Ads MCP is read-only in its current release and covers Google Ads only. Synter reports across 19 platforms and offers full campaign creation on 14 of them, including Google Ads, Meta, LinkedIn, Microsoft, TikTok, Amazon Ads, Amazon DSP, OpenAI Ads, and The Trade Desk. If you only need Google Ads reporting, the official server is a solid choice. If you want an agent that can act on what it finds, on Google and everywhere else you advertise, that is what we built Synter for.
Resources
Synter Manual: syntermedia.ai/manual
API Documentation: docs.syntermedia.ai
Claude Plugin: github.com/Synter-Media-AI/plugin (skills, agents & this MCP for Claude Code / Desktop)
Tool Reference: docs.syntermedia.ai/tools
MCP Server Comparison: syntermedia.ai/blog/best-ad-platform-mcp-servers
Free Agent Skills (47 open-source): github.com/Synter-Media-AI/free-skills (also on skills.sh)
Support: hello@syntermedia.ai
License
MIT License - see LICENSE for details.
Available Tools
21 toolsadd_keywordsBDestructive
Add keywords to a Google Ads campaign or ad group.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_group_id | Yes | Ad group ID to add keywords to | |
| keywords | Yes | Keywords to add | |
| match_type | No | Keyword match type (default: PHRASE) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description states 'Add keywords', consistent with destructiveHint annotation. No additional behavioral context beyond the annotation. Since annotations already flag destructive behavior, description does not need to repeat but could add value on side effects like cost impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Information is front-loaded. Appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not explain return values or error conditions. For a mutation tool (destructiveHint), agent needs to know what to expect after execution. Missing this context reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions. The description adds no extra nuance beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states adding keywords to Google Ads. Verb and resource are specific. However, description mentions both campaign and ad group, but input schema only requires ad_group_id, slightly inaccurate. Distinguishes from sibling 'add_negative_keywords' by implication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like add_negative_keywords. No context on prerequisites or exclusion criteria. Agent must infer from name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_negative_keywordsBDestructive
Add negative keywords to block unwanted search terms.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID | |
| keywords | Yes | Negative keywords to add | |
| level | No | Level to apply negatives (default: CAMPAIGN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true, but the description adds no further behavioral context such as whether it overwrites existing negatives, idempotency, or permission requirements. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise and front-loaded with the action. It earns its place but could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the destructive nature, the description is too minimal. It does not mention return values, side effects, or prerequisites. The tool has 3 parameters and a destructive hint, warranting more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning beyond the schema. It does not elaborate on the 'level' enum or keyword format. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Add' and resource 'negative keywords', with the purpose 'to block unwanted search terms'. It effectively distinguishes from the sibling 'add_keywords' tool which adds regular keywords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_keywords', nor does it mention any conditions or prerequisites. The agent is left to infer usage without explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_conversionADestructive
Create a conversion action in Google Ads. Returns the conversion ID and label for GTM setup.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the conversion action (e.g., 'Signup', 'Purchase') | |
| value | No | Default conversion value in USD (optional) | |
| category | No | Conversion category (default: LEAD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
DestructiveHint annotation already signals mutability. Description adds return value info but doesn't mention side effects like cost implications or that it creates a new resource. Moderate addition beyond annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very concise sentences with no wasted words. Purpose and return value front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 params, no output schema, and destructive annotation, description covers creation and return value but omits examples or guidance on parameter usage (e.g., value format, category examples). Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds no extra parameter meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Create a conversion action' and resource 'Google Ads'. Mentions return values (conversion ID and label for GTM setup), distinguishing it from retrieval tools like list_conversions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like list_conversions or other creation tools. Lacks context about prerequisites or integration with GTM.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_display_campaignBDestructive
Create a Google Ads Display campaign with responsive display ads. Supports image uploads from URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_name | Yes | Name for the campaign | |
| daily_budget | Yes | Daily budget in USD | |
| landscape_image_url | No | URL to 1200x628 landscape image | |
| square_image_url | No | URL to 1200x1200 square image | |
| headlines | Yes | Headlines (1-5, max 30 chars each) | |
| descriptions | Yes | Descriptions (1-5, max 90 chars each) | |
| business_name | Yes | Business name (max 25 chars) | |
| final_url | Yes | Landing page URL | |
| geo_targets | No | Geo target codes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations include destructiveHint: true, indicating this tool modifies resources. The description only adds 'Create' and 'Supports image uploads from URLs', which aligns with the annotation but does not provide additional behavioral context such as costs, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the core purpose. There is no unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters, 6 required, and no output schema, the description is too brief. It does not explain return values, campaign lifecycle, or provide operational context critical for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters. The description adds marginal value by linking 'image uploads from URLs' to the image URL parameters, but overall it does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a Google Ads Display campaign with responsive display ads', specifying the verb and resource. It distinguishes from sibling tools like create_search_campaign by explicitly mentioning 'Display' and 'responsive display ads'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives. It mentions 'Supports image uploads from URLs' but does not contrast with other campaign creation tools or specify scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_linkedin_campaignCDestructive
Create a LinkedIn Ads campaign for B2B advertising.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| objective | Yes | Campaign objective | |
| daily_budget | Yes | Daily budget in USD | |
| target_company_sizes | No | Target company sizes | |
| target_industries | No | Target industries (LinkedIn industry codes) | |
| target_job_functions | No | Target job functions (e.g., 'Marketing', 'Engineering', 'Sales') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, consistent with the 'Create' action. However, the description does not disclose behavioral traits such as billing implications, required setup (e.g., ad account), or whether the campaign is created in draft or active state. With only destructiveHint, more context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise and front-loaded. However, it is too minimal and could include more information without becoming verbose. A score of 5 would require every sentence to earn its place, but here the sentence is vague about purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters (3 required) and no output schema, yet the description omits critical context such as prerequisites (e.g., needing an ad account), return value behavior, or the significance of 'B2B advertising'. It is not complete enough for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description adds no additional meaning or context to any parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'LinkedIn Ads campaign', which is specific. However, it does not explicitly distinguish from sibling campaign creation tools for other platforms (e.g., create_meta_campaign), though the mention of 'LinkedIn' helps. A higher score would require explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., other campaign creation tools). The description does not mention prerequisites, context, or exclusions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_meta_campaignCDestructive
Create a Meta (Facebook/Instagram) advertising campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| objective | Yes | Campaign objective | |
| daily_budget | Yes | Daily budget in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation `destructiveHint: true` is present, but the description adds no behavioral context beyond that. It does not disclose details such as auth requirements, rate limits, or the fact that the tool commits real ad spend.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it could benefit from additional structure or elaboration without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and only a destructive annotation, the description fails to explain what the tool returns or how the campaign is configured beyond the listed parameters. It is incomplete for guiding the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already describes all three parameters. The description adds no additional meaning or context for the parameters, such as explaining the enum values or budget implications.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and the resource 'Meta (Facebook/Instagram) advertising campaign', distinguishing it from sibling tools for other platforms. However, it lacks any detail that differentiates it from other campaign creation tools within the same platform.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The only implicit distinction is the platform name, but there is no explicit when/when-not context or mention of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pmax_campaignBDestructive
Create a Google Ads Performance Max campaign. Requires images, headlines, descriptions, and a business name.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_name | Yes | Name for the campaign | |
| daily_budget | Yes | Daily budget in USD | |
| headlines | Yes | Headlines (3-15, max 30 chars each) | |
| long_headline | Yes | Long headline (max 90 chars) | |
| descriptions | Yes | Descriptions (2-5, max 90 chars each) | |
| business_name | Yes | Business name (max 25 chars) | |
| final_url | Yes | Landing page URL | |
| landscape_image_url | No | URL to 1200x628 landscape image | |
| square_image_url | No | URL to 1200x1200 square image | |
| logo_url | No | URL to square logo (min 128x128) | |
| geo_targets | No | Geo target codes | |
| target_cpa | No | Target CPA in USD (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, consistent with creating a campaign. However, the description adds no further behavioral context such as cost implications, immediate activation, or required permissions. With annotations, the bar is lower, but still lacks meaningful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, well-front-loaded sentence with no fluff. Every word serves to convey the tool's purpose and key requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and description does not mention return values (e.g., campaign ID). For a complex creation tool with 12 parameters, more context about success indicators or error states would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters. The description highlights a subset of required inputs but does not add meaning beyond what's in the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates a Google Ads Performance Max campaign and lists required elements (images, headlines, descriptions, business name). This distinguishes it from siblings like create_search_campaign or create_display_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for Performance Max campaigns but does not explicitly state when to use it versus alternatives or provide exclusions. No guidance on prerequisites like having a Google Ads account or linked advertisers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reddit_campaignADestructive
Create a Reddit Ads campaign for community-based advertising.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Campaign name | |
| objective | Yes | Campaign objective | |
| daily_budget | Yes | Daily budget in USD | |
| subreddits | No | Subreddits to target (optional - omit for interest-based targeting) | |
| interests | No | Interest categories to target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation destructiveHint: true signals that the tool has a destructive effect (spending money). The description does not add additional behavioral details (e.g., billing, approval process). Given the annotation coverage, the description adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that efficiently conveys the tool's purpose without extraneous words. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a creation tool with 5 parameters and destructive hint. However, it lacks information about expected outputs (e.g., campaign ID) and post-creation steps, which would be helpful given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional parameter information beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a Reddit Ads campaign for community-based advertising', specifying the action (create), resource (Reddit Ads campaign), and context (community-based). The name and sibling tools differentiate it from other platform-specific campaign creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for Reddit Ads campaigns, and sibling tool names (e.g., create_linkedin_campaign) provide implicit differentiation. However, no explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_search_campaignADestructive
Create a Google Ads Search campaign with keywords. Sets up campaign, ad group, keywords, and responsive search ads.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_name | Yes | Name for the campaign | |
| daily_budget | Yes | Daily budget in USD | |
| keywords | Yes | Keywords to target (will be added as phrase match) | |
| headlines | Yes | Headlines for the responsive search ad (3-15, max 30 chars each) | |
| descriptions | Yes | Descriptions for the responsive search ad (2-4, max 90 chars each) | |
| final_url | Yes | Landing page URL | |
| geo_targets | No | Geo target codes (e.g., '2840' for US, '2826' for UK) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide destructiveHint=true, indicating this is a write operation. The description adds valuable context beyond this by specifying that it creates multiple related entities (campaign, ad group, keywords, and responsive search ads) in a single operation, which helps the agent understand the scope and potential impact of the tool. However, it doesn't mention authentication requirements, rate limits, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise - two sentences that efficiently convey the tool's purpose and scope without any wasted words. It's front-loaded with the main action and follows with specific details about what gets created. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 7 parameters and destructiveHint annotation, the description provides good context about what gets created. However, without an output schema, it doesn't describe what the tool returns (e.g., campaign ID, confirmation). The description covers the creation scope well but could benefit from mentioning the tool's response format or success indicators.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 7 parameters thoroughly. The description doesn't add any additional parameter semantics beyond what's in the schema - it mentions keywords and responsive search ads but doesn't provide format details or constraints beyond what the schema already specifies. The baseline score of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a Google Ads Search campaign with keywords') and specifies the exact resources being created ('Sets up campaign, ad group, keywords, and responsive search ads'). It distinguishes this from sibling tools like 'create_display_campaign' or 'create_pmax_campaign' by specifying this is for Search campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'Google Ads Search campaign with keywords' and listing what gets created, but it doesn't explicitly state when to use this tool versus alternatives like 'create_display_campaign' or 'create_meta_campaign'. No guidance is provided about prerequisites, timing considerations, or when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_trackingARead-only
Check if conversion tracking is properly set up on a website. Verifies gtag.js, GTM, and pixel installation.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds specific behavioral context by naming the technologies verified (gtag.js, GTM, pixel). It does not contradict annotations and provides additional transparency about the tool's scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences that front-load the purpose and then provide details. Every word is necessary, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one param, read-only, no output schema), the description is mostly complete. It could add what the result looks like (e.g., a report of issues), but the current text suffices for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The parameter description ('Website URL to check') aligns with the tool description. The description adds no further meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Check if conversion tracking is properly set up on a website.' It specifies the resources checked (gtag.js, GTM, pixel), distinguishing it from sibling tools like 'list_conversions' and 'create_conversion' which handle conversion data rather than diagnosing setup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for diagnosing tracking setup, but lacks explicit guidance on when to use this tool versus alternatives (e.g., 'create_conversion' for creating new conversions). No exclusions or context are provided, so the usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageBDestructive
Generate an AI image for ad creatives using Imagen 4, Flux, or Stable Diffusion.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Image generation prompt (be specific about style, layout, colors) | |
| size | No | Image dimensions (default: 1200x628 for display ads) | |
| provider | No | AI provider (default: imagen) | |
| name | No | Asset name for organization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, but the description says 'Generate an AI image' which typically implies creation, not destruction. This contradiction suggests potential harmful effects (e.g., billing or overwriting) that are not disclosed. The description does not mention rate limits, costs, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, front-loaded with the key action. However, mentioning provider names duplicates schema content, but it's still efficient with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 4 parameters, no output schema, and a destructive annotation, the description is insufficient. It does not explain what the output is (e.g., URL, file path), how to use the image, or any return format. Sibling tools have more complete descriptions, making this one feel incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond the schema. Listing providers (Imagen 4, Flux, Stable Diffusion) mirrors the enums, and no extra parameter guidance is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates AI images for ad creatives, specifying the verb (generate), resource (AI image), and context (ad creatives). It lists specific models (Imagen 4, Flux, Stable Diffusion) and is distinct from sibling tools like generate_video and upload_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like upload_image or generate_video. It does not mention prerequisites, ideal use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoBDestructive
Generate an AI video ad using Veo, Runway, or Luma. Great for YouTube and social ads.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | No | Video concept framework (default: pas = Problem-Agitate-Solve) | |
| product_name | Yes | Product or brand name | |
| target_audience | No | Who is this video for? | |
| key_benefit | Yes | Main value proposition | |
| duration | No | Video duration in seconds (default: 8) | |
| provider | No | AI provider (default: veo) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set destructiveHint: true, indicating the tool is destructive, but the description does not add beyond that. It fails to disclose that generating a video costs money, requires API keys, or affects quotas. The description is silent on side effects, making it insufficiently transparent for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences: the first clearly states the purpose, and the second adds use-case context. Every word earns its place—no redundancy, fluff, or irrelevant details. It is optimally concise for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Critical details are missing: no output schema means the description should explain what is returned (e.g., a video URL, file), but it does not. It also lacks warnings about costs, required accounts, or that the tool consumes credits. For a destructive, resource-generating tool, this omission is significant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with each parameter described. The description adds no parameter-level information beyond the schema, but it mentions provider names (Veo, Runway, Luma) which align with the provider enum. This provides minor contextual reinforcement but no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate an AI video ad using Veo, Runway, or Luma.' It specifies the resource (video ad) and action (generate), and distinguishes from sibling tool generate_image by focusing on video. The additional context 'Great for YouTube and social ads' further clarifies its use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context ('Great for YouTube and social ads') but lacks explicit guidance on when to use versus alternatives (e.g., generate_image) or when not to use. It does not mention prerequisites, such as having accounts with the listed providers, nor does it specify that it is a destructive tool that may incur costs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_daily_spendARead-only
Get daily spend breakdown across all connected ad accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default: 7) | |
| platform | No | Filter by platform (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description does not need to reiterate that. The description adds value by specifying that the tool returns spend across 'all connected ad accounts,' which is a useful behavioral detail beyond the schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the key action and resource. Every word earns its place, and there is no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two optional parameters and no output schema, the description is largely complete. It could be improved by mentioning the default date range or the format of the breakdown, but it is still adequate for an agent to understand the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 100%, the baseline is 3. The description does not add any information about parameters beyond what the schema already provides, nor does it need to, as the schema descriptions are clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get daily spend breakdown across all connected ad accounts' uses a specific verb ('Get') and clearly identifies the resource ('daily spend breakdown') and scope ('all connected ad accounts'). It effectively distinguishes this tool from its siblings, which are focused on campaign creation and management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving spend data but does not explicitly state when to use this tool versus alternatives like get_performance or when not to use it. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performanceBRead-only
Get performance metrics (impressions, clicks, spend, conversions, ROAS) for campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Filter by platform (optional) | |
| campaign_id | No | Filter by specific campaign ID (optional) | |
| date_range | No | Date range for metrics (default: LAST_7_DAYS) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint annotation, indicating a safe read operation. However, it adds no behavioral details beyond the annotation (e.g., rate limits, data freshness, or return structure).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is efficiently written but could benefit from slightly more structure (e.g., listing parameters or typical usage).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three optional parameters and no output schema. The description does not explain what happens if no parameters are provided (e.g., returns all campaigns) or describe the response format, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are well-documented there. The description does not add further meaning or examples beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves performance metrics for campaigns, listing specific metric types (impressions, clicks, spend, conversions, ROAS). This distinguishes it from sibling tools like get_daily_spend, which only returns spend data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_daily_spend or list_campaigns. The description does not mention prerequisites or contexts where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ad_accountsARead-only
List all connected ad accounts across platforms.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds clarity on scope ('all connected ad accounts across platforms'), which is useful behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb, no wasted words. Perfectly concise for the simplicity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately states what the tool does. However, it does not hint at the structure of the returned data, which slightly reduces completeness for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is effectively 100%. Per rubric, 0 parameters yields a baseline of 4, and the description adds no redundant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'ad accounts', and specifies the scope 'all connected ad accounts across platforms'. This distinctively separates it from sibling tools like list_campaigns or list_conversions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or avoid this tool versus alternatives. The description implies its usage for listing ad accounts, but does not provide exclusions or context for when other tools are more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_campaignsARead-only
List all campaigns across connected ad platforms. Returns campaign name, status, budget, and performance metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Filter by platform (optional - lists all if not specified) | |
| status | No | Filter by campaign status | |
| limit | No | Maximum number of campaigns to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description need not repeat that. It adds value by stating exactly what fields are returned, which helps the agent understand the output. However, it does not mention any other behavioral details like pagination or performance impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the core action, second specifies the output. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with three optional parameters and no output schema, the description covers the purpose and return fields adequately. It could mention ordering or lack of pagination details, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage), so the description does not need to add parameter semantics. The description does not provide any extra parameter-specific details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists all campaigns across connected ad platforms and specifies the returned fields (name, status, budget, performance metrics). It distinguishes itself from sibling tools like create_campaign variants and other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It implies usage for general campaign listing but lacks guidance on when to filter or when to use other list tools (e.g., list_ad_accounts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversionsARead-only
List all conversion actions configured in Google Ads.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already indicates a safe read operation. The description adds useful context by stating 'all conversion actions,' implying no filtering or side effects. However, it does not disclose details like pagination or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous information. Every word is necessary and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, read-only), the description is mostly complete. It could mention that the output is a list of conversion actions, but the lack of an output schema makes it acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema description coverage is effectively 100%. The description adds no parameter information, but baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and the resource 'conversion actions,' clearly indicating the tool's function. It effectively distinguishes itself from sibling tools like create_conversion, which involves creating, not listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as create_conversion or diagnose_tracking. Usage context is only implied by the verb 'list,' which is insufficient for clear decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_campaignBDestructive
Pause a campaign by ID. Works across all connected platforms.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID (platform-specific format) | |
| platform | Yes | Ad platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not elaborate on behavioral traits beyond the destructiveHint annotation. It doesn't clarify whether pausing is reversible, what side effects occur (e.g., stops spend immediately or gradually), or any prerequisites. The term 'Pause' suggests a reversible action, which may contradict the destructiveHint annotation, creating ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and front-loaded with the action. It is concise, but the brevity comes at the cost of completeness. Every sentence earns its place, but more detail would be beneficial.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters, no output schema, and a destructiveHint annotation, the description is minimal. It does not explain the return behavior, confirm the action, or differentiate from 25 sibling tools that also modify campaigns. The scope claim is useful but insufficient for complete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers both parameters (platform and campaign_id) with descriptions and enums. The description adds no additional semantic value beyond stating 'by ID' and 'across platforms', which is already implied by the schema. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Pause' and the resource 'campaign by ID', and specifies the scope 'Works across all connected platforms'. This effectively distinguishes it from sibling tools that create, list, update, or manage campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It merely states the action without contextual cues, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_toolADestructive
Run any Synter tool by name. Use this for advanced operations not covered by other tools. See docs.syntermedia.ai for full tool list.
| Name | Required | Description | Default |
|---|---|---|---|
| script_name | Yes | Name of the tool to run (e.g., 'google_ads_list_audiences') | |
| args | No | Arguments to pass to the tool | |
| platform | No | Platform for OAuth credentials (google, meta, linkedin, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation indicates destructive potential, but the description adds no behavioral details beyond 'run'. No contradiction, but minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundant information, effectively front-loading the key purpose and guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a generic runner for fallback cases, the description adequately orients the user, especially with the pointer to external docs. No output schema, but this is acceptable given the tool's nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage). The tool description adds no additional parameter meaning beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run any Synter tool by name.' It distinguishes from sibling tools by positioning itself as a generic runner for operations not covered by specific tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool for 'advanced operations not covered by other tools' and references full documentation, providing clear context for when to use it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_campaign_budgetADestructive
Update the daily budget for a campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID | |
| platform | Yes | Ad platform | |
| daily_budget | Yes | New daily budget in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's 'update' aligns. However, it adds no additional behavioral context (e.g., immediate effect, permission requirements) that would help an agent anticipate side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description lacks details about return values, side effects (e.g., whether it updates immediately or queues), and error conditions. More context would aid agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. The description adds no further meaning beyond the schema (e.g., units for budget, allowed ranges). Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and resource 'daily budget for a campaign,' leaving no ambiguity about the tool's function. It effectively distinguishes from sibling tools like 'pause_campaign' or 'list_campaigns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for updating daily budgets but provides no explicit guidance on when to use it versus other budget-related tools (e.g., if there are other budget update tools). No prerequisites or restrictions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_imageBDestructive
Upload an image as an asset for use in ads.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | Yes | URL of the image to upload | |
| asset_name | Yes | Name for the asset | |
| platform | No | Target platform (default: google) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true, but description adds no extra behavioral context such as error handling, overwrite behavior, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with no unnecessary words, fully front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple tool with only 3 parameters and no output schema, but lacks details on required permissions, file type restrictions, or usage context relative to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters, but the tool description adds no extra context beyond what is in the schema (e.g., file size limits, accepted formats).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads an image as an asset for ads, with a specific verb and resource. It distinguishes from sibling tools like generate_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like generate_image or other asset management tools. Never mentions prerequisites or platform-specific considerations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
21 tool updates
v1.0.0- First observed
add_keywords - First observed
add_negative_keywords - First observed
create_conversion - First observed
create_display_campaign - First observed
create_linkedin_campaign - First observed
create_meta_campaign - First observed
create_pmax_campaign - First observed
create_reddit_campaign - First observed
create_search_campaign - First observed
diagnose_tracking - First observed
generate_image - First observed
generate_video - First observed
get_daily_spend - First observed
get_performance - First observed
list_ad_accounts - First observed
list_campaigns - First observed
list_conversions - First observed
pause_campaign - First observed
run_tool - First observed
update_campaign_budget - First observed
upload_image
TDQS
Scored across 21 tools
Most tools have distinct purposes targeting specific ad platform operations (e.g., create_search_campaign vs. create_display_campaign), but 'run_tool' introduces ambiguity as it overlaps with other tools by allowing execution of unspecified operations. The other 20 tools are well-differentiated by platform and action.
Tool names follow a consistent verb_noun pattern throughout (e.g., create_search_campaign, list_campaigns, update_campaign_budget), with clear and predictable naming conventions. There are no deviations in style or structure across the set.
With 21 tools, the count is slightly high but reasonable for a multi-platform ad management server, covering operations across Google Ads, Meta, LinkedIn, and Reddit. It feels comprehensive without being overly bloated, though it borders on the upper limit of typical scope.
The tool set provides strong coverage for ad campaign creation, management, and performance tracking across multiple platforms, with clear CRUD-like operations (e.g., create, list, pause, update). Minor gaps exist, such as no explicit tools for deleting campaigns or editing ad creatives, but agents can likely work around these using available tools like 'run_tool' or platform-specific updates.
Maintenance
Related MCP Connectors
AI agents that manage paid ads on Meta, LinkedIn, and Google Ads from any MCP client.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP-native ad server. Monetize AI chatbots and agents with conversational ads.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP server that lets AI agents launch and manage Meta + TikTok ad campaigns autonomously. 1 call 30 seconds to launch.155 npm3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for managing ad campaigns across Google Ads, Meta, and more. Enables deploying campaigns, checking performance, and managing budgets from terminal or AI assistants.MIT
- FlicenseAqualityDmaintenanceMCP server that wraps the Meta Marketing API (Graph API v25.0) as semantic tools for LLM agents.181-
- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents (Claude Code) to manage Criteo campaigns, ad sets, creatives, audiences, and reports via natural language.-