Synter

September 6, 2026 · View on GitHub

Synter

Synter — Claude and Cursor plugin

The AI Agent Operator for Ads. Claude, Cowork, Claude Code, and Cursor for advertising. You direct, the agents execute.

Connect every ad platform, build audiences from signals and first-party data, generate on-brand creative, plan and launch cross-platform campaigns, and reallocate spend by ROAS — all in one conversation. Nothing that spends money ships without your approval.

One interface. Every ad platform. Ship faster.


Install

Claude Code

/plugin marketplace add Synter-Media-AI/plugin
/plugin install synter@synter

Start a new conversation and run /synter:quickstart. Claude opens Synter's secure browser OAuth flow when the first protected tool is used. Never paste an API key, access token, or authorization code into chat.

Claude Desktop and Cowork

Open Customize → Plugins. Under Personal plugins, click + → Add marketplace → Add from a repository, enter Synter-Media-AI/plugin, and install synter from that marketplace. The full GitHub URL also works.

Alternatively, download the package from the latest GitHub release and choose + → Upload plugin. A tagged release (synter--v*) rebuilds the zip through the repository's release workflow.

Start a new conversation after installation and complete the Synter browser sign-in prompt. Skills work in Claude chat and Cowork; hooks and sub-agents run in Cowork. The plugin can be installed directly today, but it will not appear in Anthropic's public directory until Anthropic approves the separate community submission.

Official install documentation: Use plugins in Claude and Install plugins in Cowork.

Cursor

Team / local: import https://github.com/Synter-Media-AI/plugin under Dashboard → Plugins → Team Marketplaces, or symlink this repo into ~/.cursor/plugins/local/synter and reload the window.

Public marketplace: submit this repository at cursor.com/marketplace/publish. Cursor reviews every listing; the plugin is MIT and open source.

After install, set SYNTER_API_KEY in Plugins → Configure. The hosted MCP is https://mcp.syntermedia.ai.

Free GA4 and onboarding tools work with no key and no credits.

Campaign write actions spend real money — every spend asks for your approval first.

ChatGPT (Developer Mode / Connectors)

ChatGPT's custom-connector setup (Settings → Connectors → Advanced → Developer mode, or the Workspace admin equivalent under Apps) accepts Synter's production remote MCP server through OAuth 2.1:

  • Developer mode and MCP apps in ChatGPT (OpenAI Help Center) — app setup lets you "pick the authentication mechanism, if applicable," then walks through the OAuth authorization prompt; no custom-header option is described.
  • Authentication – Apps SDK (OpenAI Developers) — the only documented way to add custom auth to an MCP server ChatGPT connects to is a full OAuth 2.1 flow (protected-resource metadata, CIMD/DCR, PKCE). Static API keys or bearer headers aren't part of the spec ChatGPT implements.

Add https://mcp.syntermedia.ai as the remote MCP URL and complete the Synter authorization flow in the browser. The hosted service publishes OAuth authorization-server and protected-resource metadata, supports dynamic client registration and PKCE, and returns the required resource challenge to unauthenticated MCP clients.

Supported connection paths are:

  • ChatGPT — connect the production MCP URL and authorize with OAuth 2.1.
  • Claude Code, Claude Desktop, or Cowork — install this plugin and authorize with OAuth 2.1 in the browser.
  • Cursor — install the Cursor plugin and set SYNTER_API_KEY in Plugins → Configure.
  • Any other MCP client that supports custom headers — wire the HTTP endpoint directly with X-Synter-Key: syn_your_api_key_here (see "Wire the MCP straight into any client" below).
  • A client with no remote-MCP support — run the published stdio server locally: SYNTER_API_KEY=syn_... npx -y @synterai/mcp-server (get a key at syntermedia.ai/developer).

What's in the box

This plugin packages agents, skills, an MCP server, a hook, and an output style — the same shape as the Watt Data plugin, built for Synter.

Skills — /synter:*

CommandDoes
/synter:quickstartOnboard, connect a platform, run a first action.
/synter:connectLink ad platforms and GA4 — Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, X, Amazon, and more.
/synter:audienceBuild ABM lists, lookalikes, and signal-based segments; activate them.
/synter:creativeGenerate on-brand images, video, UGC, and ad copy.
/synter:launchPlan, preflight, and ship a cross-platform campaign.
/synter:replicateRebuild an existing campaign from one platform onto another (e.g. Google to Microsoft).
/synter:optimizeCut wasted spend, scale winners, reallocate budget by ROAS.
/synter:reportCross-channel performance report and exec summary.
/synter:helpWhat Synter can do, and where to get support.

Craft skills

Bundled alongside the workflows is a library of advertising-craft knowledge skills Claude pulls in automatically when the task fits.

Platform playbooks — structure, targeting, and cost realities per platform: platform-google · platform-microsoft · platform-meta · platform-linkedin · platform-tiktok · platform-reddit · platform-x · platform-amazon · platform-openai

Plan & structure: media-plan · keyword-research · negative-keywords · campaign-preflight · campaign-structure-auditor · platform-benchmarks

Bid & budget: bid-optimization · dayparting · kill-scale-rules · pre-pause-analysis · roas-calculator · mmm-budget-planner · anomaly-detector

Creative: ad-copy-generation · creative-testing · creative-fatigue-detector · ad-policy-compliance · landing-page-creation

Measurement: conversion-tracking · attribution · utm-builder · executive-reporting

Research: competitor-analysis

(Internal runbooks, Synter's proprietary operating playbooks, and anything that names internal infrastructure are intentionally not shipped — this plugin acts through the Synter MCP, not bundled scripts.)

Agents — /agents

campaign-strategist · media-buyer · audience-builder · creative-director · budget-optimizer · performance-analyst · visibility-agent

They run automatically when the task fits, or call one directly.

MCP server

The Synter Advertising Platform MCP (https://mcp.syntermedia.ai) — cross-platform campaign read/write, creative generation, audiences, attribution, and GA4. Tools register automatically once the plugin is enabled.


Structure

plugin/
├── .claude-plugin/
│   ├── plugin.json          # Claude/Cowork plugin manifest
│   └── marketplace.json     # Claude Code marketplace
├── .cursor-plugin/
│   ├── plugin.json          # Cursor Plugin manifest + SYNTER_API_KEY variable
│   └── marketplace.json     # Cursor Team Marketplace index
├── .mcp.json                # Synter remote MCP for Claude (browser OAuth)
├── mcp.json                 # Synter MCP for Cursor (header: ${SYNTER_API_KEY})
├── skills/                  # /synter:* slash commands (SKILL.md each)
├── agents/                  # subagent definitions
├── hooks/hooks.json         # SessionStart safety + voice primer
├── scripts/session-context.sh
├── context/brand-and-safety.md
├── output-styles/synter.md
├── sdk/                     # headless Claude Agent SDK runner
│   ├── synter-agent.mjs
│   └── README.md
├── CHANGELOG.md
└── LICENSE                  # MIT

Don't cross-wire the two MCP configs. .mcp.json is Claude-only and uses browser OAuth with no static credentials; mcp.json is Cursor-only and interpolates ${SYNTER_API_KEY} from the Cursor plugin's variables. Copying the Cursor header into Claude bypasses the supported secure sign-in flow and violates public-directory requirements.


Run it headlessly — Claude Agent SDK

A ready-to-run agent harness lives in sdk/. It loads this plugin with the SDK and runs the Synter operator unattended — read-only by default (spend/mutation is auto-denied with no human to approve). Good for cron digests, pipelines, or embedding.

cd sdk && npm install
SYNTER_API_KEY=syn_... node synter-agent.mjs "/synter:report last 7 days"

See sdk/README.md for the safety model, --allow-writes, and the Python equivalent.

Under the hood it's just:

import { query } from "@anthropic-ai/claude-agent-sdk";
for await (const m of query({
  prompt: "/synter:report last 7 days",
  options: { plugins: [{ type: "local", path: "/path/to/plugin" }] },
})) { /* skills, agents, hooks, MCP all loaded */ }

Or wire the MCP straight into any client

HTTP with browser OAuth (recommended)

{
  "mcpServers": {
    "synter": {
      "type": "http",
      "url": "https://mcp.syntermedia.ai"
    }
  }
}

Clients that do not implement remote MCP OAuth can instead use an X-Synter-Key header if they support custom headers, or the stdio package below. Create a key at syntermedia.ai/developer and store it in the client's secret configuration, never in chat.

stdio (Claude Desktop) — via the public SDK @synterai/mcp-server:

{
  "mcpServers": {
    "synter": {
      "command": "npx",
      "args": ["@synterai/mcp-server"],
      "env": { "SYNTER_API_KEY": "syn_your_api_key_here" }
    }
  }
}

Safety

Your agent can create campaigns, change budgets, and pause spend. The plugin defaults to recommend-then-execute and asks for explicit approval before anything spends money. It confirms the org/account before any write, uses only the real IDs the platform returns, and guards against fat-finger budgets. Reads are always free to run.


Develop

git clone https://github.com/Synter-Media-AI/plugin synter-plugin && cd synter-plugin
claude plugin validate . --strict   # check the manifest + frontmatter
claude --plugin-dir .               # load locally without a marketplace

After editing hooks/, .mcp.json, or agents/, run /reload-plugins.

Privacy · Terms · Support · MIT licensed. © 2026 Synter.