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.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint=true, indicating this is a mutation operation. The description adds context by specifying it adds keywords to campaigns/ad groups, which aligns with the destructive nature. However, it doesn't disclose additional behavioral traits like rate limits, authentication requirements, or what happens if keywords already exist.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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 destructive tool with 3 parameters and no output schema, the description is minimally adequate. It covers the basic purpose but lacks details on usage context, error handling, or return values. Given the annotations provide safety info, it's complete enough to avoid being misleading but could be more informative.

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%, with clear parameter descriptions and an enum for match_type. The description doesn't add any semantic details beyond what's in the schema (e.g., explaining keyword formats or match type implications), so it meets the baseline for high schema coverage without extra value.

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 action ('Add keywords') and target resources ('Google Ads campaign or ad group'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'add_negative_keywords' (which presumably adds negative keywords), leaving some ambiguity about scope.

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 about when to use this tool versus alternatives. The description doesn't mention prerequisites, when not to use it, or how it differs from similar tools like 'add_negative_keywords' or campaign creation tools, leaving the agent to infer usage context.

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.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by specifying the tool blocks 'unwanted search terms,' which clarifies the destructive nature hinted by destructiveHint=true. However, it lacks details on permissions, rate limits, or side effects, relying on annotations for safety cues without fully compensating for behavioral gaps.

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, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for the tool's complexity, making it easy to parse quickly.

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?

Given the destructive annotation, 3 parameters with full schema coverage, and no output schema, the description is minimally adequate. It covers the basic purpose but lacks context on usage scenarios, error handling, or integration with sibling tools, leaving gaps for an agent to infer.

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 fully documents all parameters. The description adds no extra semantic details about parameters like 'campaign_id' or 'keywords,' so it meets the baseline but doesn't enhance understanding beyond the structured data.

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 action ('add') and resource ('negative keywords') with the purpose 'to block unwanted search terms,' making the tool's function explicit. However, it doesn't differentiate from sibling tools like 'add_keywords' or 'update_campaign_budget,' which might also involve keyword management, so it lacks sibling distinction for a perfect score.

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. It doesn't mention prerequisites, exclusions, or compare to siblings such as 'add_keywords' or campaign-related tools, leaving the agent without context for selection.

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
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint=true, indicating this is a write/mutation operation. The description adds valuable context beyond annotations: it specifies the platform (Google Ads), mentions the return values (conversion ID and label for GTM setup), and implies persistence (creation of a conversion action). No contradiction with annotations, and the description usefully supplements the safety profile with platform and output details.

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 extremely concise (two sentences) and front-loaded with the core action. Every sentence earns its place: the first states the purpose, and the second adds critical output information. No wasted words or redundancy.

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?

Given a destructive tool with no output schema, the description is minimally adequate. It covers the action and return values, but lacks context like error conditions, permissions needed, or typical workflows. With annotations covering destructiveness and schema covering parameters, it meets basic needs but could be more complete for a mutation tool.

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%, with clear documentation for all parameters (name, value, category). The description adds no parameter-specific information beyond what's in the schema. Baseline score of 3 is appropriate as the schema fully handles parameter semantics, and the description doesn't need to compensate.

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 action ('Create a conversion action in Google Ads') and resource ('conversion action'), with specific mention of Google Ads platform. It distinguishes from siblings like 'list_conversions' (read vs. create) but doesn't explicitly differentiate from other creation tools like campaign creation tools. The purpose is specific but could better highlight uniqueness within the sibling set.

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. It doesn't mention prerequisites (e.g., needing an active Google Ads account), when to choose this over other conversion-related tools (none in siblings), or typical use cases. The return value mention hints at GTM setup, but this is outcome-focused rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_display_campaignA
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

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 about supporting 'image uploads from URLs' which isn't covered by annotations, giving practical implementation details. However, it doesn't mention rate limits, authentication requirements, or what happens on failure.

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 with two sentences that each add distinct value: the first states the core purpose, the second adds a key implementation detail. No wasted words, and the most important information is front-loaded.

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 destructive tool with 9 parameters and no output schema, the description provides good context about what gets created and how images are handled. However, it doesn't mention what the tool returns (e.g., campaign ID, success status) or error conditions, which would be helpful given the complexity.

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 9 parameters thoroughly. The description doesn't add any meaningful parameter information beyond what's in the schema, so it meets the baseline of 3 for high schema 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?

The description clearly states the specific action ('Create'), resource ('Google Ads Display campaign'), and ad type ('responsive display ads'), distinguishing it from siblings like create_search_campaign or create_meta_campaign. It also mentions the specific feature of 'image uploads from URLs' which adds further differentiation.

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 creating display campaigns with responsive ads, but doesn't explicitly state when to use this vs. alternatives like create_search_campaign or create_pmax_campaign. No guidance is provided about prerequisites, exclusions, or specific scenarios where this tool is preferred over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_linkedin_campaignB
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

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description doesn't add behavioral details beyond the destructiveHint annotation (which indicates a write operation). It doesn't disclose rate limits, authentication needs, or what 'destructive' entails (e.g., budget spending, irreversible creation). With annotations covering the destructive aspect, the description adds little extra context, meeting the lower bar but not enriching it significantly.

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, efficient sentence that front-loads the core purpose without unnecessary words. Every part ('Create a LinkedIn Ads campaign for B2B advertising') directly contributes to understanding, with zero waste or redundancy.

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?

Given the tool's complexity (6 parameters, destructive operation) and lack of output schema, the description is minimally adequate. It states the purpose but doesn't cover behavioral nuances, error cases, or output expectations. With annotations providing some safety context, it's complete enough for basic use but leaves gaps for an agent to operate fully.

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 parameters are fully documented in the schema. The description doesn't add any parameter-specific information beyond implying B2B targeting (which loosely relates to target_company_sizes/industries/job_functions but isn't explicit). Baseline 3 is appropriate as the schema carries the semantic burden.

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 action ('Create') and resource ('LinkedIn Ads campaign') with a specific context ('for B2B advertising'). It distinguishes from siblings like create_meta_campaign or create_reddit_campaign by specifying the LinkedIn platform, but doesn't explicitly differentiate from other LinkedIn-related tools (none are listed in siblings).

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 minimal guidance—it mentions B2B advertising context but doesn't specify when to use this tool versus alternatives like create_display_campaign or create_search_campaign, nor does it mention prerequisites (e.g., needing an ad account setup) or exclusions. No explicit usage context is provided beyond the general purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_meta_campaignB
Destructive

Create a Meta (Facebook/Instagram) advertising campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCampaign name
objectiveYesCampaign objective
daily_budgetYesDaily budget in USD

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations indicate destructiveHint=true, which already signals a mutation operation. The description adds minimal context by specifying it's for Meta platforms, but doesn't elaborate on permissions, rate limits, or side effects beyond what annotations provide. No contradiction exists.

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, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured.

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 destructiveHint annotation and lack of output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or platform-specific nuances, leaving gaps for a mutation tool with no output documentation.

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%, with clear descriptions for all parameters (name, objective, daily_budget). The description adds no additional parameter semantics beyond what the schema already documents, so it meets the baseline for high coverage.

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 resource ('Meta (Facebook/Instagram) advertising campaign'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like create_display_campaign or create_search_campaign, which would require a 5.

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 create_display_campaign or create_search_campaign. It lacks context about prerequisites, platform specificity, or any exclusions, offering only basic functional information.

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.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation 'destructiveHint: true' already indicates this is a write/mutation operation. The description adds some context by specifying required assets, but doesn't provide additional behavioral details like what happens if creation fails, whether there are rate limits, authentication requirements, or what the response contains. The description doesn't contradict 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for the tool's complexity, though it could potentially benefit from being slightly more structured to separate requirements from 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?

For a destructive operation with 12 parameters and no output schema, the description is somewhat lacking. While annotations cover the destructive nature and the schema covers parameters, the description doesn't address what happens after creation, error conditions, or provide context about Performance Max campaigns versus other campaign types available in 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?

With 100% schema description coverage, the input schema already documents all 12 parameters thoroughly. The description adds minimal value beyond the schema by mentioning that images, headlines, descriptions, and business name are required, but doesn't provide additional semantic context about parameter relationships or usage patterns.

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 action ('Create') and resource ('Google Ads Performance Max campaign'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this from sibling tools like 'create_search_campaign' or 'create_display_campaign' beyond mentioning 'Performance Max' in the name.

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 minimal usage guidance - only stating that certain assets are 'required' (images, headlines, descriptions, business name). It offers no guidance on when to use this tool versus alternatives like 'create_search_campaign' or 'create_display_campaign', nor does it mention prerequisites or when this tool would be inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_reddit_campaignB
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

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation destructiveHint=true already indicates this is a write/mutation operation. The description adds value by specifying this creates a 'campaign' (implying a persistent resource) and mentions 'community-based advertising' (context about Reddit's targeting approach). However, it doesn't disclose additional behavioral traits like authentication needs, rate limits, or what happens if creation fails.

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, efficient sentence that front-loads the core action ('create a Reddit Ads campaign') and adds qualifying context ('for community-based advertising'). There is zero wasted verbiage or redundancy.

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 destructive tool with 5 parameters and no output schema, the description is minimally adequate. It states the purpose clearly but lacks guidance on usage, error handling, or return values. The annotations cover the destructive nature, but more context about the creation process would be helpful given the complexity.

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 all 5 parameters. The description adds no parameter-specific information beyond what's in the schema (e.g., no clarification on subreddits vs interests targeting). Baseline 3 is appropriate when the schema carries the full parameter documentation burden.

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 resource 'Reddit Ads campaign' with the specific context 'for community-based advertising'. It distinguishes from siblings like create_linkedin_campaign or create_meta_campaign by specifying the Reddit platform, though it doesn't explicitly differentiate from other Reddit-related tools (none exist in the sibling list).

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 create_display_campaign or create_search_campaign. It mentions 'community-based advertising' which hints at Reddit's platform focus, but offers no explicit when/when-not instructions or prerequisites for campaign creation.

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

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, indicating a safe read operation. The description adds value by specifying what it verifies (gtag.js, GTM, and pixel installation), which goes beyond the annotation. However, it doesn't disclose behavioral traits like error handling, rate limits, or output format details.

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 highly concise and front-loaded, consisting of two efficient sentences that directly state the tool's function and scope. Every sentence earns its place with no wasted words.

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?

Given the tool's moderate complexity (diagnostic check with one parameter), annotations cover safety, and schema fully documents the input. However, without an output schema, the description doesn't explain return values or results format, leaving a gap in completeness for effective agent use.

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%, with the single parameter 'url' fully documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, so it meets the baseline for high coverage without extra value.

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 tool's purpose: 'Check if conversion tracking is properly set up on a website' specifies the verb (check) and resource (conversion tracking). It distinguishes from siblings by focusing on diagnostic verification rather than campaign creation or management, though it doesn't explicitly name alternatives.

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 description mentions what it does but doesn't indicate prerequisites, timing, or contextual triggers. Given the sibling tools include various campaign creation and management functions, this gap is notable.

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.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context about the supported AI providers (Imagen 4, Flux, Stable Diffusion) and the ad creative application, which goes beyond the destructiveHint annotation. However, it doesn't disclose important behavioral traits like what 'destructive' means in this context (e.g., consumes credits, generates new content that can't be undone), rate limits, authentication needs, or output format. With annotations covering the destructive nature, the bar is lower, but more context would be helpful.

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, efficient sentence that states the core purpose and key capabilities without unnecessary words. It's appropriately sized for a tool with good schema documentation and front-loads the essential information. Every word earns its place.

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 4 parameters, 100% schema coverage, and destructiveHint annotation, the description is minimally adequate. It provides the purpose and context but lacks important completeness elements: no output information (no output schema exists), no behavioral details about what 'destructive' entails, and no guidance on provider selection. Given the complexity of AI image generation, more context 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?

With 100% schema description coverage, the baseline is 3. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions. It mentions the three providers but doesn't explain their differences or when to choose which, which would have added semantic value. The schema already documents all parameters thoroughly.

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 tool's purpose: 'Generate an AI image for ad creatives' specifies the verb (generate) and resource (AI image), with the context 'for ad creatives' providing application scope. It distinguishes from sibling tools like 'generate_video' or 'upload_image' by focusing on image generation. However, it doesn't explicitly differentiate from other creative tools in the list beyond the name.

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. It mentions three AI providers (Imagen 4, Flux, Stable Diffusion) but doesn't explain when to choose one over another or when to use this versus other creative tools like 'generate_video' or campaign creation tools. There are no explicit when/when-not statements or alternative recommendations.

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
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds minimal behavioral context beyond the annotations. Annotations indicate 'destructiveHint: true,' implying a write operation that may consume resources. The description mentions AI providers (Veo, Runway, Luma) and use cases (YouTube/social ads), but doesn't disclose critical details like rate limits, costs, processing time, or output format. No contradiction with annotations exists.

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 concise and front-loaded with the core purpose in the first sentence. The second sentence adds contextual value without redundancy. However, it could be slightly more structured by explicitly separating purpose from usage context.

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?

Given the tool's complexity (AI video generation with 6 parameters) and the presence of annotations (destructiveHint) but no output schema, the description is moderately complete. It covers the what and why but lacks details on behavioral aspects like processing behavior, error handling, or output expectations, which are important for a destructive operation.

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 all parameters. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain the 'concept' enum values like 'pas' or 'aida' in more detail). Baseline score of 3 is appropriate as the schema handles the heavy lifting.

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 tool's purpose: 'Generate an AI video ad using Veo, Runway, or Luma.' It specifies the verb ('Generate'), resource ('AI video ad'), and technology providers. However, it doesn't explicitly differentiate from sibling tools like 'generate_image' beyond mentioning video vs. image, leaving some ambiguity about when to choose video over image generation.

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.' This implies a marketing/advertising use case. However, it doesn't offer explicit guidance on when to use this tool versus alternatives like 'generate_image' or other campaign creation tools, nor does it specify prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_daily_spendB
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

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, indicating a safe read operation. The description adds context about scope ('across all connected ad accounts') and the breakdown nature, which is useful beyond annotations. However, it doesn't disclose behavioral details like rate limits, authentication needs, or return format, keeping it at a baseline informative level.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse and understand quickly.

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?

Given the tool's moderate complexity (2 parameters, read-only operation), the description covers the basic purpose but lacks output details (no output schema) and usage context. With annotations providing safety info, it's adequate but incomplete for optimal agent understanding, especially without sibling differentiation.

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%, with clear documentation for both parameters in the input schema. The description doesn't add any parameter-specific details beyond what the schema provides, such as explaining the 'days' parameter's impact or 'platform' filtering implications. This meets the baseline for high schema coverage.

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 action ('Get') and resource ('daily spend breakdown across all connected ad accounts'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_performance' or 'list_campaigns', which might also involve spending data, so it misses full 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing, or compare to siblings like 'get_performance' that might overlap in functionality. This leaves the agent with minimal context for tool selection.

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.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations include 'readOnlyHint: true', which already indicates this is a safe read operation. The description adds minimal behavioral context by listing the metric types returned, but it does not disclose details like rate limits, authentication needs, or pagination behavior. With annotations covering the safety profile, the description provides some value but not rich behavioral insights, warranting a score of 3.

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, efficient sentence that front-loads the core purpose without unnecessary details. It lists the metric types concisely and avoids redundancy, making it easy to parse. This earns a score of 5 for being appropriately sized and well-structured.

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?

Given the tool's complexity (a read-only query with three optional parameters) and the absence of an output schema, the description is moderately complete. It specifies the metric types but does not detail the return format, aggregation, or error handling. With annotations covering safety and schema covering parameters, the description is adequate but has gaps, resulting in a score of 3.

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 has 100% description coverage, with clear documentation for all three parameters (platform, campaign_id, date_range). The description does not add any meaning beyond what the schema provides, such as explaining interactions between parameters or default behaviors. Given the high schema coverage, the 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?

The description clearly states the tool's purpose: 'Get performance metrics (impressions, clicks, spend, conversions, ROAS) for campaigns.' It specifies the verb ('Get') and resource ('performance metrics'), and lists specific metric types. However, it does not explicitly differentiate from sibling tools like 'get_daily_spend' or 'list_campaigns', which limits its score to 4 rather than 5.

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. It does not mention sibling tools (e.g., 'get_daily_spend' for spend-only metrics or 'list_campaigns' for campaign lists without metrics), nor does it specify prerequisites or exclusions. This lack of contextual direction results in a score of 2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ad_accountsB
Read-only

List all connected ad accounts across platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds value by specifying the scope ('across platforms'), but doesn't disclose behavioral traits like pagination, rate limits, or authentication needs beyond what annotations provide.

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, efficient sentence with zero wasted words. It's front-loaded with the core purpose ('List all connected ad accounts') and adds necessary context ('across platforms') without redundancy.

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 read-only tool with no parameters and annotations covering safety, the description is adequate but incomplete. It lacks output details (no schema provided) and doesn't clarify platform-specific behaviors or error handling, leaving gaps in contextual understanding.

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?

With 0 parameters and 100% schema description coverage, the schema fully documents the input (none required). The description doesn't need to add parameter details, so it meets the baseline for tools with no parameters, earning a score above the minimum.

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 action ('List') and resource ('all connected ad accounts across platforms'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_campaigns' or 'list_conversions', which prevents a perfect score.

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 'list_campaigns' or 'list_conversions'. It lacks context about prerequisites (e.g., needing connected accounts) or exclusions, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_campaignsB
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

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations indicate readOnlyHint=true, which the description aligns with by using 'List' (a read operation). The description adds value by specifying the scope ('across connected ad platforms') and the returned fields, but it doesn't disclose behavioral traits like pagination, rate limits, or whether it requires authentication beyond what annotations provide. No contradiction with annotations exists.

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, well-structured sentence that efficiently conveys the tool's purpose and output. It's front-loaded with the core action and resource, followed by key return details, with no unnecessary words or redundancy.

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?

Given the tool's moderate complexity (listing campaigns with filters), the absence of an output schema, and annotations covering only read-only status, the description is somewhat incomplete. It specifies returned fields but lacks details on output format (e.g., structure, pagination), error handling, or dependencies on connected platforms. However, it adequately covers the basic functionality for a read operation.

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 has 100% description coverage, with clear documentation for all three parameters (platform, status, limit). The description doesn't add any semantic details beyond what the schema provides, such as explaining how 'platform' filtering works with multiple connections or default behaviors for unspecified parameters. This meets the baseline score of 3 given high schema coverage.

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 ('List') and resource ('campaigns across connected ad platforms'), and specifies what information is returned ('campaign name, status, budget, and performance metrics'). However, it doesn't explicitly differentiate this tool from sibling tools like 'list_ad_accounts' or 'get_performance', which also involve listing or retrieving 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'list_campaigns' over sibling tools like 'get_performance' (which might return similar metrics) or 'list_ad_accounts' (which lists accounts rather than campaigns). There's also no information about prerequisites, such as needing connected ad platforms.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_conversionsB
Read-only

List all conversion actions configured in Google Ads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds minimal behavioral context beyond this - it specifies 'all conversion actions' but doesn't mention pagination, sorting, filtering, or response format. With annotations covering the safety profile, this meets baseline expectations.

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, efficient sentence that communicates the essential purpose without any wasted words. It's front-loaded with the core functionality and appropriately sized for a simple listing operation with no parameters.

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 zero-parameter read operation with readOnlyHint annotation, the description is minimally adequate. However, without an output schema, the description doesn't explain what 'list all conversion actions' returns - whether it's a simple array, paginated results, or includes specific fields. This leaves gaps in understanding the tool's behavior.

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 tool has zero parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. This exceeds the baseline expectation for parameter documentation.

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 action ('List') and resource ('conversion actions configured in Google Ads'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'create_conversion' or 'get_performance', but the verb 'List' provides inherent distinction from creation/update operations.

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. With sibling tools like 'create_conversion', 'get_performance', and 'list_campaigns', there's no indication of when this specific listing tool is appropriate versus other listing or retrieval operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_campaignA
Destructive

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

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

TDQS

A4.2/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 mutation operation. The description adds value by specifying it works 'across all connected platforms,' which clarifies its cross-platform applicability beyond what annotations convey. It doesn't contradict annotations, as 'Pause' aligns with a destructive action.

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, efficient sentence that front-loads the core action ('Pause a campaign by ID') and adds necessary context ('Works across all connected platforms') without any wasted words. Every part earns its place by clarifying purpose and scope.

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 complexity (a destructive operation with 2 required parameters), annotations cover the destructive nature, and the schema fully describes inputs. The description adds cross-platform context, but without an output schema, it doesn't explain return values or error conditions, leaving a minor gap for 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 description coverage is 100%, so the schema fully documents both parameters (campaign_id and platform with enum values). The description doesn't add any parameter-specific details beyond what's in the schema, such as format examples or platform-specific behaviors, resulting in a baseline score of 3.

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 ('Pause') and resource ('campaign by ID'), and distinguishes itself from siblings by focusing on pausing rather than creating, updating, or listing campaigns. The phrase 'Works across all connected platforms' further clarifies its cross-platform scope.

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 usage context by specifying 'by ID' and 'across all connected platforms,' which suggests it should be used when you have a campaign ID and need to pause it on a supported platform. However, it doesn't explicitly state when not to use it or name alternatives (e.g., update_campaign_budget for budget changes instead of pausing).

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

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations provide destructiveHint=true, indicating this tool can perform destructive operations. The description adds minimal behavioral context beyond this—it mentions 'advanced operations' and refers to external docs but doesn't detail what types of operations are destructive, rate limits, or authentication needs. With annotations covering the safety profile, the description adds some value but lacks rich behavioral 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?

The description is highly concise and front-loaded: two sentences that efficiently convey the tool's purpose and usage. Every sentence earns its place—the first states what it does, and the second provides guidance and a resource. No wasted words.

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?

Given the tool's complexity (a generic runner with destructive potential) and the presence of annotations (destructiveHint) but no output schema, the description is moderately complete. It covers purpose and basic usage but lacks details on return values, error handling, or specific behavioral risks. It's adequate but has clear gaps for such a powerful tool.

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 the three parameters (script_name, args, platform). The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain how to format args or choose platform values. Baseline 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.

Purpose4/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' with the specific verb 'run' and resource 'Synter tool'. It distinguishes this from siblings by mentioning 'advanced operations not covered by other tools', though it doesn't explicitly name alternatives. The purpose is clear but could be more specific about what distinguishes it from direct siblings.

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 provides clear context for when to use this tool: 'for advanced operations not covered by other tools'. This implicitly suggests using other tools for standard operations and this one as a fallback. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools, which would elevate it to a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_campaign_budgetB
Destructive

Update the daily budget for a campaign.

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

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds minimal behavioral context beyond annotations. Annotations indicate destructiveHint=true, implying a mutation, which aligns with 'update'. However, the description doesn't disclose additional traits like permission requirements, rate limits, or whether changes are immediate/irreversible, missing opportunities to enhance transparency for a destructive operation.

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, direct sentence with zero wasted words, efficiently conveying the core action. It's front-loaded and appropriately sized for a straightforward update tool, making it easy 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?

Given the destructive annotation and lack of output schema, the description is incomplete. It doesn't explain what happens on success (e.g., confirmation, updated object) or failure (e.g., errors for invalid budgets), nor does it cover behavioral aspects like side effects, leaving gaps for a mutation tool with significant impact.

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 fully documents all three parameters (campaign_id, platform, daily_budget), including enum values for platform. The description adds no extra semantic details about parameters, such as budget constraints or ID formats, so it meets the baseline but doesn't provide additional value.

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 action ('update') and resource ('daily budget for a campaign'), making the purpose unambiguous. It doesn't explicitly differentiate from sibling tools like 'pause_campaign' or budget-related operations in creation tools, but the specificity is sufficient for understanding the core function.

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. It doesn't mention prerequisites (e.g., campaign must exist, budget limits), exclusions (e.g., cannot update paused campaigns), or related tools like 'get_daily_spend' for checking current budgets, leaving usage context unclear.

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
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint=true, indicating a write operation. The description adds context that this uploads an image 'as an asset for use in ads', clarifying the resource type and purpose. However, it doesn't disclose additional behavioral traits like authentication needs, rate limits, or what happens to existing assets. No contradiction with 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?

Single sentence, front-loaded with the core action ('upload an image'), zero waste. Efficiently conveys the essential information without unnecessary details, making it easy to parse quickly.

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 destructive tool with 3 parameters and no output schema, the description is minimal. It covers the basic purpose but lacks details on behavioral aspects like error handling, return values, or platform-specific nuances. With annotations covering destructiveness, it's adequate but could be more comprehensive for a mutation operation.

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%, with clear parameter descriptions in the schema (e.g., 'URL of the image to upload'). The description adds no parameter-specific information beyond implying the asset is for ads, which doesn't enhance parameter understanding. Baseline 3 is appropriate given high schema coverage.

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 action ('upload') and resource ('image as an asset'), specifying its use 'for ads'. It distinguishes from siblings like 'generate_image' (which creates rather than uploads) and campaign tools, but doesn't explicitly contrast with all siblings. The purpose is specific but could be more differentiated.

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-related tools. It mentions the use case 'for ads' but doesn't specify prerequisites, timing, or exclusions. The description lacks explicit when/when-not instructions or named alternatives.

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. Dates show when Glama detected each change.

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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Synter-Media-AI/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server