# io.github.jshorwitz/synter-ads (npm · @synterai/mcp-server)

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

- Trust score: 53/100 (low)
- Change this week: +35
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.syntermedia.ai`: 36/100, [markdown](https://verifymcp.io/servers/jshorwitz-synter-ads/mcp.md), [page](https://verifymcp.io/servers/jshorwitz-synter-ads/mcp)
- npm · `@synterai/mcp-server`: 53/100 (this document), [markdown](https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server.md), [page](https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@synterai/mcp-server`
- Version: `1.0.7`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 70/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known high-severity CVE affects @modelcontextprotocol/sdk 0.6.1, a direct dependency. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (13 of 14), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 17 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1702 tokens (~81/item across 21 items; 21 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 20/100
  - Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add jshorwitz-synter-ads -- npx -y @synterai/mcp-server
```

### Codex

```bash
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
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add jshorwitz-synter-ads --command npx --arg -y --arg @synterai/mcp-server
```

### Hermes

```yaml
mcp_servers:
  jshorwitz-synter-ads:
    command: "npx"
    args: ["-y", "@synterai/mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "jshorwitz-synter-ads": {
      "command": "npx",
      "args": [
        "-y",
        "@synterai/mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 53, +20)

- [security regression] Known CVEs: unverified → fail
- [security regression] Provenance: fail → unverified
- [security regression] Install scripts: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [functional regression] Maintenance: pass → unverified
- [functional regression] License: pass → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Stability: unverified → 0.20
- [functional] Licence: MIT

### 2026-08-01 (score 33, −5)

- [security regression] Known CVEs: fail → unverified
- [functional regression] Dependency health: partial → unverified

### 2026-07-31 (score 38, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 38, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-28 (score 56, +38)

- [security regression] CVE-2025-66414 affects this package: high
- [security regression] Known CVEs: unverified → fail
- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: pass
- [functional] First check of Schema quality: unverified
- [functional] First check of Tool coverage: 100
- [functional] Licence: MIT

### 2026-07-27 (score 18)

First indexed and scored.

## MCP tools (21)

### `list_campaigns` (~76 tokens)

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

Input parameters:

- `limit` (number): Maximum number of campaigns to return (default: 50)
- `platform` (string): Filter by platform (optional - lists all if not specified)
- `status` (string): Filter by campaign status

### `create_search_campaign` (~159 tokens)

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

Input parameters:

- `campaign_name` (string, required): Name for the campaign
- `daily_budget` (number, required): Daily budget in USD
- `descriptions` (array, required): Descriptions for the responsive search ad (2-4, max 90 chars each)
- `final_url` (string, required): Landing page URL
- `geo_targets` (array): Geo target codes (e.g., '2840' for US, '2826' for UK)
- `headlines` (array, required): Headlines for the responsive search ad (3-15, max 30 chars each)
- `keywords` (array, required): Keywords to target (will be added as phrase match)

### `create_display_campaign` (~161 tokens)

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

Input parameters:

- `business_name` (string, required): Business name (max 25 chars)
- `campaign_name` (string, required): Name for the campaign
- `daily_budget` (number, required): Daily budget in USD
- `descriptions` (array, required): Descriptions (1-5, max 90 chars each)
- `final_url` (string, required): Landing page URL
- `geo_targets` (array): Geo target codes
- `headlines` (array, required): Headlines (1-5, max 30 chars each)
- `landscape_image_url` (string): URL to 1200x628 landscape image
- `square_image_url` (string): URL to 1200x1200 square image

### `create_pmax_campaign` (~214 tokens)

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

Input parameters:

- `business_name` (string, required): Business name (max 25 chars)
- `campaign_name` (string, required): Name for the campaign
- `daily_budget` (number, required): Daily budget in USD
- `descriptions` (array, required): Descriptions (2-5, max 90 chars each)
- `final_url` (string, required): Landing page URL
- `geo_targets` (array): Geo target codes
- `headlines` (array, required): Headlines (3-15, max 30 chars each)
- `landscape_image_url` (string): URL to 1200x628 landscape image
- `logo_url` (string): URL to square logo (min 128x128)
- `long_headline` (string, required): Long headline (max 90 chars)
- `square_image_url` (string): URL to 1200x1200 square image
- `target_cpa` (number): Target CPA in USD (optional)

### `pause_campaign` (~43 tokens)

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

Input parameters:

- `campaign_id` (string, required): Campaign ID (platform-specific format)
- `platform` (string, required): Ad platform

### `update_campaign_budget` (~49 tokens)

Update the daily budget for a campaign.

Input parameters:

- `campaign_id` (string, required): Campaign ID
- `daily_budget` (number, required): New daily budget in USD
- `platform` (string, required): Ad platform

### `get_performance` (~75 tokens)

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

Input parameters:

- `campaign_id` (string): Filter by specific campaign ID (optional)
- `date_range` (string): Date range for metrics (default: LAST_7_DAYS)
- `platform` (string): Filter by platform (optional)

### `get_daily_spend` (~50 tokens)

Get daily spend breakdown across all connected ad accounts.

Input parameters:

- `days` (number): Number of days to look back (default: 7)
- `platform` (string): Filter by platform (optional)

### `add_keywords` (~62 tokens)

Add keywords to a Google Ads campaign or ad group.

Input parameters:

- `ad_group_id` (string, required): Ad group ID to add keywords to
- `keywords` (array, required): Keywords to add
- `match_type` (string): Keyword match type (default: PHRASE)

### `add_negative_keywords` (~56 tokens)

Add negative keywords to block unwanted search terms.

Input parameters:

- `campaign_id` (string, required): Campaign ID
- `keywords` (array, required): Negative keywords to add
- `level` (string): Level to apply negatives (default: CAMPAIGN)

### `create_conversion` (~76 tokens)

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

Input parameters:

- `category` (string): Conversion category (default: LEAD)
- `name` (string, required): Name for the conversion action (e.g., 'Signup', 'Purchase')
- `value` (number): Default conversion value in USD (optional)

### `list_conversions` (~18 tokens)

List all conversion actions configured in Google Ads.

### `diagnose_tracking` (~44 tokens)

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

Input parameters:

- `url` (string, required): Website URL to check

### `generate_image` (~90 tokens)

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

Input parameters:

- `name` (string): Asset name for organization
- `prompt` (string, required): Image generation prompt (be specific about style, layout, colors)
- `provider` (string): AI provider (default: imagen)
- `size` (string): Image dimensions (default: 1200x628 for display ads)

### `generate_video` (~121 tokens)

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

Input parameters:

- `concept` (string): Video concept framework (default: pas = Problem-Agitate-Solve)
- `duration` (number): Video duration in seconds (default: 8)
- `key_benefit` (string, required): Main value proposition
- `product_name` (string, required): Product or brand name
- `provider` (string): AI provider (default: veo)
- `target_audience` (string): Who is this video for?

### `create_meta_campaign` (~50 tokens)

Create a Meta (Facebook/Instagram) advertising campaign.

Input parameters:

- `daily_budget` (number, required): Daily budget in USD
- `name` (string, required): Campaign name
- `objective` (string, required): Campaign objective

### `create_linkedin_campaign` (~105 tokens)

Create a LinkedIn Ads campaign for B2B advertising.

Input parameters:

- `daily_budget` (number, required): Daily budget in USD
- `name` (string, required): Campaign name
- `objective` (string, required): Campaign objective
- `target_company_sizes` (array): Target company sizes
- `target_industries` (array): Target industries (LinkedIn industry codes)
- `target_job_functions` (array): Target job functions (e.g., 'Marketing', 'Engineering', 'Sales')

### `create_reddit_campaign` (~83 tokens)

Create a Reddit Ads campaign for community-based advertising.

Input parameters:

- `daily_budget` (number, required): Daily budget in USD
- `interests` (array): Interest categories to target
- `name` (string, required): Campaign name
- `objective` (string, required): Campaign objective
- `subreddits` (array): Subreddits to target (optional - omit for interest-based targeting)

### `list_ad_accounts` (~17 tokens)

List all connected ad accounts across platforms.

### `upload_image` (~58 tokens)

Upload an image as an asset for use in ads.

Input parameters:

- `asset_name` (string, required): Name for the asset
- `image_url` (string, required): URL of the image to upload
- `platform` (string): Target platform (default: google)

### `run_tool` (~95 tokens)

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

Input parameters:

- `args` (array): Arguments to pass to the tool
- `platform` (string): Platform for OAuth credentials (google, meta, linkedin, etc.)
- `script_name` (string, required): Name of the tool to run (e.g., 'google_ads_list_audiences')

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server#diagnostics

## Score history

- 2026-08-03: 53
- 2026-08-02: 53
- 2026-08-01: 33
- 2026-07-31: 38
- 2026-07-30: 38
- 2026-07-28: 56
- 2026-07-27: 18

## Links

- npm package: https://www.npmjs.com/package/@synterai/mcp-server
- Socket report: https://socket.dev/npm/package/@synterai/mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/jshorwitz-synter-ads/synterai-mcp-server
