Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.jshorwitz/synter-ads

NPM · @SYNTERAI/MCP-SERVER · 2 COMPONENTS · SCANNED SEP 20

Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.

0 this week 69 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security80
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects @modelcontextprotocol/sdk 0.6.1, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 7 of 14 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
Schema Quality & AI Usability77
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 1702 tokens (~81/item across 21 items; 21 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
  • Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the io.github.jshorwitz/synter-ads MCP server?

io.github.jshorwitz/synter-ads runs locally as an npm package, launched with npx -y @synterai/mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @synterai/mcp-server

# add to Claude Code
claude mcp add jshorwitz-synter-ads -- npx -y @synterai/mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "jshorwitz-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "jshorwitz-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add jshorwitz-synter-ads -- npx -y @synterai/mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jshorwitz-synter-ads": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@synterai/mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add jshorwitz-synter-ads --command npx --arg -y --arg @synterai/mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  jshorwitz-synter-ads:
    command: "npx"
    args: ["-y", "@synterai/mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "jshorwitz-synter-ads": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add jshorwitz-synter-ads -t stdio -c npx -a -y @synterai/mcp-server
// mcp.json
{
  "mcpServers": {
    "jshorwitz-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 15 Sept 26 0
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 −2
    • Stability: pass → 0.80 functional
  • 8 Sept 26 0
    • Stability: 0.97 → pass security
  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/@synterai/mcp-server@1.0.7

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-w48q-cv73-mx4w CVE-2025-66414 high yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 14 packages
Packages resolved 14
Stale 7
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~1,702 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_keywords ~62

Add keywords to a Google Ads campaign or ad group.

NameTypeReqDescription
ad_group_idstringyesAd group ID to add keywords to
keywordsarrayyesKeywords to add
match_typestringKeyword match type (default: PHRASE)

No output schema declared.

No examples provided.

add_negative_keywords ~56

Add negative keywords to block unwanted search terms.

NameTypeReqDescription
campaign_idstringyesCampaign ID
keywordsarrayyesNegative keywords to add
levelstringLevel to apply negatives (default: CAMPAIGN)

No output schema declared.

No examples provided.

create_conversion ~76

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

NameTypeReqDescription
categorystringConversion category (default: LEAD)
namestringyesName for the conversion action (e.g., 'Signup', 'Purchase')
valuenumberDefault conversion value in USD (optional)

No output schema declared.

No examples provided.

create_display_campaign ~161

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

NameTypeReqDescription
business_namestringyesBusiness name (max 25 chars)
campaign_namestringyesName for the campaign
daily_budgetnumberyesDaily budget in USD
descriptionsarrayyesDescriptions (1-5, max 90 chars each)
final_urlstringyesLanding page URL
geo_targetsarrayGeo target codes
headlinesarrayyesHeadlines (1-5, max 30 chars each)
landscape_image_urlstringURL to 1200x628 landscape image
square_image_urlstringURL to 1200x1200 square image

No output schema declared.

No examples provided.

create_linkedin_campaign ~105

Create a LinkedIn Ads campaign for B2B advertising.

NameTypeReqDescription
daily_budgetnumberyesDaily budget in USD
namestringyesCampaign name
objectivestringyesCampaign objective
target_company_sizesarrayTarget company sizes
target_industriesarrayTarget industries (LinkedIn industry codes)
target_job_functionsarrayTarget job functions (e.g., 'Marketing', 'Engineering', 'Sales')

No output schema declared.

No examples provided.

create_meta_campaign ~50

Create a Meta (Facebook/Instagram) advertising campaign.

NameTypeReqDescription
daily_budgetnumberyesDaily budget in USD
namestringyesCampaign name
objectivestringyesCampaign objective

No output schema declared.

No examples provided.

create_pmax_campaign ~214

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

NameTypeReqDescription
business_namestringyesBusiness name (max 25 chars)
campaign_namestringyesName for the campaign
daily_budgetnumberyesDaily budget in USD
descriptionsarrayyesDescriptions (2-5, max 90 chars each)
final_urlstringyesLanding page URL
geo_targetsarrayGeo target codes
headlinesarrayyesHeadlines (3-15, max 30 chars each)
landscape_image_urlstringURL to 1200x628 landscape image
logo_urlstringURL to square logo (min 128x128)
long_headlinestringyesLong headline (max 90 chars)
square_image_urlstringURL to 1200x1200 square image
target_cpanumberTarget CPA in USD (optional)

No output schema declared.

No examples provided.

create_reddit_campaign ~83

Create a Reddit Ads campaign for community-based advertising.

NameTypeReqDescription
daily_budgetnumberyesDaily budget in USD
interestsarrayInterest categories to target
namestringyesCampaign name
objectivestringyesCampaign objective
subredditsarraySubreddits to target (optional - omit for interest-based targeting)

No output schema declared.

No examples provided.

create_search_campaign ~159

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

NameTypeReqDescription
campaign_namestringyesName for the campaign
daily_budgetnumberyesDaily budget in USD
descriptionsarrayyesDescriptions for the responsive search ad (2-4, max 90 chars each)
final_urlstringyesLanding page URL
geo_targetsarrayGeo target codes (e.g., '2840' for US, '2826' for UK)
headlinesarrayyesHeadlines for the responsive search ad (3-15, max 30 chars each)
keywordsarrayyesKeywords to target (will be added as phrase match)

No output schema declared.

No examples provided.

diagnose_tracking ~44

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

NameTypeReqDescription
urlstringyesWebsite URL to check

No output schema declared.

No examples provided.

generate_image ~90

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

NameTypeReqDescription
namestringAsset name for organization
promptstringyesImage generation prompt (be specific about style, layout, colors)
providerstringAI provider (default: imagen)
sizestringImage dimensions (default: 1200x628 for display ads)

No output schema declared.

No examples provided.

generate_video ~121

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

NameTypeReqDescription
conceptstringVideo concept framework (default: pas = Problem-Agitate-Solve)
durationnumberVideo duration in seconds (default: 8)
key_benefitstringyesMain value proposition
product_namestringyesProduct or brand name
providerstringAI provider (default: veo)
target_audiencestringWho is this video for?

No output schema declared.

No examples provided.

get_daily_spend ~50

Get daily spend breakdown across all connected ad accounts.

NameTypeReqDescription
daysnumberNumber of days to look back (default: 7)
platformstringFilter by platform (optional)

No output schema declared.

No examples provided.

get_performance ~75

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

NameTypeReqDescription
campaign_idstringFilter by specific campaign ID (optional)
date_rangestringDate range for metrics (default: LAST_7_DAYS)
platformstringFilter by platform (optional)

No output schema declared.

No examples provided.

list_ad_accounts ~17

List all connected ad accounts across platforms.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_campaigns ~76

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

NameTypeReqDescription
limitnumberMaximum number of campaigns to return (default: 50)
platformstringFilter by platform (optional - lists all if not specified)
statusstringFilter by campaign status

No output schema declared.

No examples provided.

list_conversions ~18

List all conversion actions configured in Google Ads.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

pause_campaign ~43

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

NameTypeReqDescription
campaign_idstringyesCampaign ID (platform-specific format)
platformstringyesAd platform

No output schema declared.

No examples provided.

run_tool ~95

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

NameTypeReqDescription
argsarrayArguments to pass to the tool
platformstringPlatform for OAuth credentials (google, meta, linkedin, etc.)
script_namestringyesName of the tool to run (e.g., 'google_ads_list_audiences')

No output schema declared.

No examples provided.

update_campaign_budget ~49

Update the daily budget for a campaign.

NameTypeReqDescription
campaign_idstringyesCampaign ID
daily_budgetnumberyesNew daily budget in USD
platformstringyesAd platform

No output schema declared.

No examples provided.

upload_image ~58

Upload an image as an asset for use in ads.

NameTypeReqDescription
asset_namestringyesName for the asset
image_urlstringyesURL of the image to upload
platformstringTarget platform (default: google)

No output schema declared.

No examples provided.

Common questions

What is the io.github.jshorwitz/synter-ads MCP server?

io.github.jshorwitz/synter-ads is an MCP server listed in the public MCP registry as io.github.jshorwitz/synter-ads. Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI. This page covers its npm package (@synterai/mcp-server).

Is the io.github.jshorwitz/synter-ads MCP server safe to use?

io.github.jshorwitz/synter-ads scores 69 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.jshorwitz/synter-ads MCP server expose?

io.github.jshorwitz/synter-ads exposes 21 tools: list_campaigns, create_search_campaign, create_display_campaign, create_pmax_campaign, pause_campaign, and 16 more. Their descriptions and schemas cost roughly 1,702 tokens of context every time the server is loaded.

Is the io.github.jshorwitz/synter-ads MCP server still maintained?

io.github.jshorwitz/synter-ads is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.jshorwitz/synter-ads MCP server under?

io.github.jshorwitz/synter-ads declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.