Skip to main content
Glama

Synter MCP Server

npm version License: MIT

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/plugin is 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 run_tool

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_here

No 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@synter

It 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

List campaigns across all connected platforms

create_search_campaign

Create a Google Search campaign with keywords and ads

create_display_campaign

Create a Google Display campaign with images

create_pmax_campaign

Create a Performance Max campaign

create_meta_campaign

Create a Facebook/Instagram campaign

create_linkedin_campaign

Create a LinkedIn campaign for B2B

create_reddit_campaign

Create a Reddit campaign

pause_campaign

Pause any campaign

update_campaign_budget

Change daily budget

📈 Performance & Analytics

Tool

Description

get_performance

Get impressions, clicks, spend, conversions, ROAS

get_daily_spend

Daily spend breakdown by platform

🎯 Keywords & Targeting

Tool

Description

add_keywords

Add keywords to a campaign or ad group

add_negative_keywords

Block unwanted search terms

🔄 Conversion Tracking

Tool

Description

create_conversion

Set up a conversion action

list_conversions

List existing conversion actions

diagnose_tracking

Check if tracking is installed correctly

🎨 Creative Generation

Tool

Description

generate_image

AI-generate ad images

generate_video

AI-generate video ads

upload_image

Upload images as ad assets

🔧 Utility

Tool

Description

list_ad_accounts

List all connected ad accounts

run_tool

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, images

What 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

LinkedIn

B2B, enterprise, job seekers

$25/day

Reddit

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:

  1. ✅ A landing page URL where people will go when they click

  2. ✅ An idea of who you want to reach (location, interests)

  3. ✅ A daily budget you're comfortable with ($10-50 to start)

  4. ✅ 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:

  1. Go to syntermedia.ai/settings/credentials

  2. Click "Connect" next to each platform

  3. Complete the OAuth flow

  4. 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_audiences

See 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

SYNTER_API_KEY

Yes

Your Synter API key

SYNTER_API_URL

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.js

Troubleshooting

"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"

  1. Check that you copied the full key (they're long!)

  2. Verify the key is active at syntermedia.ai/developer

  3. Make sure the key has tools:write scope

"No ad accounts connected"

You need to connect at least one ad platform:

  1. Go to syntermedia.ai/settings/credentials

  2. Click "Connect" next to Google Ads (or another platform)

  3. Complete the OAuth authorization

Tools aren't showing in Claude/Cursor

  1. Restart your AI client completely (not just refresh)

  2. Check the MCP server logs for errors

  3. 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


License

MIT License - see LICENSE for details.


Available Tools

21 tools
add_keywordsB
Destructive

Add keywords to a Google Ads campaign or ad group.

ParametersJSON Schema
NameRequiredDescriptionDefault
ad_group_idYesAd group ID to add keywords to
keywordsYesKeywords to add
match_typeNoKeyword match type (default: PHRASE)

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_keywordsB
Destructive

Add negative keywords to block unwanted search terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesCampaign ID
keywordsYesNegative keywords to add
levelNoLevel to apply negatives (default: CAMPAIGN)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_conversionA
Destructive

Create a conversion action in Google Ads. Returns the conversion ID and label for GTM setup.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the conversion action (e.g., 'Signup', 'Purchase')
valueNoDefault conversion value in USD (optional)
categoryNoConversion category (default: LEAD)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_campaignB
Destructive

Create a Google Ads Display campaign with responsive display ads. Supports image uploads from URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_nameYesName for the campaign
daily_budgetYesDaily budget in USD
landscape_image_urlNoURL to 1200x628 landscape image
square_image_urlNoURL to 1200x1200 square image
headlinesYesHeadlines (1-5, max 30 chars each)
descriptionsYesDescriptions (1-5, max 90 chars each)
business_nameYesBusiness name (max 25 chars)
final_urlYesLanding page URL
geo_targetsNoGeo target codes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_campaignC
Destructive

Create a LinkedIn Ads campaign for B2B advertising.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name
objectiveYesCampaign objective
daily_budgetYesDaily budget in USD
target_company_sizesNoTarget company sizes
target_industriesNoTarget industries (LinkedIn industry codes)
target_job_functionsNoTarget job functions (e.g., 'Marketing', 'Engineering', 'Sales')

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_campaignC
Destructive

Create a Meta (Facebook/Instagram) advertising campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name
objectiveYesCampaign objective
daily_budgetYesDaily budget in USD

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_campaignB
Destructive

Create a Google Ads Performance Max campaign. Requires images, headlines, descriptions, and a business name.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_nameYesName for the campaign
daily_budgetYesDaily budget in USD
headlinesYesHeadlines (3-15, max 30 chars each)
long_headlineYesLong headline (max 90 chars)
descriptionsYesDescriptions (2-5, max 90 chars each)
business_nameYesBusiness name (max 25 chars)
final_urlYesLanding page URL
landscape_image_urlNoURL to 1200x628 landscape image
square_image_urlNoURL to 1200x1200 square image
logo_urlNoURL to square logo (min 128x128)
geo_targetsNoGeo target codes
target_cpaNoTarget CPA in USD (optional)

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_campaignA
Destructive

Create a Reddit Ads campaign for community-based advertising.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name
objectiveYesCampaign objective
daily_budgetYesDaily budget in USD
subredditsNoSubreddits to target (optional - omit for interest-based targeting)
interestsNoInterest categories to target

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_campaignA
Destructive

Create a Google Ads Search campaign with keywords. Sets up campaign, ad group, keywords, and responsive search ads.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_nameYesName for the campaign
daily_budgetYesDaily budget in USD
keywordsYesKeywords to target (will be added as phrase match)
headlinesYesHeadlines for the responsive search ad (3-15, max 30 chars each)
descriptionsYesDescriptions for the responsive search ad (2-4, max 90 chars each)
final_urlYesLanding page URL
geo_targetsNoGeo target codes (e.g., '2840' for US, '2826' for UK)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_trackingA
Read-only

Check if conversion tracking is properly set up on a website. Verifies gtag.js, GTM, and pixel installation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWebsite URL to check

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_imageB
Destructive

Generate an AI image for ad creatives using Imagen 4, Flux, or Stable Diffusion.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesImage generation prompt (be specific about style, layout, colors)
sizeNoImage dimensions (default: 1200x628 for display ads)
providerNoAI provider (default: imagen)
nameNoAsset name for organization

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_videoB
Destructive

Generate an AI video ad using Veo, Runway, or Luma. Great for YouTube and social ads.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptNoVideo concept framework (default: pas = Problem-Agitate-Solve)
product_nameYesProduct or brand name
target_audienceNoWho is this video for?
key_benefitYesMain value proposition
durationNoVideo duration in seconds (default: 8)
providerNoAI provider (default: veo)

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_spendA
Read-only

Get daily spend breakdown across all connected ad accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default: 7)
platformNoFilter by platform (optional)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_performanceB
Read-only

Get performance metrics (impressions, clicks, spend, conversions, ROAS) for campaigns.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoFilter by platform (optional)
campaign_idNoFilter by specific campaign ID (optional)
date_rangeNoDate range for metrics (default: LAST_7_DAYS)

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_accountsA
Read-only

List all connected ad accounts across platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_campaignsA
Read-only

List all campaigns across connected ad platforms. Returns campaign name, status, budget, and performance metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNoFilter by platform (optional - lists all if not specified)
statusNoFilter by campaign status
limitNoMaximum number of campaigns to return (default: 50)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_conversionsA
Read-only

List all conversion actions configured in Google Ads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_campaignB
Destructive

Pause a campaign by ID. Works across all connected platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesCampaign ID (platform-specific format)
platformYesAd platform

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_toolA
Destructive

Run any Synter tool by name. Use this for advanced operations not covered by other tools. See docs.syntermedia.ai for full tool list.

ParametersJSON Schema
NameRequiredDescriptionDefault
script_nameYesName of the tool to run (e.g., 'google_ads_list_audiences')
argsNoArguments to pass to the tool
platformNoPlatform for OAuth credentials (google, meta, linkedin, etc.)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_budgetA
Destructive

Update the daily budget for a campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesCampaign ID
platformYesAd platform
daily_budgetYesNew daily budget in USD

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_imageB
Destructive

Upload an image as an asset for use in ads.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlYesURL of the image to upload
asset_nameYesName for the asset
platformNoTarget platform (default: google)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 21 tool updatesv1.0.0
    • First observedadd_keywords
    • First observedadd_negative_keywords
    • First observedcreate_conversion
    • First observedcreate_display_campaign
    • First observedcreate_linkedin_campaign
    • First observedcreate_meta_campaign
    • First observedcreate_pmax_campaign
    • First observedcreate_reddit_campaign
    • First observedcreate_search_campaign
    • First observeddiagnose_tracking
    • First observedgenerate_image
    • First observedgenerate_video
    • First observedget_daily_spend
    • First observedget_performance
    • First observedlist_ad_accounts
    • First observedlist_campaigns
    • First observedlist_conversions
    • First observedpause_campaign
    • First observedrun_tool
    • First observedupdate_campaign_budget
    • First observedupload_image

TDQS

A3.6/5.0

Scored across 21 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI agents (Claude Code) to manage Criteo campaigns, ad sets, creatives, audiences, and reports via natural language.
    -