io.github.Synter-Media-AI/synter-ads
REMOTE · MCP.SYNTERMEDIA.AI · SCANNED SEP 20
Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 25001 tokens (~119/item across 209 items; 209 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 Management48
- Stability check failed: schema churn in the 30 days we've observed: 7 tool removals, 136 breaking changes, 0 auth/transport breaks, 72 additions. See how to fix → Fail
Tool Coverage67
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
Tool Safety98
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 12 of 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "run_gaql_query" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 210 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.Synter-Media-AI/synter-ads MCP server?
io.github.Synter-Media-AI/synter-ads is a hosted endpoint at https://mcp.syntermedia.ai/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.syntermedia.ai
claude mcp add --transport http synter-media-ai-synter-ads 'https://mcp.syntermedia.ai/'
{
"mcpServers": {
"synter-media-ai-synter-ads": {
"url": "https://mcp.syntermedia.ai/"
}
}
} {
"servers": {
"synter-media-ai-synter-ads": {
"type": "http",
"url": "https://mcp.syntermedia.ai/"
}
}
} [mcp_servers.synter-media-ai-synter-ads] url = "https://mcp.syntermedia.ai/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"synter-media-ai-synter-ads": {
"type": "remote",
"url": "https://mcp.syntermedia.ai/",
"enabled": true
}
}
} openclaw mcp add synter-media-ai-synter-ads --url 'https://mcp.syntermedia.ai/' --transport streamable-http
mcp_servers:
synter-media-ai-synter-ads:
url: "https://mcp.syntermedia.ai/" {
"McpServers": {
"synter-media-ai-synter-ads": {
"Transport": "http",
"Url": "https://mcp.syntermedia.ai/"
}
}
} assistant mcp add synter-media-ai-synter-ads -t streamable-http -u 'https://mcp.syntermedia.ai/'
{
"mcpServers": {
"synter-media-ai-synter-ads": {
"type": "http",
"url": "https://mcp.syntermedia.ai/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 20 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 19 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 18 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 17 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 16 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 15 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 14 Sept 26 −6
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
- 13 Sept 26 0
- This server's schema is too large to store in full, so we cannot compare its tools day to day functional
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 · Probed https://mcp.syntermedia.ai
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.syntermedia.ai | CN=YR1,O=Let's Encrypt,C=US | 23 Aug 2026 | 21 Nov 2026 | RSA 2048 | SHA256-RSA | 5dbc93cd9d736000581fea3bd7546081504 |
| SANs: mcp.syntermedia.ai | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.syntermedia.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| syntermedia.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.syntermedia.ai/.well-known/oauth-protected-resource", scope="tools:read tools:write"
Bearer resource_metadata="https://mcp.syntermedia.ai/.well-known/oauth-protected-resource", scope="tools:read tools:write" Protected resource metadata
| Document | https://mcp.syntermedia.ai/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.syntermedia.ai |
| Authorisation server | https://mcp.syntermedia.ai |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.syntermedia.ai | Verified | 200 | |
| http (plaintext) | http://mcp.syntermedia.ai | HTTPS enforced | 301 | https://mcp.syntermedia.ai/ |
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 →
approve_campaign_plan Approve Campaign Plan ~71
Record the workspace owner's approval of a published campaign plan, moving it from in_review to approved so it can be launched. [effect=write; scope=campaigns:plan; requires=campaignPublishing]
| Name | Type | Req | Description |
|---|---|---|---|
| comment | – | – | – |
| expected_version | integer | yes | – |
| plan_id | string | yes | – |
No output schema declared.
No examples provided.
approve_organic_post Approve Organic Post ~64
Approve exactly one immutable organic-post revision after successful preflight. Any revision mismatch fails closed; never publishes. [effect=write; scope=social:write; requires=campaignPublishing]
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | integer | yes | – |
| revision_hash | string | yes | – |
No output schema declared.
No examples provided.
attach_audience Attach Audience ~126
Attach (add), remove, or replace a matched audience on an existing campaign/ad-group/ad-set/line-item's targeting (5 credits). Supports linkedin, google, meta, tiktok, reddit, microsoft, stackadapt, x. [effect=write; scope=audiences:write; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| ad_group_id | – | – | – |
| audience_id | – | – | – |
| campaign_id | string | yes | – |
| facet | string | – | – |
| mode | string | – | – |
| platform | string | – | – |
| segment_urn | – | – | – |
No output schema declared.
No examples provided.
audit_account_structure Audit Account Structure ~140
Audit an ad account's campaign structure (READ-ONLY, free). Flags the churn signatures that make an account a mess: duplicate campaign / ad group / ad names (case-insensitive, trimmed), ad groups with empty or invalid targeting, and 'rebuilt-not-edited' campaigns (a name with both a live and an archived copy). Reddit is fully supported (campaign / ad group / ad depth); Google is campaign-level. Writes nothing — use repair_account_structure to act on the findings. [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| account_name | – | – | – |
| platform | string | – | – |
No output schema declared.
No examples provided.
audit_llm_crawler_readiness Audit LLM Crawler Readiness ~89
Audit domain crawler readiness for AI search engines (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bytespider). Checks robots.txt, HTTP headers, llms.txt availability, and generates a custom llms.txt markdown map. [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| check_llms_txt | – | – | – |
| domain | string | yes | – |
No output schema declared.
No examples provided.
audit_review_site_profiles Audit Review Site Profiles ~74
Audit brand profile readiness and completeness across G2, Capterra, Trustpilot, and Gartner Digital Markets to optimize software category indexing in LLM search. [effect=read; scope=connections:read]
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | – |
| domain | string | yes | – |
| review_platforms | – | – | – |
No output schema declared.
No examples provided.
build_abm_audience Build ABM Audience ~178
[INTERNAL — Synter staff only] Build an ad-platform Custom Audience from verified decision-maker emails for a list of target company domains. Pulls valid emails from Synter's audience data warehouse, SHA-256 hashes locally, uploads to the requested platform (LINKEDIN, META, GOOGLE, REDDIT, X, MICROSOFT, TIKTOK). Requires INTERNAL_ABM_SERVICE_TOKEN and INTERNAL_ABM_MCP_USER_IDS env vars to be configured; the caller's user_id must be on that allowlist. [effect=write; scope=audiences:write; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| audience_name | string | yes | – |
| decision_makers_only | boolean | – | – |
| domains | string | yes | – |
| max_contacts | – | – | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
build_lookalike_audience Build Lookalike Audience ~63
Build ML-based lookalike audience from seed customers [effect=write; scope=audiences:write; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| expansion_factor | integer | – | – |
| platform | string | yes | – |
| seed_audience | string | yes | – |
No output schema declared.
No examples provided.
builtwith_company_to_url BuiltWith Company To URL ~48
BuiltWith Company to URL API — resolve company names to candidate website domains. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | – |
No output schema declared.
No examples provided.
builtwith_get_account_usage BuiltWith Get Account Usage ~43
BuiltWith account capability and usage snapshot — plan limits, rate limits, credit usage. (2 credits) [effect=read; scope=intel:read]
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
builtwith_get_domain_keywords BuiltWith Get Domain Keywords ~45
BuiltWith Keywords API — keywords associated with a website domain. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | – |
No output schema declared.
No examples provided.
builtwith_get_domain_technologies BuiltWith Get Domain Technologies ~82
BuiltWith domain tech stack lookup — ad pixels, CRM, analytics, CMS/ecommerce tools, spend/meta. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | – |
| include_raw | boolean | – | – |
| include_trust | boolean | – | – |
| live_only | boolean | – | – |
No output schema declared.
No examples provided.
builtwith_get_sites BuiltWith Get Sites ~110
Find websites by BuiltWith technology, natural language audience, or keyword search. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| commit | boolean | – | – |
| countries | – | – | – |
| employees | – | – | – |
| include_meta | boolean | – | – |
| keyword | – | – | – |
| limit | integer | – | – |
| offset | – | – | – |
| other_techs | – | – | – |
| query | – | – | – |
| revenue | – | – | – |
| spend | – | – | – |
| tech | – | – | – |
No output schema declared.
No examples provided.
builtwith_get_technology_changes BuiltWith Get Technology Changes ~59
BuiltWith Change API — recent technology additions/removals for domains, with business context. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| domains | array | yes | – |
| since | string | – | – |
No output schema declared.
No examples provided.
builtwith_get_trust_signals BuiltWith Get Trust Signals ~55
BuiltWith Trust API — domain trust, ecommerce/payment, parked/status, spend and live-tech signals. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | yes | – |
No output schema declared.
No examples provided.
builtwith_product_search BuiltWith Product Search ~61
BuiltWith Product API — ecommerce shops and product listings matching a product query. (2 credits) [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| page | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
cancel_scheduled_post Cancel Scheduled Post ~68
Cancel an exact scheduled organic-post revision before its one-shot provider job starts. Cancellation remains available when publishing is disabled so queued external mutations can be stopped safely. [effect=state; scope=social:write]
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | integer | yes | – |
| revision_hash | string | yes | – |
No output schema declared.
No examples provided.
configure_pixel_destination Configure Pixel Destination ~159
Create or update a Synter Pixel CAPI event-forwarding destination. Sets the platform-specific IDs needed to fan out conversion events server-side. Supports Google (customer_id + conversion_action_id), Meta/Reddit (pixel_id), LinkedIn (conversion_rule_id), TikTok (pixel_code), and Snapchat. Use action='disable' or action='enable' to toggle without changing settings. Free — no credits. [effect=write; scope=tracking:write; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| conversion_action_id | – | – | – |
| conversion_rule_id | – | – | – |
| customer_id | – | – | – |
| pixel_code | – | – | – |
| pixel_id | – | – | – |
| platform | string | yes | – |
| site_key | – | – | – |
No output schema declared.
No examples provided.
create_ad_copy Create Ad Copy ~99
Generate text ad copy (headlines, descriptions, CTAs) for any platform using Claude (5 credits) [effect=write; scope=creative:generate]
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_brand | – | – | – |
| cta | – | – | – |
| descriptions_count | – | – | – |
| headlines_count | – | – | – |
| keywords | – | – | – |
| landing_page_url | – | – | – |
| platform | string | yes | – |
| product | string | yes | – |
| tone | string | – | – |
No output schema declared.
No examples provided.
create_autonomous_schedule Create Autonomous Schedule ~145
Create an autonomous agent schedule that runs a Synter skill on a cron cadence (e.g. a budget-pacing / campaign-health monitor). Defaults to a read-only cross-platform pacing monitor every 4 hours that alerts via Slack and never moves money. Pass skill_slug + cron_expression to schedule any autonomous-capable skill. [effect=write; scope=automation:write]
| Name | Type | Req | Description |
|---|---|---|---|
| approval_mode | – | – | – |
| cron_expression | – | – | – |
| description | – | – | – |
| name | – | – | – |
| notify_channels | – | – | – |
| notify_on_completion | boolean | – | – |
| organization_id | – | – | – |
| platform | – | – | – |
| project_id | – | – | – |
| skill_slug | – | – | – |
No output schema declared.
No examples provided.
create_campaign_for_audience Create Campaign For Audience ~105
Create a campaign targeting an existing audience (200 credits — campaign launch) [effect=publish; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| audience_id | string | yes | – |
| campaign_name | string | yes | – |
| daily_budget | number | – | – |
| description | – | – | – |
| final_url | – | – | – |
| headline | – | – | – |
| image_url | – | – | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
create_campaign_import Create Campaign Import ~135
Import an existing live ad campaign (Meta, Google, LinkedIn, TikTok, Reddit, X, Microsoft, etc.) into Synter UI as a workspace document (/campaigns/ide/<uuid>). Pulls live campaign details, performance, and structure, creates a document in Synter UI, and returns the clickable URL so it appears in the user's workspace. [effect=write; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | – | – | – |
| campaign_name | – | – | – |
| days | integer | – | – |
| organization_id | – | – | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
create_campaign_plan Create Campaign Plan ~67
Create or update a campaign launch plan. Use plan_key for idempotency. [effect=write; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| brief_json | – | – | – |
| plan_key | string | yes | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
create_document Create Document ~67
Create a document in the Campaign IDE editor (free). Perfect for reports, audits, strategy docs, and plans that can be collaboratively edited. [effect=write; scope=workspace:write]
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| organization_id | – | – | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
create_embed Create Embed ~117
Create a reusable native Synter form, event registration, customer shopping cart, Synter plan or usage-funds purchase card, checkout link, or media block for any paid or organic destination. Use list_embeds to inspect native-vs-hosted platform capabilities. [effect=write; scope=landing_pages:write]
| Name | Type | Req | Description |
|---|---|---|---|
| allowed_origins | – | – | – |
| commerce_connection_id | – | – | – |
| config | – | – | – |
| fields | – | – | – |
| kind | string | yes | – |
| name | string | yes | – |
| published | boolean | – | – |
No output schema declared.
No examples provided.
create_google_doc Create Google Doc ~51
Create a Google Doc from markdown or HTML content (5 credits) [effect=write; scope=workspace:external_docs]
| Name | Type | Req | Description |
|---|---|---|---|
| content | – | – | – |
| html | – | – | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
create_google_sheet Create Google Sheet ~56
Create a Google Sheet from tabular data (5 credits) [effect=write; scope=workspace:external_docs]
| Name | Type | Req | Description |
|---|---|---|---|
| headers | – | – | – |
| json_data | – | – | – |
| rows | – | – | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
create_landing_page Create Landing Page ~100
Generate an AI landing page hosted on your custom domain (135 credits) [effect=write; scope=landing_pages:write]
| Name | Type | Req | Description |
|---|---|---|---|
| brand_url | – | – | – |
| cta_text | string | – | – |
| cta_url | string | yes | – |
| idempotency_key | – | – | – |
| lead_form | – | – | – |
| prompt | string | yes | – |
| slug | – | – | – |
| style | string | – | – |
| title | string | yes | – |
No output schema declared.
No examples provided.
create_social_clip Create Social Clip ~113
Render, watermark, auto-caption, and format video/screen recordings into social clips for X, LinkedIn, TikTok, or Reels. Use forecast_tool_cost for current pricing. [effect=write; scope=creative:generate]
| Name | Type | Req | Description |
|---|---|---|---|
| aspect_ratio | string | – | – |
| auto_caption | boolean | – | – |
| headline | – | – | – |
| idempotency_key | – | – | – |
| name | – | – | – |
| source_url | string | yes | – |
| trim_end | – | – | – |
| trim_start | number | – | – |
No output schema declared.
No examples provided.
create_verified_page_replica Create Verified Page Replica ~79
Create an unpublished, verified iframe replica draft for a source and custom domain you control. [effect=write; scope=landing_pages:write]
| Name | Type | Req | Description |
|---|---|---|---|
| attest_authorized | boolean | yes | – |
| custom_domain | string | yes | – |
| slug | string | yes | – |
| source_url | string | yes | – |
| title | string | – | – |
No output schema declared.
No examples provided.
delete_audience Delete Audience ~111
Delete (or close) a custom/matched audience from an ad platform by exact audience_id. Use to clean up stale or errored (e.g. NOT_ENOUGH_MATCHES) audiences. Meta, Reddit, and Google are supported. Meta verifies the audience belongs to the resolved ad account before deletion. This is irreversible. [effect=write; scope=audiences:write; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| audience_id | string | yes | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
delete_document Delete Document ~57
Delete a Campaign IDE document by id or uuid (e.g. to remove a stale or duplicate doc). Only deletes documents you own. [effect=write; scope=workspace:write]
| Name | Type | Req | Description |
|---|---|---|---|
| document_id | – | – | – |
| uuid | – | – | – |
No output schema declared.
No examples provided.
disable_campaign_guardrail Disable Campaign Guardrail ~57
Disable a campaign-specific automatic pause guardrail. This does not change the campaign's current platform status. Free. [effect=write; scope=guardrails:write; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| guardrail_id | integer | yes | – |
No output schema declared.
No examples provided.
discover_llm_visibility_prompts Discover LLM Visibility Prompts ~88
Discover and generate high-intent B2B commercial buying prompts across Evaluation, Direct Comparison, Alternatives, Pricing/ROI, and Feature Verification intent stages for your brand and competitors. [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| auto_seed | – | – | – |
| competitors | – | – | – |
| domain | – | – | – |
| icp_persona | – | – | – |
| project_id | – | – | – |
No output schema declared.
No examples provided.
draft_organic_post Draft Organic Post ~174
Create an immutable, tenant-bound text post draft for an explicitly selected LinkedIn member or company destination. Supply a stable idempotency_key (1-255 non-whitespace characters), unique within the workspace for this intended draft, and reuse that exact key on retries; changing content or destination while reusing it fails closed. The media field is reserved and any non-empty value fails closed until managed media transport exists; never publishes. [effect=write; scope=social:write; requires=campaignPublishing]
| Name | Type | Req | Description |
|---|---|---|---|
| account_kind | string | yes | – |
| account_ref | string | yes | – |
| body | string | yes | – |
| idempotency_key | string | yes | – |
| media | – | – | – |
| platform | string | yes | – |
| platform_connection_id | integer | yes | – |
| provider_config_key | string | yes | – |
No output schema declared.
No examples provided.
draft_wikipedia_article Draft Wikipedia Article ~98
Generate an encyclopedic, NPOV-compliant Wikitext draft article with Infobox company markup, citation footnotes, and WP:PAID disclosure text for Wikipedia Articles for Creation (AFC) submission. [effect=write; scope=intel:write]
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | – |
| citations | – | – | – |
| description | – | – | – |
| domain | – | – | – |
| founding_year | – | – | – |
| headquarters | – | – | – |
No output schema declared.
No examples provided.
enable_campaign Enable Campaign ~70
Enable/resume a paused campaign on any ad platform (2 credits) [effect=state; scope=campaigns:state; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| account_name | – | – | – |
| campaign_id | string | yes | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
execute Execute ~249
Execute any Synter action: create campaigns, upload to YouTube, manage GTM/GA4, analyze competitors, and more. Calls execute immediately by default; pass dry_run=true only when the user explicitly asks for validation-only behavior. Use inspect_script before the first call to an unfamiliar action so arguments are never guessed. Pass expected_names={"campaign-id": "<name fragment>"} to hard-enforce target identity for updates. MULTIPLE ACCOUNTS ARE THE NORM: most platforms have more than one connected account, and account_id selects which one this call uses. Omit it and the workspace default is used, which is NOT always the account you want and may be one with no usable credential. If a call fails on credentials, returns suspicious zeros, or the platform has several accounts, call verify_platform_accounts first to see the default and its siblings, then re-run with account_id. [effect=write; scope=scripts:execute]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| action | string | yes | – |
| args | – | – | – |
| customer_id | – | – | – |
| dry_run | boolean | – | – |
| expected_names | – | – | – |
| idempotency_key | – | – | – |
| platform | – | – | – |
No output schema declared.
No examples provided.
execute_campaign_plan Execute Campaign Plan ~71
Launch an approved campaign plan — activates all entities across platforms in dependency order. [effect=publish; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
| Name | Type | Req | Description |
|---|---|---|---|
| execute_token | string | yes | – |
| plan_id | string | yes | – |
| qa_override_approved | boolean | – | – |
No output schema declared.
No examples provided.
find_audience_signals Find Audience Signals ~85
Find audience intent signals and semantic clusters from a natural-language description (e.g. 'RevOps leaders at B2B SaaS companies using Salesforce'). Returns matching intent clusters to use as targeting signals. [effect=read; scope=signals:read]
| Name | Type | Req | Description |
|---|---|---|---|
| entity_type | string | – | – |
| max_results | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
find_llm_citation_listicles Find LLM Citation Listicles ~81
Find top media listicles and roundup articles cited by ChatGPT and Perplexity for a target buying prompt, and generate tailored editor outreach briefs. [effect=read; scope=intel:read]
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | – |
| buying_prompt | string | yes | – |
| competitors | – | – | – |
| domain | string | yes | – |
No output schema declared.
No examples provided.
forecast_campaign Forecast Campaign ~75
Forecast campaign KPIs (spend, CPA, ROAS, clicks, conversions) for 7-30 days with confidence intervals (2 credits) [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_id | – | – | – |
| horizon | integer | – | – |
| metric | string | – | – |
| platform | – | – | – |
No output schema declared.
No examples provided.
forecast_tool_cost Forecast Tool Cost ~92
Look up what a Synter tool will charge in credits BEFORE you call it. Unknown tool names return the fail-closed default rather than 0, so a typo never reads as 'free'. FREE: costs no credits and makes no LLM call. Use this instead of guessing a price from a tool's description. [effect=read; scope=billing:read]
| Name | Type | Req | Description |
|---|---|---|---|
| tool_name | string | yes | – |
No output schema declared.
No examples provided.
ga4_get_conversions GA4 Get Conversions ~58
List GA4 conversion events (free). Pass property_id to query a specific GA4 property instead of the connection default. [effect=read; scope=tracking:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| property_id | – | – | – |
No output schema declared.
No examples provided.
ga4_get_properties GA4 Get Properties ~38
List your Google Analytics 4 properties (free) [effect=read; scope=reporting:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
No output schema declared.
No examples provided.
ga4_get_report GA4 Get Report ~81
Run a Google Analytics 4 report (free). Pass property_id to query a specific GA4 property instead of the connection default. [effect=read; scope=reporting:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| days | integer | – | – |
| dimensions | string | – | – |
| metrics | string | – | – |
| property_id | – | – | – |
No output schema declared.
No examples provided.
generate_jsonld_schema_markup Generate JSON-LD Schema Markup ~93
Generate valid schema.org JSON-LD scripts (Organization, SoftwareApplication, Product, FAQPage) with sameAs knowledge-graph links for embedding into website HTML. [effect=write; scope=creative:generate]
| Name | Type | Req | Description |
|---|---|---|---|
| brand_name | string | yes | – |
| description | – | – | – |
| domain | string | yes | – |
| faqs | – | – | – |
| pricing_summary | – | – | – |
| same_as_urls | – | – | – |
No output schema declared.
No examples provided.
get_account_changelog Get Account Changelog ~121
Extract Google Ads changelog / mutation history (default request 90 days, capped to the Google Ads change_event API's 30-day maximum). Other catalog platforms return changelog_supported=false until a reader is implemented. Evaluates historical changes against Synter's autonomous agent tool and OAuth scope parity, calculates estimated monthly hours saved, and generates autonomous agent recommendations. [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| account_name | – | – | – |
| lookback_days | integer | – | – |
| platform | string | – | – |
No output schema declared.
No examples provided.
get_ad_readback Get Ad Readback ~110
Proof Pack: read a launched ad's creative + CTA back from the platform API (the source of truth) and verify the CTA against the platform enum and the copy against ad policy (2 credits). Meta, Reddit, and LinkedIn supported today; other platforms return a clearly-labeled unsupported result. [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | – | – | – |
| ad_id | string | yes | – |
| approved_cta | – | – | – |
| platform | string | yes | – |
No output schema declared.
No examples provided.
get_attribution Get Attribution ~46
Multi-touch attribution analysis using Markov chains (5 credits) [effect=read; scope=measurement:read]
| Name | Type | Req | Description |
|---|---|---|---|
| conversion_type | – | – | – |
| date_range | string | – | – |
No output schema declared.
No examples provided.
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. Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI. This page covers its hosted endpoint (https://mcp.syntermedia.ai).
Is the io.github.Synter-Media-AI/synter-ads MCP server safe to use?
io.github.Synter-Media-AI/synter-ads scores 79 out of 100 on VerifyMCP. 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 209 tools: get_organic_publishing_readiness, draft_organic_post, validate_organic_post, approve_organic_post, schedule_organic_post, and 204 more. Their descriptions and schemas cost roughly 20,927 tokens of context every time the server is loaded.
Does the io.github.Synter-Media-AI/synter-ads MCP server require authentication?
Yes. io.github.Synter-Media-AI/synter-ads asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.