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.Synter-Media-AI/synter-ads

NPM · @SYNTERAI/MCP-SERVER · 2 COMPONENTS · SCANNED OCT 5

Reporting across 19 ad platforms, campaign creation on 14, write actions on 16, via AI.

61 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 & Transparency45
Schema Quality & AI Usability72
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3160 tokens (~126/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
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 25 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 25 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

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the io.github.Synter-Media-AI/synter-ads MCP server?

io.github.Synter-Media-AI/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 synter-media-ai-synter-ads -- npx -y @synterai/mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "synter-media-ai-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "synter-media-ai-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add synter-media-ai-synter-ads -- npx -y @synterai/mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "synter-media-ai-synter-ads": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@synterai/mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add synter-media-ai-synter-ads --command npx --arg -y --arg @synterai/mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  synter-media-ai-synter-ads:
    command: "npx"
    args: ["-y", "@synterai/mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "synter-media-ai-synter-ads": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add synter-media-ai-synter-ads -t stdio -c npx -a -y @synterai/mcp-server
// mcp.json
{
  "mcpServers": {
    "synter-media-ai-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.

  • 3 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Oct 26 46

    First indexed and scored.

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 7 Oct 2026 · Analysed npm/@synterai/mcp-server@1.2.4

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 · 25 exposed · ~3,160 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_typestring–Keyword 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
levelstring–Level 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
categorystring–Conversion category (default: LEAD)
namestringyesName for the conversion action (e.g., 'Signup', 'Purchase')
valuenumber–Default 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_targetsarray–Geo target codes
headlinesarrayyesHeadlines (1-5, max 30 chars each)
landscape_image_urlstring–URL to 1200x628 landscape image
square_image_urlstring–URL to 1200x1200 square image

No output schema declared.

No examples provided.

create_linkedin_campaign ~212

Create a LinkedIn Ads campaign for B2B advertising.

NameTypeReqDescription
daily_budgetnumber–Daily budget in USD
group_idstringyesCampaign group ID the campaign belongs to (REQUIRED — LinkedIn campaigns cannot exist outside a group). List existing groups with linkedin_ads_get_campaign_groups.
namestringyesCampaign name
objectivestring–Campaign objective
target_audiencesarray–Matched-audience segment IDs. Must be the adSegment id (list_audiences 'destination_segment_id'), NOT the dmpSegment id — a dmpSegment id fails with a bare HTTP 500.
target_functionsarray–Target job functions, e.g. ['engineering','it','operations']
target_locationsarray–Target locations, e.g. ['US','UK','CA']
target_senioritiesarray–Target seniorities, e.g. ['senior','manager','director','vp','cxo']

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

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 accepted; provide 4-5; max 90 chars each)
final_urlstringyesLanding page URL
geo_targetsarray–Geo target codes
headlinesarrayyesHeadlines (3-15 accepted; provide 11+, 15 recommended — fewer produces a weak Ad Strength rating; max 30 chars each)
landscape_image_urlstring–URL to 1200x628 landscape image
logo_urlstring–URL to square logo (min 128x128)
long_headlinestringyesLong headline (max 90 chars)
square_image_urlstring–URL to 1200x1200 square image
target_cpanumber–Target CPA in USD (optional)

No output schema declared.

No examples provided.

create_reddit_campaign ~63

Create a Reddit Ads campaign for community-based advertising.

NameTypeReqDescription
account_idstring–Override the default Reddit ad account ID
namestringyesCampaign name
objectivestringyesCampaign objective
statusstring–Initial campaign status

No output schema declared.

No examples provided.

create_search_campaign ~353

Create a Google Ads Search campaign with an ad group, responsive search ad, and keywords — all in one atomic request. IMPORTANT — creative floor: supply 11-15 headlines (15 recommended, max 30 chars each) and 4 descriptions (max 90 chars each), echoing your target keywords across at least 5 headlines. The API accepts as few as 3 headlines / 2 descriptions, but ads built near that minimum score 'Poor' on Google Ad Strength, get throttled in the auction, and may be rejected by the platform — treat 11 headlines / 4 descriptions as the real minimum. Fewer than 3 headlines or fewer than 2 descriptions will cause the campaign to be rejected before any API call is made.

NameTypeReqDescription
campaign_namestringyesName for the campaign
daily_budgetnumberyesDaily budget in USD
descriptionsarrayyesDescriptions for the responsive search ad. Provide all 4. Hard minimum is 2, but fewer than 4 weakens Ad Strength. Each must be 90 characters or fewer.
final_urlstringyesLanding page URL
geo_targetsarray–Geo target codes (e.g., '2840' for US, '2826' for UK)
headlinesarrayyesHeadlines for the responsive search ad. Provide 11-15 (15 recommended), echoing the target keywords in at least 5. Hard minimum is 3, but fewer than 11 produces a 'Poor' Google Ad Strength rating and…
keywordsarrayyesKeywords to target (phrase match). Provide at least 1.

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
namestring–Asset name for organization
promptstringyesImage generation prompt (be specific about style, layout, colors)
providerstring–AI provider (default: imagen)
sizestring–Image 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
conceptstring–Video concept framework (default: pas = Problem-Agitate-Solve)
durationnumber–Video duration in seconds (default: 8)
key_benefitstringyesMain value proposition
product_namestringyesProduct or brand name
providerstring–AI provider (default: veo)
target_audiencestring–Who is this video for?

No output schema declared.

No examples provided.

get_daily_spend ~65

Get daily spend breakdown for ONE ad platform. `platform` is required -- this tool does not aggregate across platforms.

NameTypeReqDescription
daysnumber–Number of days to look back (default: 7)
platformstringyesAd platform to report on (required)

No output schema declared.

No examples provided.

get_performance ~77

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

NameTypeReqDescription
campaign_idstring–Filter by specific campaign ID (optional)
date_rangestring–Date range for metrics (default: LAST_7_DAYS)
platformstringyesAd platform to report on (required)

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

List campaigns for ONE ad platform. `platform` is required -- this tool does not aggregate across platforms. Returns campaign name, status, budget, and performance metrics.

NameTypeReqDescription
limitnumber–Maximum number of campaigns to return (default: 50)
platformstringyesAd platform to list campaigns for (required)
statusstring–Filter 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.

list_landing_pages ~29

List all landing pages for the authenticated workspace, including publish status, custom domain, and URLs.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

manage_audience ~314

Create, upload to, or list first-party audiences in Google Ads via the Data Manager API. Supports Customer Match lists from emails, phone numbers, and company domains (B2B). Use action='create' to build a new audience, 'upload' to append members to an existing one, 'list' to see all audiences, 'status' to check an upload job, or 'list-sources' to see linked data sources (GA4, Merchant Center).

NameTypeReqDescription
actionstringyescreate = new audience + upload members | upload = append to existing | list = show all audiences | status = check upload job | list-sources = show linked GA4/Merchant Center data sources
audience_idstring–Numeric Google Ads audience ID. Alternative to name for action=upload.
company_domainsstring–Comma-separated company domains for B2B account targeting (e.g. acme.com,widgets.co).
emailsstring–Comma-separated email addresses. Hashed client-side before upload.
job_resource_namestring–OfflineUserDataJob resource name. Required for action=status.
membership_lifespannumber–Days to keep members in the audience. Default 540 (max 540).
namestring–Audience name. Required for action=create. Required for action=upload unless audience_id is provided.
phonesstring–Comma-separated phone numbers in E.164 format (e.g. +15551234567).

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
argsarray–Arguments to pass to the tool
platformstring–Platform 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.

stage_audience_artifact ~283

Stage a hashed-PII payload (newline-delimited identifiers — SHA-256 emails, phones, or raw MAIDs) in Synter's private artifact store and return an opaque artifact_id. Pass that id to sync_audience via *_artifact_id parameters. FREE — no credits charged. Use this instead of pasting hashed identifiers inline when you have more than ~500 entries.

NameTypeReqDescription
bodystringyesNewline-delimited identifiers, one per line. SHA-256 hex for emails/phones; raw uppercase UUIDs for MAIDs (IDFA/GAID).
i_have_consentboolean–Confirm the customer has lawful basis (GDPR Art. 6) and required consent under CCPA / Meta Custom Audience Terms / Google Customer Match Policy for every identifier in `body`. Soft-launch: omitting t…
script_namestring–Which script will consume this artifact. Defaults to 'meta_ads_create_audience'. Use 'google_ads_create_customer_match' for Google, or other audience-sync script names.
ttl_secondsnumber–How long the staged payload should live in seconds. Default 3600 (1 hour).

No output schema declared.

No examples provided.

sync_audience ~500

Upload an audience to an ad platform (Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, X). Accepts inline hashed identifiers (hashed_emails, hashed_phones), raw mobile_ids (IDFA/GAID), company_domains, a public csv_url, or *_artifact_id references staged via stage_audience_artifact. Costs 10 credits on success.

NameTypeReqDescription
account_idstring–Platform ad account id. Optional — defaults to the user's primary account on that platform.
audience_namestring–Name for the audience as it should appear in the platform's UI.
company_domainsstring–Comma-separated company domains for B2B account targeting (Google + LinkedIn).
csv_urlstring–Public CSV URL with audience identifiers. Alternative to inline params / artifact ids.
customer_file_sourcestring–Meta only: USER_PROVIDED_ONLY (default), PARTNER_PROVIDED_ONLY, or BOTH_USER_AND_PARTNER_PROVIDED.
hashed_emailsstring–Comma-separated SHA-256 hashed emails (lowercase hex). For small batches; use hashed_emails_artifact_id for >500.
hashed_emails_artifact_idstring–Artifact id from stage_audience_artifact for SHA-256 hashed emails.
hashed_phonesstring–Comma-separated SHA-256 hashed phones (E.164 format pre-hash). For small batches.
hashed_phones_artifact_idstring–Artifact id from stage_audience_artifact for SHA-256 hashed phones. Meta + most platforms; not supported by Google's customer match script today.
i_have_consentboolean–Confirm the customer has lawful basis (GDPR Art. 6) and required consent under CCPA / Meta Custom Audience Terms / Google Customer Match Policy for every identifier in this audience. Soft-launch: omi…
mobile_idsstring–Comma-separated raw mobile advertising IDs (IDFA / GAID, uppercase UUID). Meta and TikTok only. NOT hashed.
mobile_ids_artifact_idstring–Artifact id for raw mobile ids. Meta only.
platformstringyesAd platform to upload to.

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
platformstring–Target platform (default: google)

No output schema declared.

No examples provided.

Common questions

What is the io.github.Synter-Media-AI/synter-ads MCP server?

io.github.Synter-Media-AI/synter-ads is an MCP server listed in the public MCP registry as io.github.Synter-Media-AI/synter-ads. Reporting across 19 ad platforms, campaign creation on 14, write actions on 16, via AI. This page covers its npm package (@synterai/mcp-server).

Is the io.github.Synter-Media-AI/synter-ads MCP server safe to use?

io.github.Synter-Media-AI/synter-ads scores 61 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 4 October 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.Synter-Media-AI/synter-ads MCP server expose?

io.github.Synter-Media-AI/synter-ads exposes 25 tools: list_campaigns, create_search_campaign, create_display_campaign, create_pmax_campaign, pause_campaign, and 20 more. Their descriptions and schemas cost roughly 3,160 tokens of context every time the server is loaded.

Is the io.github.Synter-Media-AI/synter-ads MCP server still maintained?

io.github.Synter-Media-AI/synter-ads is still listed as active in the MCP registry. We last reached this channel on 4 October 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.Synter-Media-AI/synter-ads MCP server under?

io.github.Synter-Media-AI/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.