Skip to content
Synter-Media-AIPublic

About

Synter — the AI Agent Operator for Ads. Claude Code / Claude Desktop plugin: agents, skills, and the Synter MCP. You direct, the agents execute.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Synter

Synter plugin

Plan advertising campaigns, review performance, write ad copy, and apply approved campaign changes through Synter. This plugin is a no-cost client for the paid Synter service. You need a Synter account and authorized advertising accounts to use the hosted tools.

Install and sign in

ChatGPT and Codex

The OpenAI package includes Synter skills and the hosted OAuth MCP connection. Its generated mcp.json declares OAuth with dynamic client registration under mcpServers.synter.extensions.com.openai.auth; discovery provides the endpoints. The portal displays these settings and does not provide an advanced OAuth editor. The existing-draft archive is dist/synter-openai-plugin-1.2.1.zip, for Synter Ads MCP. Its package identity remains app-6a90dc5bbc3c819199b4f1e44028fcbf. Uploading creates a draft; directory approval and publication are separate steps. This archive contains no lifecycle hooks or local executables.

The existing draft currently rejects replacement ZIPs with “Configure the existing MCP app before updating its plugin ZIP,” while its connection settings are unavailable. A valid archive does not resolve that portal state. Verify the saved MCP origin before updating: OpenAI does not allow an origin change between versions. bash scripts/build-zip.sh --include-new-draft also prepares dist/synter-openai-new-draft-plugin-1.2.1.zip with the canonical synter package name for a separately authorized new draft if the existing identity cannot be recovered. Building it does not upload, register, or publish anything.

Claude Desktop and Cowork

Build the archives with bash scripts/build-zip.sh, then use Claude Desktop's plugin upload to select dist/synter-claude-plugin-1.2.1.zip. The archive contains the .claude-plugin manifest, OAuth configuration, skills, agents, and static session primer. Start a new conversation after updating and complete browser OAuth when prompted. Uploading a ZIP does not enable automatic GitHub updates. You can also add Synter-Media-AI/plugin as a repository marketplace in Customize → Plugins and install synter. Direct installation does not establish public directory approval. The current GitHub release may be older than this source package.

Claude Code

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

Start a new conversation and run /synter:quickstart. Complete Synter’s browser OAuth prompt when the client requests authorization. Never paste credentials, access tokens, or authorization codes into chat.

Cursor

Import https://github.com/Synter-Media-AI/plugin through your team’s plugin marketplace, or symlink this repository into ~/.cursor/plugins/local/synter and reload Cursor. Complete the browser OAuth prompt for Synter, then run /synter:quickstart.

Both plugin configurations use remote HTTP MCP with browser OAuth. They contain no static credentials, environment-variable secrets, or authentication headers:

Client Configuration Hosted MCP URL
Cursor .cursor-mcp.json, referenced by .cursor-plugin/plugin.json https://mcp.synterai.com
Claude .mcp.json, discovered by the Claude plugin https://mcp.synterai.com

The portable base mcp.json uses the Agent Plugins schema and streamable-http transport. The OpenAI build adds its documented server authentication extension; the published portable 1.0.0 schema currently rejects that extension, so validate the base against that schema and the generated vendor settings against the documented contract separately. Claude and Cursor use their own HTTP configuration files. All generated packages connect to the canonical endpoint. Existing OpenAI connections on another origin require a new plugin or support-assisted recovery, not a blind endpoint replacement. For another remote MCP client, use its browser OAuth flow with the appropriate hosted URL. If sign-in fails, reconnect through the client’s settings or contact support.

What this plugin runs

The plugin connects to the hosted Synter MCP server over OAuth. The advertising tools run on that server. Local Markdown skills, agents, and rules guide how the client uses them; the checked-in tool directory contains the 34 supported tool names.

Claude also runs one SessionStart hook from .claude-plugin/plugin.json. It invokes scripts/session-context.sh, a Bash script that uses cat to print static account-scope and approval guidance. It does not read credentials or make network requests. Cursor declares no hooks and uses rules/synter-operator.mdc.

There is no local MCP server or bundled compiled binary. The repository includes an optional Node SDK runner, invoked manually, and development scripts for validation and packaging. Both distribution archives exclude the SDK, local configuration, and development scripts. Agent definitions may delegate work when the host client supports them.

Bundled skills (invoke as /synter:<name>):

Bundled agents: audience-builder · budget-optimizer · campaign-strategist · creative-director · media-buyer · performance-analyst.

Privacy policy · Support

Campaign safety and scope

Confirm the workspace, account name, and account ID before account actions. Use the advertiser’s verified brand and original assets. Writes require an explicit approved scope; a tool’s plan-approval record is not a substitute for the user’s approval.

The launch workflow reads the final plan, runs preflight, records approval, executes, and verifies the returned campaign state. Creating a campaign does not prove it is live or spending. Unsupported operations, including tag publishing and audience synchronization, require a manual handoff to the platform UI.

Text ads use create_ad_copy; existing assets use list_creative_assets. The plugin reports missing capabilities and data rather than inventing tool names or results.

Develop and validate

node scripts/validate-manifests.js
node scripts/check-directory-tools.js
node --test scripts/*.test.js
python3 -m unittest discover -s scripts -p 'test_*.py' -v
npx -y @anthropic-ai/claude-code@2.1.263 plugin validate . --strict
bash scripts/build-zip.sh

The directory check scans every file under skills/, commands/ (when present), rules/, and agents/, including prose, tables, and code fences. Spell out exact tool names; dynamic tool-name templates fail validation. Snake-case data fields are recognized separately, but calling them as functions still counts as a tool reference. For a tool name without underscores, use explicit tool:name or its MCP-qualified name.

The check runs offline in CI. To also compare the directory against live MCP tools/list, supply an OAuth access token through SYNTER_MCP_TOKEN in your environment and run the same script. It initializes an MCP session and follows paginated results. --live requires the token instead of silently running offline. SYNTER_MCP_URL optionally selects either hosted URL in the table; it defaults to the Cursor endpoint. The token is for this development check only and is never written to plugin configuration. Extra live tools do not expand the checked-in directory.

Terms · MIT license

Package verification and release

The build uses an explicit runtime file allowlist and rejects symlinks. It reads back every ZIP entry and checks exact bytes, writes SHA-256 sidecars, and records source commit and dirty-worktree status in dist/package-manifest.json. The OpenAI archive uses the existing app identity from config/openai-submission.json; the Claude archive keeps the synter identity. Their manifests and transport formats are intentionally separate.

flowchart LR
  A["Reviewed source"] --> B["Claude archive"]
  A --> C["OpenAI archive"]
  B --> D["Exact content verification"]
  C --> D
  D --> E["Portal upload and validation"]
  E --> F["Directory review"]
  F --> G["Approved publication"]
  classDef step fill:#1e293b,stroke:#38bdf8,color:#fff;
  class A,B,C,D,E,F,G step;
Loading

Current package checks do not prove a successful authenticated host install, provider tool execution, or public directory approval. OpenAI MCP submission also requires a reviewer-accessible demo recording, a working reviewer account, and successful domain and tool checks in the portal. The packaged test cases are review instructions, not claims that those live checks already passed.

Format references: OpenAI package guide, OpenAI submission guide, and Claude manifest reference.

About

Synter — the AI Agent Operator for Ads. Claude Code / Claude Desktop plugin: agents, skills, and the Synter MCP. You direct, the agents execute.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages