io.github.Synter-Media-AI/synter-ads
REMOTE · MCP.SYNTERMEDIA.AI · 2 COMPONENTS · SCANNED OCT 7
Reporting across 19 ad platforms, campaign creation on 14, write actions on 16, 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
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. 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 & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
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/mcp/, 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/mcp/'
{
"mcpServers": {
"synter-media-ai-synter-ads": {
"url": "https://mcp.syntermedia.ai/mcp/"
}
}
} {
"servers": {
"synter-media-ai-synter-ads": {
"type": "http",
"url": "https://mcp.syntermedia.ai/mcp/"
}
}
} [mcp_servers.synter-media-ai-synter-ads] url = "https://mcp.syntermedia.ai/mcp/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"synter-media-ai-synter-ads": {
"type": "remote",
"url": "https://mcp.syntermedia.ai/mcp/",
"enabled": true
}
}
} openclaw mcp add synter-media-ai-synter-ads --url 'https://mcp.syntermedia.ai/mcp/' --transport streamable-http
mcp_servers:
synter-media-ai-synter-ads:
url: "https://mcp.syntermedia.ai/mcp/" {
"McpServers": {
"synter-media-ai-synter-ads": {
"Transport": "http",
"Url": "https://mcp.syntermedia.ai/mcp/"
}
}
} assistant mcp add synter-media-ai-synter-ads -t streamable-http -u 'https://mcp.syntermedia.ai/mcp/'
{
"mcpServers": {
"synter-media-ai-synter-ads": {
"type": "http",
"url": "https://mcp.syntermedia.ai/mcp/"
}
}
} 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.
- 3 Oct 26 −36
- Endpoint reachability: reachable → behind authorisation ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 2 Oct 26 72
First indexed and scored.
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 · Probed https://mcp.syntermedia.ai/mcp/
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 connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer error="invalid_token", resource_metadata="https://mcp.syntermedia.ai/.well-known/oauth-protected-resource", scope="tools:read tools:write"
Bearer error="invalid_token", resource_metadata="https://mcp.syntermedia.ai/.well-known/oauth-protected-resource", scope="tools:read tools:write" | Header | Value |
|---|---|
| www-authenticate | Bearer error="invalid_token", 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/mcp/ | Auth required | 401 | |
| http (plaintext) | http://mcp.syntermedia.ai/mcp/ | HTTPS enforced | 301 | https://mcp.syntermedia.ai/mcp/ |
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.
benchmark_landing_page Benchmark Landing Page ~183
Measure whether our landing page looks and converts better than the pages this traffic would otherwise land on. Captures ours and up to 5 competitor URLs at desktop (1280) and mobile (390), scores every page on one rubric (CTA above the fold, h1, no horizontal overflow, load time, conversion surface, proof, copy length) plus a vision design read, and ranks them. Returns wins, rank, a leaderboard and gaps — the dimensions a competitor beats us on, i.e. the next studio_edit_landing_page batch. Recorded on the canvas page; publish_landing_page refuses a page that lost until fixed or acknowledged. Free; runs 20-90s. [effect=write; scope=landing_pages:write]
| Name | Type | Req | Description |
|---|---|---|---|
| competitor_urls | array | yes | – |
| slug | string | yes | – |
| vision | boolean | – | – |
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.
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 (20 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 ~106
Create a campaign targeting an existing audience (1000 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 ~56
Create and read back a complete Google Doc from substantive 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 ~63
Create, populate, and read back a complete 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 (600 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_landing_page_variants Create Landing Page Variants ~168
Per-ad landing pages from ONE approved canvas framework, bound to real ads. Keeps the framework's section order, theme, offer and CTA verb; swaps only the message-match slots (hero headline := the ad's promise, subtitle := primary text, badge := audience, CTA verb := the ad's CTA) and names the page after the ad. Each variant records its ad (platform, campaign_id, ad_id) on the canvas document so attribution reads back per ad. Pass ads exactly as read from the platform; never invent copy. Each NEW hosted page is charged like create_landing_page; re-deriving an existing variant is free. [effect=write; scope=landing_pages:write]
| Name | Type | Req | Description |
|---|---|---|---|
| ads | array | yes | – |
| framework_slug | 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.
document_authoring_apply Document Authoring Apply ~161
Persist one atomic draft-authoring operation on a Synter document: artboard.create (caller UUID widget_id, name, width, height, optional ops), artboard.edit (widget_id, studio ops), or dashboard.arrange (arrangement of widget_id,x,y,width,height). Requires the expected_revision from document_authoring_read and explicit project UUID/null. Returns committed canonical readback and changed IDs, never a streamed intent. Stale retries fail 409: read and reconcile, do not blindly reapply. Does not render, publish or spend. [effect=write; scope=campaigns:write]
| Name | Type | Req | Description |
|---|---|---|---|
| document_id | string | yes | – |
| expected_revision | string | yes | – |
| operation | object | yes | – |
| project_id | – | yes | – |
No output schema declared.
No examples provided.
document_authoring_read Document Authoring Read ~81
Read canonical persisted Synter document content, full artboard designs, dashboard widgets and whole-document revision. Requires document UUID and explicit project UUID (null outside projects). No browser is required. Use this before document_authoring_apply. [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| document_id | string | yes | – |
| project_id | – | yes | – |
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.
enrich_contacts Enrich Contacts ~173
Enrich contacts you already hold — including PERSONAL email addresses — by resolving them through Synter Signals to a person, then returning work email, LinkedIn URL, phone, title and employer. Built for the signup-list problem: a gmail.com address is invisible to work-email-only B2B data, but is resolvable as a person. CRM-AGNOSTIC: pass identifiers and get rows back keyed 1:1 to what you passed, so any CRM (attio, hubspot, salesforce, pipedrive) can map them back to its own records. Bills per enriched profile delivered; unresolved identifiers are free. US only, adults only. [effect=read; scope=signals:read]
| Name | Type | Req | Description |
|---|---|---|---|
| crm | – | – | – |
| identifiers | array | yes | – |
| include_company | boolean | – | – |
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.
get_billing_status Get Billing Status ~52
Check Synter subscription access and usage balance. Ad spend is paid separately to the ad platforms. FREE: costs no credits and makes no LLM call. [effect=read; scope=billing:read]
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_campaign_observation Get Campaign Observation ~125
Independent read-only native campaign observation v1 for explicitly enrolled Google, Meta or LinkedIn test accounts. Requires exact workspace, connection and account. Returns provider fields and pagination/provenance, never a parity or delivery verdict. No creation, repair, activation, report jobs or model calls. Unenrolled accounts fail closed. [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| campaign_id | string | yes | – |
| connection_id | integer | yes | – |
| platform | string | yes | – |
| workspace_id | integer | yes | – |
No output schema declared.
No examples provided.
get_campaign_plan Get Campaign Plan ~50
Fetch a campaign plan with its entities, budgets, desired states, and review/execution status (free). [effect=read; scope=campaigns:read]
| Name | Type | Req | Description |
|---|---|---|---|
| plan_id | string | yes | – |
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. Reporting across 19 ad platforms, campaign creation on 14, write actions on 16, via AI. This page covers its hosted endpoint (https://mcp.syntermedia.ai/mcp/).
Is the io.github.Synter-Media-AI/synter-ads MCP server safe to use?
io.github.Synter-Media-AI/synter-ads scores 36 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 235 tools: get_organic_publishing_readiness, draft_organic_post, validate_organic_post, approve_organic_post, schedule_organic_post, and 230 more. Their descriptions and schemas cost roughly 25,044 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 7 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.