Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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.

36 Trust /100
Trust breakdown (7 categories)

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
Transport & Reachability0
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.

Install

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

# add to Claude Code
claude mcp add --transport http synter-media-ai-synter-ads 'https://mcp.syntermedia.ai/mcp/'
// .cursor/mcp.json
{
  "mcpServers": {
    "synter-media-ai-synter-ads": {
      "url": "https://mcp.syntermedia.ai/mcp/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "synter-media-ai-synter-ads": {
      "type": "http",
      "url": "https://mcp.syntermedia.ai/mcp/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.synter-media-ai-synter-ads]
url = "https://mcp.syntermedia.ai/mcp/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "synter-media-ai-synter-ads": {
      "type": "remote",
      "url": "https://mcp.syntermedia.ai/mcp/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add synter-media-ai-synter-ads --url 'https://mcp.syntermedia.ai/mcp/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  synter-media-ai-synter-ads:
    url: "https://mcp.syntermedia.ai/mcp/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "synter-media-ai-synter-ads": {
      "Transport": "http",
      "Url": "https://mcp.syntermedia.ai/mcp/"
    }
  }
}
# add to Vellum
assistant mcp add synter-media-ai-synter-ads -t streamable-http -u 'https://mcp.syntermedia.ai/mcp/'
// mcp.json
{
  "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.

Changelog

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.

Diagnostics

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/
MCP tools · 235 exposed · ~25,044 tokens

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 →

Tool Tokens
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]

NameTypeReqDescription
comment–––
expected_versionintegeryes–
plan_idstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
post_idintegeryes–
revision_hashstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
ad_group_id–––
audience_id–––
campaign_idstringyes–
facetstring––
modestring––
platformstring––
segment_urn–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
account_name–––
platformstring––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
check_llms_txt–––
domainstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
brand_namestringyes–
domainstringyes–
review_platforms–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
competitor_urlsarrayyes–
slugstringyes–
visionboolean––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_idstringyes–
audience_namestringyes–
decision_makers_onlyboolean––
domainsstringyes–
max_contacts–––
platformstringyes–

No output schema declared.

No examples provided.

build_lookalike_audience ~63

Build ML-based lookalike audience from seed customers [effect=write; scope=audiences:write; externalMutation=true]

NameTypeReqDescription
expansion_factorinteger––
platformstringyes–
seed_audiencestringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
post_idintegeryes–
revision_hashstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
actionstring––
conversion_action_id–––
conversion_rule_id–––
customer_id–––
pixel_code–––
pixel_id–––
platformstringyes–
site_key–––

No output schema declared.

No examples provided.

create_ad_copy ~99

Generate text ad copy (headlines, descriptions, CTAs) for any platform using Claude (20 credits) [effect=write; scope=creative:generate]

NameTypeReqDescription
competitor_brand–––
cta–––
descriptions_count–––
headlines_count–––
keywords–––
landing_page_url–––
platformstringyes–
productstringyes–
tonestring––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
approval_mode–––
cron_expression–––
description–––
name–––
notify_channels–––
notify_on_completionboolean––
organization_id–––
platform–––
project_id–––
skill_slug–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
audience_idstringyes–
campaign_namestringyes–
daily_budgetnumber––
description–––
final_url–––
headline–––
image_url–––
platformstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
campaign_id–––
campaign_name–––
daysinteger––
organization_id–––
platformstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
brief_json–––
plan_keystringyes–
titlestringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
contentstringyes–
organization_id–––
titlestringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
allowed_origins–––
commerce_connection_id–––
config–––
fields–––
kindstringyes–
namestringyes–
publishedboolean––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
content–––
html–––
titlestringyes–

No output schema declared.

No examples provided.

create_google_sheet ~63

Create, populate, and read back a complete Google Sheet from tabular data (5 credits) [effect=write; scope=workspace:external_docs]

NameTypeReqDescription
headers–––
json_data–––
rows–––
titlestringyes–

No output schema declared.

No examples provided.

create_landing_page ~100

Generate an AI landing page hosted on your custom domain (600 credits) [effect=write; scope=landing_pages:write]

NameTypeReqDescription
brand_url–––
cta_textstring––
cta_urlstringyes–
idempotency_key–––
lead_form–––
promptstringyes–
slug–––
stylestring––
titlestringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
adsarrayyes–
framework_slugstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
aspect_ratiostring––
auto_captionboolean––
headline–––
idempotency_key–––
name–––
source_urlstringyes–
trim_end–––
trim_startnumber––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
attest_authorizedbooleanyes–
custom_domainstringyes–
slugstringyes–
source_urlstringyes–
titlestring––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
audience_idstringyes–
platformstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
document_id–––
uuid–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
guardrail_idintegeryes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
auto_seed–––
competitors–––
domain–––
icp_persona–––
project_id–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
document_idstringyes–
expected_revisionstringyes–
operationobjectyes–
project_id–yes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
document_idstringyes–
project_id–yes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_kindstringyes–
account_refstringyes–
bodystringyes–
idempotency_keystringyes–
media–––
platformstringyes–
platform_connection_idintegeryes–
provider_config_keystringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
brand_namestringyes–
citations–––
description–––
domain–––
founding_year–––
headquarters–––

No output schema declared.

No examples provided.

enable_campaign ~70

Enable/resume a paused campaign on any ad platform (2 credits) [effect=state; scope=campaigns:state; requires=campaignPublishing; externalMutation=true]

NameTypeReqDescription
account_id–––
account_name–––
campaign_idstringyes–
platformstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
crm–––
identifiersarrayyes–
include_companyboolean––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
actionstringyes–
args–––
customer_id–––
dry_runboolean––
expected_names–––
idempotency_key–––
platform–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
execute_tokenstringyes–
plan_idstringyes–
qa_override_approvedboolean––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
entity_typestring––
max_resultsinteger––
querystringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
brand_namestringyes–
buying_promptstringyes–
competitors–––
domainstringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
campaign_id–––
horizoninteger––
metricstring––
platform–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
tool_namestringyes–

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
property_id–––

No output schema declared.

No examples provided.

ga4_get_properties ~38

List your Google Analytics 4 properties (free) [effect=read; scope=reporting:read]

NameTypeReqDescription
account_id–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
daysinteger––
dimensionsstring––
metricsstring––
property_id–––

No output schema declared.

No examples provided.

generate_jsonld_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]

NameTypeReqDescription
brand_namestringyes–
description–––
domainstringyes–
faqs–––
pricing_summary–––
same_as_urls–––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
account_name–––
lookback_daysinteger––
platformstring––

No output schema declared.

No examples provided.

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]

NameTypeReqDescription
account_id–––
ad_idstringyes–
approved_cta–––
platformstringyes–

No output schema declared.

No examples provided.

get_attribution ~46

Multi-touch attribution analysis using Markov chains (5 credits) [effect=read; scope=measurement:read]

NameTypeReqDescription
conversion_type–––
date_rangestring––

No output schema declared.

No examples provided.

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 ~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]

NameTypeReqDescription
account_idstringyes–
campaign_idstringyes–
connection_idintegeryes–
platformstringyes–
workspace_idintegeryes–

No output schema declared.

No examples provided.

get_campaign_plan ~50

Fetch a campaign plan with its entities, budgets, desired states, and review/execution status (free). [effect=read; scope=campaigns:read]

NameTypeReqDescription
plan_idstringyes–

No output schema declared.

No examples provided.

Common questions

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.