MCP # Tool Reference All 136 tools available to your AI assistant through MCP, organized by category. Hosted catalog version 2026-08-31. How tools work You don't need to call tools directly. Just describe what you want in natural language and your AI assistant will pick the right tool. Each tool costs credits — check your balance with `get_credit_balance`. Catalog scope This reference describes the hosted server at `https://mcp.syntermedia.ai`. It is generated from the current hosted tool manifest, including input schemas and read/write annotations. The versioned `@synterai/mcp-server` local compatibility package exposes a smaller tool set; pin its npm version and use that release's README when local stdio transport is required. Beyond these tools: execute() The tools above cover the common cases, but `execute` in the Advanced category is a general-purpose escape hatch into a much larger internal script library (several hundred platform-specific actions) — use `list_available_scripts` to browse it and `inspect_script` to see an action's exact arguments before calling it. ## Getting Started 2 `synter_onboarding_start` write Start onboarding - create account and get API key (no auth required) Parameters `email` string required Your work email address `synter_onboarding_status` read-only Check onboarding progress - poll until ready (no auth required) Parameters `session_token` string required The session token returned by synter\_onboarding\_start ## Account & Connections 5 `list_connected_accounts` read-only See ALL connected accounts: ad platforms, analytics (GA4, PostHog), CRM (HubSpot, Attio), and more (free) No parameters required. `verify_platform_accounts` read-only Verify which ad account each platform's pull tools would use by default, with recent activity per connected account. Flags when the default account is dormant while a sibling account has spend (free). Call this before pull\_\*\_performance when a platform has multiple accounts or returns suspicious zeros. Parameters `platform` string Optional platform filter (e.g. "X", "REDDIT", "GOOGLE"). Omit to verify all connected ad platforms. `days` number Activity window in days (default: 7). `get_connection_status` read-only Check ALL platform connections: ad platforms, analytics (GA4, PostHog), CRM (HubSpot, Attio), and more (free) No parameters required. `get_credit_balance` read-only Check your credit balance and pricing (free) No parameters required. `get_job_status` read-only Check the status of an async job (e.g. audience sync). Returns job status, result on success, or error on failure. Free - no credits charged. Parameters `job_id` string required The job ID returned by the async tool (UUID format) ## Performance Reporting 24 `pull_google_ads_performance` read-only Get Google Ads campaign metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges like weekends, or days for a rolling window. IMPORTANT: If the user has multiple Google Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. Explicit start\_date/end\_date take precedence. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `level` string Data granularity (default: campaigns) `campaigns` `ad-groups` `keywords` `ads` `search-terms` `account_id` string Optional specific Google Ads customer ID. If not provided, uses the user's primary connected account. `account_name` string Optional account name for disambiguation when multiple accounts are connected. Pass the name the user mentions (e.g., "leafypod") — the system will match it. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_meta_ads_performance` read-only Get Meta (Facebook/Instagram) Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. IMPORTANT: If the user has multiple Meta Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. Explicit start\_date/end\_date take precedence. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `level` string Data granularity (default: campaign) `campaign` `ad-set` `ad` `account_id` string Optional specific Meta ad account ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `get_ad_readback` read-only 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 supported today; other platforms return a clearly-labeled unsupported result. Parameters `platform` string required Platform the ad was launched on (e.g. "meta"). `ad_id` string required The platform ad ID returned by upload\_creative / create\_\*\_ad. `account_id` string Optional specific ad-account ID holding the ad. `approved_cta` string Optional brief-approved CTA to verify the launched CTA against. `pull_linkedin_ads_performance` read-only Get LinkedIn Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Pass campaign\_group\_ids (comma-separated) to filter to specific campaign groups. IMPORTANT: If the user has multiple LinkedIn accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific LinkedIn ad account ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `campaign_group_ids` string Optional comma-separated LinkedIn Campaign Group IDs to filter by; only campaigns within these groups are returned. `pull_x_ads_performance` read-only Get X (Twitter) Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. IMPORTANT: If the user has multiple X Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific X Ads account ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_reddit_ads_performance` read-only Get Reddit Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. IMPORTANT: If the user has multiple Reddit Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific Reddit ad account ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_microsoft_ads_performance` read-only Get Microsoft (Bing) Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. IMPORTANT: If the user has multiple Microsoft Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific Microsoft Ads account ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_tiktok_ads_performance` read-only Get TikTok Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. For detailed video engagement metrics use tiktok\_ads\_get\_insights. IMPORTANT: If the user has multiple TikTok Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_amazon_dsp_performance` read-only Pull Amazon DSP campaign performance data (2 credits) Parameters `days` number Number of days to look back (default: 30, max: 90) `account_id` string Optional specific Amazon DSP advertiser ID `account_name` string Optional account name for disambiguation. `pull_amazon_ads_performance` read-only Get Amazon Ads (Sponsored Products/Brands/Display) metrics (2 credits). When counting 'live' campaigns, only count campaigns with state=ENABLED AND active ad groups with budget remaining — ARCHIVED campaigns are NOT active. IMPORTANT: If the user has multiple Amazon Ads accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number Number of days to look back (default: 30, max: 90) `ad_type` string Ad type filter (default: ALL) `SP` `SB` `SD` `ALL` `account_id` string Optional specific Amazon Ads profile ID `account_name` string Optional account name for disambiguation. `pull_pinterest_ads_performance` read-only Get Pinterest Ads metrics (2 credits). IMPORTANT: If the user has multiple Pinterest ad accounts connected, you MUST ask which account to use BEFORE calling this tool — pass account\_name to select it. Parameters `days` number `level` string `account_id` string `account_name` string `pull_snap_ads_performance` read-only Get Snapchat Ads metrics (2 credits). Use account\_name to specify which account when multiple are connected. Parameters `days` number `level` string `account_id` string `account_name` string `pull_spotify_ads_performance` read-only Get Spotify Ads metrics (2 credits). Use account\_name to specify which account when multiple are connected. Parameters `days` number `account_id` string `account_name` string `pull_openai_ads_performance` read-only Get OpenAI Ads metrics (2 credits). Pulls insights from the OpenAI Ads API. Optional scope: campaign\_id, ad\_group\_id, or ad\_id to scope the report. Defaults to the selected scope's natural aggregation level; unscoped defaults to ad\_account. Parameters `days` number How many days back to pull (1-365). Defaults to 30. `campaign_id` string Optional — scope insights to one campaign. `ad_group_id` string Optional — scope insights to one ad group. `ad_id` string Optional — scope insights to one ad. `aggregation_level` string Defaults to ad\_account. `ad_account` `campaign` `ad_group` `ad` `time_granularity` string Defaults to script default. `daily` `none` `limit` number Max rows to return (defaults to 1000). `account_id` string Optional OpenAI Ads account ID (when multiple connected). `account_name` string Optional friendly account name selector. `pull_trade_desk_performance` read-only Get The Trade Desk metrics (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Use account\_name to specify which account when multiple are connected. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific Trade Desk partner ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `pull_freewheel_performance` read-only Get FreeWheel Buyer Cloud (Beeswax) metrics (2 credits). Date window: date\_range preset (today, yesterday, last\_7\_days, last\_14\_days, last\_30\_days, last\_90\_days), start\_date/end\_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Use account\_name to specify which account when multiple are connected. Parameters `days` number Number of days to look back (default: 30). Ignored when date\_range or start\_date/end\_date are provided. `date_range` string Optional preset window. `today` `yesterday` `last_7_days` `last_14_days` `last_30_days` `last_90_days` `account_id` string Optional specific FreeWheel connection account id. `account_name` string Optional account name for disambiguation. `start_date` string Optional fixed window start (YYYY-MM-DD). Requires end\_date. `end_date` string Optional fixed window end (YYYY-MM-DD). Requires start\_date. `get_spend_reconciliation` read-only Cross-platform reconciliation MVP — compares Google Ads ↔ Trade Desk totals for a date range, returns normalized per-platform metrics, discrepancies, and deterministic likely-cause explanations (3 credits). Read-only. Date range capped to 92 days. Parameters `start_date` string required YYYY-MM-DD (inclusive) `end_date` string required YYYY-MM-DD (inclusive, must be <= yesterday) `google_account_id` string Optional Google Ads customer ID `google_account_name` string Optional Google account name for disambiguation `ttd_advertiser_id` string Optional Trade Desk advertiser ID `ttd_account_name` string Optional TTD account name for disambiguation `pull_dv360_performance` read-only Get Display & Video 360 (DV360) metrics (2 credits). Use account\_name to specify which account when multiple are connected. Parameters `days` number `account_id` string `account_name` string `pull_cm360_performance` read-only Get Campaign Manager 360 (CM360) metrics (2 credits). Use account\_name to specify which account when multiple are connected. Parameters `days` number `account_id` string `account_name` string `pull_walmart_ads_performance` read-only Get Walmart Connect Advertising metrics (2 credits). Returns impressions, clicks, spend, conversions, and ROAS per campaign. Parameters `days` number `account_id` string `account_name` string `pull_instacart_ads_performance` read-only Get Instacart Ads metrics (2 credits). Returns impressions, clicks, spend, attributed orders, and attributed sales per campaign. Parameters `days` number `account_id` string `account_name` string `pull_target_roundel_performance` read-only Get Target Roundel retail media metrics (2 credits). Returns impressions, clicks, spend, conversions, and revenue per campaign. Parameters `days` number `account_id` string `account_name` string `pull_criteo_ads_performance` read-only Get Criteo Commerce Media metrics (2 credits). Returns displays, clicks, cost, conversions, and revenue per campaign. Parameters `days` number `account_id` string `account_name` string `pull_linkedin_company_engagement` read-only Pull LinkedIn Ads Company Engagement report — shows which companies have seen your ads and how engaged they are (2 credits) Parameters `account_id` string LinkedIn Ads account ID (uses connected account if omitted) `days` number Look-back window in days (default: 90) `audience_id` string Optional dmpSegment ID — scope analytics to this audience `country` string ISO country code filter, e.g. "US" or "GB" `min_employees` number Filter companies with at least this many employees `max_employees` number Filter companies with at most this many employees `engagement_level` string Comma-separated tier filter: "VERY\_HIGH,HIGH" or "MEDIUM,LOW" `limit` number Maximum companies to return (default: 200) ## TikTok Ads (Detailed) 6 `tiktok_ads_get_insights` read-only Get TikTok Ads performance report with video metrics (2 credits). Returns spend, impressions, clicks, CTR, conversions, CPA, ROAS, and TikTok-specific video engagement metrics per campaign/adgroup/ad. Parameters `days` number Number of days to look back (default: 7) `data_level` string Data level (default: AUCTION\_CAMPAIGN) `AUCTION_CAMPAIGN` `AUCTION_ADGROUP` `AUCTION_AD` `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. `tiktok_ads_get_adgroup` read-only Get full TikTok ad group configuration (free). Returns targeting, budget, bid, pixel, optimization goal, languages, locations, age groups, identity. Parameters `adgroup_id` string required The ad group ID to fetch `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. `tiktok_ads_get_ad_groups` read-only List all TikTok ad groups, optionally filtered by campaign (free). Returns ID, name, status, budget, bid, optimization goal. Parameters `campaign_id` string Optional campaign ID to filter ad groups `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. `tiktok_ads_get_ads` read-only List all TikTok ads, optionally filtered by ad group (free). Returns ad\_id, ad\_name, adgroup\_id, campaign\_id, status, ad\_format. Parameters `adgroup_id` string Optional ad group ID to filter ads `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. `tiktok_ads_update_adgroup` write Update a TikTok ad group: status, budget, locations, age targeting, bid, languages, audiences, optimization goal, pixel tracking (5 credits) Parameters `adgroup_id` string required The ad group ID to update `status` string New status `ENABLE` `PAUSE` `budget` number Daily budget in dollars `locations` string Space-separated location IDs (e.g. "6252001 2635167" for US, UK) `age_min` number Minimum age (e.g. 25). Mapped to TikTok age groups. `age_max` number Maximum age (e.g. 55). Use 0 for no upper limit (55+). `bid` number Bid price in dollars `bid_type` string Bid strategy `BID_TYPE_NO_BID` `BID_TYPE_CUSTOM` `languages` string Space-separated language codes (e.g. "en fr de") `audience_ids` string Comma-separated custom audience IDs to include `excluded_audience_ids` string Comma-separated custom audience IDs to exclude `optimization_goal` string Optimization goal `CLICK` `CONVERT` `SHOW` `REACH` `VIDEO_VIEW` `ENGAGED_VIEW` `LEAD_GENERATION` `INSTALL` `IN_APP_EVENT` `pixel_id` string Pixel ID for conversion tracking (numeric or alphanumeric pixel\_code) `conversion_event` string Conversion event name (e.g. CompleteRegistration, Purchase). Auto-mapped to TikTok enum. `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. `tiktok_ads_get_campaign` read-only Get full TikTok campaign configuration by ID (free). Returns name, objective, budget, status, timestamps. Parameters `campaign_id` string required The campaign ID to fetch `account_id` string Optional specific TikTok advertiser ID `account_name` string Optional account name for disambiguation. ## Campaign Management 6 `list_campaigns` read-only List campaigns for any ad platform (2 credits) Parameters `platform` string required Ad platform `google` `meta` `linkedin` `reddit` `microsoft` `tiktok` `x` `amazon_dsp` `account_id` string Optional specific account ID for the platform `status` string Optional filter by status `ENABLED` `PAUSED` `REMOVED` `account_name` string Optional name to select which account when multiple are connected for the same platform `pause_campaign` write Pause a campaign on any ad platform (2 credits) Parameters `platform` string required Ad platform `google` `meta` `linkedin` `reddit` `microsoft` `tiktok` `x` `amazon_dsp` `campaign_id` string required The campaign ID to pause `account_id` string Optional specific account ID `account_name` string Optional name to select which account when multiple are connected for the same platform `meta_ads_create_ad` write Create a Meta (Facebook/Instagram) ad in an existing ad set (5 credits) Parameters `adset_id` string required Parent ad set id. A single real id — wildcards are rejected. `name` string required Ad name. `creative_id` string Existing creative id to reuse. `page_id` string Facebook Page id, required when building a new creative. `link` string Destination URL for a new creative. `message` string Primary text. `headline` string Headline text. `description` string Description text. `call_to_action` string CTA enum, e.g. LEARN\_MORE, SIGN\_UP, SHOP\_NOW. `image_url` string Image URL to upload. `image_hash` string Pre-uploaded image hash (alternative to image\_url). `video_id` string Video asset id. `instagram_user_id` string Instagram account id for IG placements. `status` string Defaults to PAUSED — new ads should be reviewed before they spend. `ACTIVE` `PAUSED` `account_id` string Specific ad account id. `account_name` string Select among several connected Meta accounts by name. `reddit_ads_create_ad` write Create a Reddit ad from an existing post in an ad group (5 credits) Parameters `ad_group_id` string required Parent ad group id. A single real id — wildcards rejected. `post_id` string required The post to promote, e.g. t3\_1vbvcb7. `name` string Ad name. `click_url` string Destination URL. Reddit rejects a click\_url on free-form (TEXT) posts — only link posts carry one. `status` string Defaults to PAUSED. `ACTIVE` `PAUSED` `campaign_name` string Campaign name used for UTM auto-append. `no_utm` boolean Skip UTM auto-append. `account_id` string Specific ad account id. `account_name` string Select among several connected Reddit accounts by name. `enable_campaign` write Enable/resume a paused campaign on any ad platform (2 credits) Parameters `platform` string required Ad platform `google` `meta` `linkedin` `reddit` `microsoft` `tiktok` `x` `amazon_dsp` `campaign_id` string required The campaign ID to enable `account_id` string Optional specific account ID `account_name` string Optional name to select which account when multiple are connected for the same platform `update_campaign_budget` write Update a campaign's daily budget (5 credits) Parameters `platform` string required Ad platform `google` `meta` `linkedin` `reddit` `microsoft` `tiktok` `x` `amazon_dsp` `campaign_id` string required The campaign ID to update `daily_budget` number required New daily budget in account currency (e.g., 50.00 for $50/day) `account_id` string Optional specific account ID `account_name` string Optional name to select which account when multiple are connected for the same platform ## Google Tag Manager 5 `list_gtm_containers` read-only List Google Tag Manager accounts and containers for the connected GTM user (2 credits). Returns each account's id/name and its containers' id/name/publicId. No parameters required. `list_gtm_tags` read-only List the tags in a GTM container (2 credits). Returns tag summaries: tagId, name, type, paused. Pass account\_id/container\_id, or rely on the connection's defaults. Parameters `account_id` string GTM account ID (optional if the connection pins a container) `container_id` string GTM container ID (optional if the connection pins a container) `get_gtm_tag` read-only Get the full definition of one GTM tag (2 credits), including its parameters (the html body for Custom HTML tags) and firing triggers. Parameters `tag_id` string required The tag ID to fetch (required) `account_id` string GTM account ID (optional if the connection pins a container) `container_id` string GTM container ID (optional if the connection pins a container) `update_gtm_tag_html` write Replace the HTML body of an existing GTM Custom HTML tag (5 credits). Modifies live site tracking once the container is published. Only type 'html' tags are allowed; the change stays in the workspace until publish\_gtm\_container runs. Parameters `tag_id` string required The tag ID to update (required) `html` string required The new HTML body for the tag (required) `account_id` string GTM account ID (optional if the connection pins a container) `container_id` string GTM container ID (optional if the connection pins a container) `publish_gtm_container` write Publish a GTM container — creates a version from the default workspace and publishes it (5 credits). Pushes all workspace changes live to the site's tracking immediately. Approval-gated. Parameters `account_id` string GTM account ID (optional if the connection pins a container) `container_id` string GTM container ID (optional if the connection pins a container) `version_name` string Optional name for the published container version `conflict_resolution` string Optional merge conflict strategy. Use "keep\_workspace" only when the user explicitly approved keeping the workspace version for GTM conflicts. ## Analytics & Query 4 `run_gaql_query` read-only Execute a Google Ads Query Language (GAQL) query (2 credits). Use account\_name to specify which account when multiple are connected. Parameters `query` string required The GAQL query to execute. Example: SELECT campaign.name, metrics.impressions FROM campaign WHERE segments.date DURING LAST\_30\_DAYS `account_id` string Optional Google Ads customer ID `account_name` string Optional account name for disambiguation when multiple accounts are connected. `ga4_get_properties` read-only List your Google Analytics 4 properties (free) Parameters `account_id` string Optional specific GA4 account ID `ga4_get_report` read-only Run a Google Analytics 4 report (free). Pass property\_id to query a specific GA4 property instead of the connection default. Parameters `metrics` string Comma-separated metrics (e.g., "sessions,totalUsers,conversions,screenPageViews") `dimensions` string Comma-separated dimensions (e.g., "date", "sessionSource,sessionMedium", "country") `days` number Number of days to look back (default: 28) `account_id` string Optional connection account selector `property_id` string Optional numeric GA4 property ID to report on (overrides the connection's pinned GA4\_PROPERTY\_ID). Use ga4\_get\_properties to find it. `ga4_get_conversions` read-only List GA4 conversion events (free). Pass property\_id to query a specific GA4 property instead of the connection default. Parameters `account_id` string Optional connection account selector `property_id` string Optional numeric GA4 property ID (overrides the connection's pinned GA4\_PROPERTY\_ID) ## Pixel & Conversion Tracking 3 `verify_pixel_ownership` read-only Cross-validate that the pixel/tag IDs on a landing page belong to the connected ad account. Detects wrong-pixel installs, domain registration gaps, and CAPI mismatches. Free — no credits. Parameters `url` string required Landing page URL to inspect. `platform` string required Ad platform `META` `GOOGLE_ADS` `REDDIT` `TIKTOK` `LINKEDIN` `account_id` string Optional specific account ID; uses the user's active connection if omitted. `get_pixel_destinations` read-only List Synter Pixel sites and their CAPI event-forwarding destinations for the active workspace. Shows platform, enabled/disabled state, and configured IDs. Free — no credits. Parameters `site_key` string Optional pixel site key (sp\_...) to scope to one site. If omitted, returns all sites for the workspace. `configure_pixel_destination` write 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. Parameters `platform` string required GOOGLE, META, LINKEDIN, REDDIT, TIKTOK, SNAPCHAT, etc. `action` string Default: upsert `upsert` `enable` `disable` `site_key` string sp\_... site key; uses first active site for the org if omitted. `customer_id` string Google Ads customer ID (digits only, no dashes). `conversion_action_id` string Google Ads conversion action resource ID. `pixel_id` string Meta / Reddit / Snapchat / OpenAI Ads pixel ID. `conversion_rule_id` string LinkedIn conversion rule ID. `pixel_code` string TikTok pixel code. ## Docs, Sheets & Publishing 5 `create_google_doc` write Create a Google Doc from markdown or HTML content (5 credits) Parameters `title` string required Document title `content` string Markdown content for the document. Supports headings, bold, italic, links, lists. Use this for campaign plans, reports, etc. `html` string Raw HTML content (alternative to markdown). Use for rich formatting. `publish_to_github` write Publish a markdown blog post to a connected GitHub repo: commit /.md and open a PR (which triggers the site's deploy). Free. Parameters `slug` string required URL slug; also the markdown filename (.md). `title` string required Post title (rendered + used in front matter and the PR title). `markdown` string required The article body in markdown (no front matter — it's generated). `description` string Meta description (defaults to the title). `date` string Publish date YYYY-MM-DD (defaults to today). `category` string Content category (e.g. "guides", "comparisons", "product"). `tags` string Comma-separated tags (e.g. "ABM,First-Party Data"). `open_pr` boolean Open a PR (default) or push directly to the deploy branch. `content_path` string Override the repo dir the markdown lives in (default from connection, e.g. "blog"). `base_branch` string Override the PR base / deploy branch (default from connection, e.g. "main"). `create_google_sheet` write Create a Google Sheet from tabular data (5 credits) Parameters `title` string required Spreadsheet title `headers` string Comma-separated column headers (e.g., "Campaign,Spend,Clicks,ROAS") `rows` string\[\] List of comma-separated row data. Each string is one row. Example: \["Brand Search,$5000,2340,4.2", "Display,$3200,18900,2.8"\] `json_data` string JSON array of objects as alternative to headers+rows. Example: '\[{"Campaign":"Brand","Spend":5000},{"Campaign":"Display","Spend":3200}\]' `read_google_sheet` read-only Read tabular data (e.g. a media plan / campaign brief) from a connected Google Sheet (free) Parameters `spreadsheet_id` string Spreadsheet ID (or pass \`url\` instead) `url` string Full Google Sheets URL (alternative to spreadsheet\_id) `range` string A1 range to read, e.g. "Media Plan!A1:H50". Defaults to the first tab. `header_row` number 1-based row within the range holding column headers (default 1) `max_rows` number Maximum number of data rows to return `update_google_sheet` write Write values (e.g. campaign IDs / status / spend) back into a range of an existing Google Sheet (2 credits) Parameters `range` string required A1 range to write, e.g. "Media Plan!I2:K5" `values` string required JSON 2D array of cell values, e.g. '\[\["LAUNCHED","cmp\_123","$0.00"\]\]' `spreadsheet_id` string Spreadsheet ID (or pass \`url\` instead) `url` string Full Google Sheets URL (alternative to spreadsheet\_id) `value_input_option` string Default: USER\_ENTERED `USER_ENTERED` `RAW` ## Landing Pages & Domains 7 `create_landing_page` write Generate an AI landing page hosted on your custom domain (135 credits) Parameters `title` string required Page title / brand name shown in hero and browser tab `prompt` string required Description of the landing page (what the product/service does, target audience, key benefits). Max 5000 characters. `cta_url` string required URL the CTA button links to (e.g., signup page) `brand_url` string Authoritative website for the brand represented by the page. Use this for client pages in agency workspaces — cta\_url/form/calendar destinations are NOT treated as brand identity. Falls back to the authenticated workspace website if omitted. `cta_text` string CTA button text (default: "Get Started") `style` string Design style (default: modern) `modern` `minimal` `bold` `slug` string URL slug (auto-generated from title if omitted). Max 128 chars. `lead_form` string Optional JSON config to embed a lead-capture form as the page's primary conversion action. Pass "{}" for the default form. An email field is always required. Submissions are stored per page and routed to connected CRMs; UTM/click-id attribution is captured automatically at serve time. `publish_landing_page` write Publish a landing page draft, making it live at syntermedia.ai/lp/{slug} (free) Parameters `slug` string required The slug of the landing page to publish (returned by create\_landing\_page) `update_landing_page_tracking` write Set landing-page conversion pixels and the Google Ads conversion label, and wire a Fillout embed so form submits count as campaign conversions and route to HubSpot. Free edit of an existing page you own. Returns google\_send\_to plus a Fillout webhook URL. Parameters `slug` string required The landing page slug to update `google_conversion_label` string Google Ads conversion label (the part after AW-.../) `fillout_form_id` string Fillout form id (the /t/{id} token) `google_pixel_id` string Google tag id (AW-...) `meta_pixel_id` string Meta pixel id `linkedin_pixel_id` string LinkedIn partner id `reddit_pixel_id` string Reddit pixel id (a2\_...) `rotate_webhook_token` boolean Issue a new Fillout webhook token `update_landing_page_html` write Update the HTML content of an existing landing page you own without AI regeneration (free edit). Use this to patch copy, add logos, or tweak layout after reviewing a draft. If the slug does not exist yet, this creates a new hosted page and costs 135 credits (same as create\_landing\_page). Parameters `slug` string required The landing page slug to update `html_content` string required Full HTML string to replace the current content `upload_landing_page_html` write Upload raw HTML as a new landing-page draft (no AI generation). Use to import an exported .html file or hand-written markup (embedded forms, Cal.com embeds, thank-you pages all supported). Then publish\_landing\_page and attach it to an ad campaign. Creating a new hosted page costs 135 credits (same as create\_landing\_page); re-uploading to a slug you already own is a free edit. Parameters `html_content` string required Full HTML string (or a fragment — it will be wrapped). `title` string Optional page title (defaults to "Uploaded Landing Page"). `slug` string Optional URL slug (lowercase, hyphens). Auto-generated from the title + date when omitted. Re-uploading with a slug you own updates that page in place. `setup_custom_domain` write Assign a custom domain (e.g. go.acme.com) to a published landing page. Requires an active paid or pay-as-you-go plan. No credits charged. Parameters `slug` string required The landing page slug `domain` string required Custom domain (e.g. "go.acme.com", "landing.mybrand.com") `verify_custom_domain` read-only Check if DNS is configured for a landing page's custom domain. Free — no credits charged. Parameters `slug` string required The landing page slug ## Audiences & Targeting 7 `sync_audience` write Upload audience data (emails, phones, MAIDs, companies, a public CSV URL, or a private artifact id) to ad platforms. Supports inline pre-hashed identifiers, artifact-id references for >1k entries, and batch mode for Clay.com row-by-row workflows (staging is free, upload costs 10 credits — only on success). Requires i\_have\_consent=true confirming the customer has lawful basis under GDPR/CCPA and platform Customer Match terms for every identifier in the audience. Parameters `platform` string required Target platform - "google", "meta", "linkedin", etc. `audience_name` string Name for the audience (e.g., "Clay - Q1 Enterprise Leads") `emails` string Comma-separated raw email addresses (will be SHA-256 hashed before upload). `hashed_emails` string Comma-separated SHA-256 hashed emails (lowercase hex). `phones` string Comma-separated raw phone numbers (will be normalized + SHA-256 hashed). `hashed_phones` string Comma-separated SHA-256 hashed phones (lowercase hex). `mobile_ids` string Comma-separated mobile advertising IDs (IDFA / GAID, raw). Meta and TikTok require raw MADIDs (not hashed). `hashed_mobile_ids` string Comma-separated SHA-256 hashed mobile IDs (Reddit/TikTok only — Meta drops these with a warning). `company_names` string Comma-separated company names (LinkedIn only) `company_domains` string Comma-separated company domains (Google B2B targeting, LinkedIn) `csv_path` string Local path to an audience CSV. Best for local/stdio MCP setups that share a filesystem with the file. `csv_url` string Public HTTP(S) URL to an audience CSV. Best for hosted MCP calls to mcp.syntermedia.ai. `emails_artifact_id` string Opaque id referring to a private payload of raw emails (one per line). Use for >1k entries. `hashed_emails_artifact_id` string Same as above but for SHA-256 hashed emails. `phones_artifact_id` string Artifact id for raw phone numbers (one per line, country-code prefixed). `hashed_phones_artifact_id` string Artifact id for SHA-256 hashed phones. `mobile_ids_artifact_id` string Artifact id for raw mobile advertising IDs (IDFA / GAID). Meta only. `audience_type` string Default: EMAIL. Pre-hashed values are detected automatically from CSV column headers. `EMAIL` `COMPANY` `LOOKALIKE` `account_id` string Optional specific ad account ID `batch_action` string "stage" to add items to a batch (free), "finalize" to upload all staged items (10 credits, only on success). `stage` `finalize` `batch_key` string Required with batch\_action - stable identifier for the batch (e.g., "q1\_leads\_feb2026") `customer_file_source` string Meta only. Origin of the audience data. Default: USER\_PROVIDED\_ONLY. `USER_PROVIDED_ONLY` `PARTNER_PROVIDED_ONLY` `BOTH_USER_AND_PARTNER_PROVIDED` `i_have_consent` boolean Confirm the customer has lawful basis (GDPR Art. 6) and required consent under CCPA / Meta Custom Audience Terms / Google Customer Match Policy for every identifier in this audience. `stage_audience_artifact` write Stage a hashed-PII payload (newline-delimited identifiers) in Synter's private artifact store and return an opaque artifact\_id. Pass that id to sync\_audience via \*\_artifact\_id parameters. Free — no credits charged. Use this instead of pasting hashed identifiers as inline tool args when you have more than ~500 entries. Parameters `body` string required UTF-8 payload — for hashed-email/phone uploads, one SHA-256 hash per line (lowercase hex, 64 chars). For raw mobile advertising IDs (Meta), one MADID per line. Stored verbatim — pre-dedupe and pre-normalize before calling. `script_name` string Name of the script that will consume the artifact. Cross-checked on read so a leaked id can't be redirected to another script. `meta_ads_create_audience` `google_ads_create_customer_match` `google_ads_create_standard_retargeting_audiences` `google_ads_create_website_visitor_audience` `microsoft_ads_create_audience` `tiktok_ads_create_audience` `x_ads_create_audience` `ttl_seconds` number How long the artifact lives before being swept (default 1 hour, max 24 hours). `i_have_consent` boolean Confirm the customer has lawful basis (GDPR Art. 6) and required consent under CCPA / Meta / Google Customer Match terms for every identifier in \`body\`. `create_campaign_for_audience` write Create a campaign targeting an existing audience (200 credits — campaign launch) Parameters `platform` string required Only "linkedin" is supported today (a single script creates the Campaign Group + Campaign + ad and attaches the audience atomically). For every other platform, create the campaign/ad group with that platform's native tool, then call attach\_audience() to target it. `campaign_name` string required Name for the campaign `audience_id` string required The audience ID from sync\_audience() result `daily_budget` number Daily budget in USD (default: $25) `headline` string Ad headline text `description` string Ad description text `final_url` string Landing page URL `image_url` string URL of the creative image asset. Required for LinkedIn. `account_id` string Optional specific ad account ID `list_audiences` read-only List existing audiences on an ad platform (2 credits) Parameters `platform` string required Ad platform `google` `linkedin` `meta` `reddit` `tiktok` `microsoft` `trade_desk` `stackadapt` `amazon_dsp` `x` `account_id` string Optional specific ad account ID `delete_audience` write Delete (or close) a custom/matched audience from an ad platform by audience\_id. Use to clean up stale or errored (e.g. NOT\_ENOUGH\_MATCHES) audiences. Reddit and Google supported today. This is irreversible. Parameters `platform` string required Reddit or Google. Note: Google Ads has no hard-delete API for user lists, so this closes the list instead. `reddit` `google` `audience_id` string required The platform audience id to delete (e.g. Reddit "ca.123…", Google's numeric user list ID). `account_id` string Optional specific ad account ID. `attach_audience` write 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. Parameters `campaign_id` string required The campaign to modify. For linkedin and stackadapt this IS the targeting entity. For other platforms, audiences attach at the ad-group/ad-set/line-item level — pass that ID via ad\_group\_id instead. `audience_id` string The platform's audience/user-list/custom-audience ID to attach (provide this OR segment\_urn, linkedin only). `segment_urn` string adSegment URN to attach (linkedin only, alternative to audience\_id). `mode` string Default: add (merge in). Not every mode is supported on every platform yet. `add` `remove` `replace` `facet` string LinkedIn-only targeting facet. Default: audienceMatchingSegments `audienceMatchingSegments` `dynamicSegments` `platform` string Ad platform. `linkedin` `google` `meta` `tiktok` `reddit` `microsoft` `stackadapt` `x` `ad_group_id` string The ad group / ad set / line item ID to target, for platforms that attach audiences below the campaign level. Falls back to campaign\_id if omitted. `build_lookalike_audience` write Build ML-based lookalike audience from seed customers (10 credits) Parameters `seed_audience` string required Source audience ID or name `platform` string required Target platform (GOOGLE, META, etc.) `expansion_factor` number How much to expand (1-10x seed size) ## Guardrails & Alerts 4 `set_campaign_guardrail` write Arm or replace a campaign-specific automatic pause rule. Google Ads rules pause one exact campaign only after both the minimum age and spend threshold are met with zero conversions on one exact verified truth conversion action. Configuration is standing authorization for the future pause. Free. Parameters `account_id` string required `campaign_id` string required `conversion_action_id` string required `spend_threshold` number required `min_age_hours` number `platform` string `list_campaign_guardrails` read-only List campaign-specific automatic pause guardrails and their latest spend, conversion, decision, and verified-pause state. Free. No parameters required. `disable_campaign_guardrail` write Disable a campaign-specific automatic pause guardrail. This does not change the campaign's current platform status. Free. Parameters `guardrail_id` number required `set_spend_alert` write Set a weekly ad spend alert — notifies via email, Slack, SMS, and/or WhatsApp when total spend exceeds threshold (free) Parameters `threshold` number required Weekly spend threshold in USD (e.g. 10000) `email` string required Email address for email alerts `phone` string Phone number in E.164 format for SMS/WhatsApp (e.g. +15551234567) `notify` string Comma-separated channels to use: email, slack, sms, whatsapp (default: all) `platforms` string Comma-separated platforms to check (default: google,meta,reddit) ## Autonomous Agents 2 `create_autonomous_schedule` write 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 (5 credits). Parameters `project_id` string Synter campaign/project UUID to scope the agent to. Optional but recommended. `skill_slug` string Autonomous-capable skill to run. Defaults to "campaign-health-monitoring". `cron_expression` string 5-field cron. Defaults to "0 \*/4 \* \* \*" (every 4h). `name` string Optional human label for the schedule. `description` string Optional description. `platform` string Optional platform scope (e.g. "google", "meta"). `approval_mode` string Default "none" for the pacing monitor, "required" otherwise. `required` `optional` `none` `notify_channels` string Comma-separated channels: email, slack, whatsapp, in\_app. Defaults to "slack". `notify_on_completion` boolean Send a notification when each run finishes. `organization_id` number Optional workspace id (defaults to the API key's org). `list_autonomous_schedules` read-only List the workspace's autonomous agent schedules (pacing/health monitors, budget optimizers) with cadence, approval mode, next run, and latest run status (free). Parameters `organization_id` number Optional workspace id (defaults to the API key's org). ## Skills 2 `list_skills` read-only List public Synter execution skills and platform SOPs (free) No parameters required. `load_skill` read-only Load a public Synter execution skill or platform SOP (free) Parameters `skill_slug` string required The slug of the skill to load (e.g., 'customer-facing-product-updates') ## Growth & Company Research 12 `growth_discover` read-only Discover ICP prospects from RevenueBase (verified B2B contacts for ad audiences) or hiring companies via Sumble (outreach), plus listicle/podcast placements. (5 credits) Parameters `discover_type` string What to discover. "icp" (RevenueBase ICP contacts for ad audiences), "jobs" (hiring companies via Sumble), "listicles", "podcasts", or "all". `icp` `apollo` `jobs` `listicles` `podcasts` `all` `query` string Comma-separated job-title keywords for "icp", or the job-title search query for "jobs". `limit` number Max results (icp capped at 100000). `min_employees` number Min company size for "icp" (default: 50). `max_employees` number Max company size for "icp" (default: 2000). `industries` string Optional comma-separated industry keywords for "icp". `geos` string Optional comma-separated country/region names for "icp". `job_levels` string Optional comma-separated exact seniority levels for "icp". Defaults to senior VP+ when neither titles nor levels are given. `decision_makers_only` boolean For "icp", only return Priority-1 decision makers (default False). `growth_enrich` read-only Enrich a domain with competitive intelligence — SpyFu PPC data, BuiltWith tech stack, Hunter emails, Firecrawl headline. (5 credits) Parameters `domain` string required Domain to enrich (e.g., "acme.com") `growth_run_pipeline` write Run the full growth pipeline — discover leads, enrich, generate outreach. (10 credits) Parameters `mode` string Pipeline mode `discover` `followups` `x-scan` `x-post` `listicle-discover` `query` string Job title search query `limit` number Max leads per run `channel` string Outreach channel `email` `both` `builtwith_get_account_usage` read-only BuiltWith account capability and usage snapshot — plan limits, rate limits, credit usage. (2 credits) No parameters required. `builtwith_get_domain_technologies` read-only BuiltWith domain tech stack lookup — ad pixels, CRM, analytics, CMS/ecommerce tools, spend/meta. (2 credits) Parameters `domain` string required `live_only` boolean `include_trust` boolean `include_raw` boolean `builtwith_get_technology_changes` read-only BuiltWith Change API — recent technology additions/removals for domains, with business context. (2 credits) Parameters `domains` string\[\] required `since` string `builtwith_get_trust_signals` read-only BuiltWith Trust API — domain trust, ecommerce/payment, parked/status, spend and live-tech signals. (2 credits) Parameters `domain` string required `builtwith_get_sites` read-only Find websites by BuiltWith technology, natural language audience, or keyword search. (2 credits) Parameters `tech` string `query` string `keyword` string `countries` string\[\] `other_techs` string\[\] `limit` number `offset` string `include_meta` boolean `commit` boolean `spend` string `revenue` string `employees` string `builtwith_product_search` read-only BuiltWith Product API — ecommerce shops and product listings matching a product query. (2 credits) Parameters `query` string required `limit` number `page` number `builtwith_company_to_url` read-only BuiltWith Company to URL API — resolve company names to candidate website domains. (2 credits) Parameters `company` string required `builtwith_get_domain_keywords` read-only BuiltWith Keywords API — keywords associated with a website domain. (2 credits) Parameters `domain` string required `find_audience_signals` read-only Find audience signals/clusters in Watt Data from a natural-language description (e.g. 'RevOps leaders at B2B SaaS companies using Salesforce'). Returns matching semantic clusters to use as targeting signals. Requires WATTDATA\_API\_KEY. Parameters `query` string required `max_results` number `entity_type` string `person` `business` ## Forecasting & Measurement 5 `forecast_campaign` read-only Forecast campaign KPIs (spend, CPA, ROAS, clicks, conversions) for 7-30 days with confidence intervals (2 credits) Parameters `metric` string KPI to forecast `spend` `cpa` `roas` `clicks` `conversions` `ctr` `cpc` `horizon` number Forecast horizon in days (7, 14, or 30) `campaign_id` string Optional specific campaign ID (forecasts all if omitted) `platform` string Optional platform filter (GOOGLE, META, LINKEDIN, etc.) `optimize_budget` write Cross-channel budget allocation using diminishing returns modeling (5 credits) Parameters `total_budget` number required Total daily budget in USD `target` string Optimization target - conversions or roas `constraints` string Optional JSON string with per-channel USD/day budget bounds. Schema: {"": {"min": , "max": }}. Must be valid JSON — do not pass natural language text. `test_creatives` write Start or check a multi-armed bandit creative experiment using Thompson sampling (3 credits) Parameters `campaign_id` string required Campaign ID to run the experiment on `platform` string required Ad platform (GOOGLE, META, etc.) `action` string start, status, or stop `start` `status` `stop` `reward_metric` string Metric to optimize - ctr, conversion\_rate, or roas `get_attribution` read-only Multi-touch attribution analysis using Markov chains (5 credits) Parameters `date_range` string `last_7_days` `last_30_days` `last_90_days` `conversion_type` string Optional filter for specific conversion type `measure_incrementality` read-only Measure incremental ad impact via geo-lift or synthetic control (5 credits) Parameters `platform` string required Ad platform (GOOGLE, META, etc.) `method` string geo\_lift or synthetic\_control `geo_lift` `synthetic_control` `test_regions` string Comma-separated test region codes `control_regions` string Comma-separated control region codes ## Creative Generation 9 `create_image` write Generate an AI image for ad creatives using Imagen 4, Flux, or Stable Diffusion. (80 credits) Parameters `prompt` string required Image generation prompt (be specific about style, layout, colors). `size` string Image dimensions. Defaults to 1200x628 when omitted. `provider` string Image model — imagen (default), flux, sdxl. `name` string Optional asset name for the artifact library. `generate_video` write Generate an AI video ad using Veo, Runway, or Luma. Great for YouTube and social ads. Parameters `product_name` string required Product or brand name. `key_benefit` string required Main value proposition. `concept` string Generic video framework name from the Node MCP contract. `target_audience` string Optional audience persona. `duration` number Optional video duration in seconds. `provider` string Optional video provider override. `create_image_asset` write Generate display/social ad images. Use mode='system-graphic' for bold text-heavy creatives (requires headline). AI mode (default) for photo/illustration backgrounds. Auto-sizes for target platform (80 credits) Parameters `prompt` string required Image description (ai mode) or thematic context hint (system-graphic mode). `platform` string Target platform. Determines default sizes. Omit to use a single 1200x628 image. `google` `meta` `linkedin` `reddit` `tiktok` `x` `microsoft` `spotify` `name` string Asset name for the artifact library. `provider` string AI image model for mode="ai" — imagen (default), openai (best for text rendering), flux, sdxl. Ignored in system-graphic mode. `sizes` string Override platform defaults with comma-separated WIDTHxHEIGHT (e.g. "1200x628,1080x1080"). `negative_prompt` string What to avoid in the image (ai mode only). `headline` string Required for system-graphic mode. Strongly recommended for all LinkedIn/social ads. `cta` string CTA button text or URL (e.g. "Book a Demo"). Auto-picked from brand if omitted. `subheadline` string Optional body text below the headline. `mode` string Default: "ai". Use system-graphic for copy-led creatives. `ai` `system-graphic` `eyebrow` string Optional short uppercase label rendered above the headline (system-graphic only). `stat` string Optional accent stat tile, e.g. "98%+" or "10×" (system-graphic only). `creative_brief` string Creative System v1 brief as a JSON string, or freeform prose. Controls theme/accent/fonts. `create_video_ad` write Generate AI video ads using Veo, Luma, Runway, or HeyGen with creative concept templates (130–1100 credits) Parameters `concept` string required Creative concept. `ugc-testimonial` `pas` `vs-alternative` `made-easy` `before-after` `hook-demo-cta` `product-demo` `social-proof` `product` string required Product or brand name (e.g. "Synter - AI Ad Platform"). `platform` string Target platform for sizing. Default: tiktok. `tiktok` `instagram_reels` `youtube_shorts` `youtube` `linkedin` `meta_feed` `twitter` `reddit` `provider` string Video model. Veo is the default recommended provider. `veo` `luma` `runway` `heygen` `pain_point` string The viewer's pain point (for ugc-testimonial and pas concepts). `benefit` string Key benefit your product delivers. `cta` string Call-to-action text. `name` string Asset name for the artifact library. `target_audience` string Who the ad is targeting (for persona/hook customization). `generate_ugc_ad` write Generate UGC-style video ads with AI avatars (fal Aurora / HeyGen) (900 credits) Parameters `product` string required Product or brand name (e.g. "Synter"). `persona` string Avatar persona. Determines the script tone and avatar selection if no custom script is given. `b2b` `agency` `performance` `ecommerce` `script` string Custom script for the avatar to speak. If omitted, a persona script is generated. `avatar` string Avatar name (default: asha). `asha` `carter` `trevin` `aspect_ratio` string Output format. Default: 9:16 (vertical). `9:16` `1:1` `16:9` `name` string Asset name for the artifact library. `create_ad_copy` write Generate text ad copy (headlines, descriptions, CTAs) for any platform using Claude (5 credits) Parameters `platform` string required Target platform. `google` `meta` `linkedin` `reddit` `microsoft` `tiktok` `x` `spotify` `product` string required Product name and brief description (e.g. "Synter - AI agent operator for ads"). `landing_page_url` string Destination URL for context on value props. `tone` string Writing tone. Default: professional. `professional` `conversational` `urgent` `playful` `technical` `educational` `headlines_count` number Override the platform default headline count. `descriptions_count` number Override the platform default description count. `keywords` string Comma-separated keywords to weave into the copy. `cta` string Preferred CTA phrasing (e.g. "Book a demo"). `generate_voice_ad` write Generate a voice-over ad with an AI avatar speaking your script (fal Aurora / HeyGen) (900 credits) Parameters `script` string required The spoken script for the avatar (15–60 seconds, ~40–150 words). `product` string required Product name (used for persona context if the script is short). `persona` string Avatar tone context. Default: b2b. `b2b` `agency` `performance` `ecommerce` `avatar` string Avatar name. Default: asha. `asha` `carter` `trevin` `name` string Asset name for the artifact library. `list_creative_assets` read-only List generated creative assets (images and videos) from your artifact library, with approval status and platform-deployment mapping (free) Parameters `asset_type` string Filter by type. Omit for all types. `IMAGE` `VIDEO` `limit` number Maximum number of results per page (default 20, max 100). `offset` number Number of newest assets to skip, for pagination (default 0). `upload_creative` write Upload a generated creative asset to an ad platform and attach it to a campaign (5 credits) Parameters `asset_url` string required URL of the asset to upload (from create\_image\_asset / create\_video\_ad). `platform` string required Target platform. `google` `meta` `linkedin` `tiktok` `reddit` `campaign_id` string required Campaign ID to attach the creative to. `asset_type` string Default: IMAGE. `IMAGE` `VIDEO` `ad_group_id` string Ad group / ad set ID (required for most platforms). `name` string Name for the uploaded creative asset. `headline` string Ad headline text (required for LinkedIn). `description` string Ad body / description text. `landing_url` string Destination URL for WEBSITE\_VISIT LinkedIn campaigns. `form_id` string LinkedIn Lead Gen Form ID — when provided, routes to the LeadGen creative script. `account_id` string Specific ad-account ID to target. Required when the campaign lives in a non-primary account. ## Campaign Plans 7 `create_campaign_plan` write Create or update a campaign launch plan (5 credits). Use plan\_key for idempotency. Parameters `plan_key` string required Unique idempotency key (e.g. "zeroclick-q2-2026") `title` string required Human-readable plan title `brief_json` string Optional JSON string (or already-parsed object) with campaign brief details. `upsert_plan_entity` write Add or update an entity (campaign, ad, tweet, go\_link, etc.) within a campaign plan (2 credits). Parameters `plan_id` string required The plan ID (from create\_campaign\_plan) `logical_key` string required Unique key within the plan (e.g. "x/campaign/brand-awareness") `platform` string required Platform identifier (x, reddit, meta, google, linkedin, gtm, synter) `entity_type` string required Type of entity (campaign, ad\_group, ad, tweet, promoted\_tweet, website\_card, post, pixel\_tag, go\_link) `remote_id` string Platform-specific entity ID (after creation) `remote_ref_json` string JSON with additional platform references `metadata_json` string JSON with entity-specific metadata (activate\_script, activate\_args, pause\_script, etc.) `desired_state` string Target state for launch `paused` `active` `parent_logical_key` string Logical key of parent entity (for dependency ordering) `provider_account_id` string Platform ad account ID `publish_plan_document` write Publish a campaign plan for review, generating a shareable URL (2 credits). Moves the plan from building/draft to in\_review; a reviewer approves it at share\_url, then execute\_campaign\_plan launches it. Runs plan QA (incl. the live tracking preflight) and pins the scorecard to the document. Parameters `plan_id` string required The plan ID to publish `expected_version` integer The plan version you last read (optimistic concurrency). Omit to publish the current version; a stale value returns code=PLAN\_VERSION\_MISMATCH. `execute_campaign_plan` write Launch an approved campaign plan — activates all entities across platforms in dependency order (10 credits). Parameters `plan_id` string required The plan ID to execute `execute_token` string required The execute token (from create\_campaign\_plan response) `get_plan_execution` read-only Get execution status and per-entity step results for a campaign plan launch (free). Parameters `plan_id` string required The plan ID to check `get_campaign_plan` read-only Fetch a campaign plan with its entities, budgets, desired states, and review/execution status (free). Parameters `plan_id` string required `setup_google_ads_trial_funnel` write Set up a complete Google Ads trial acquisition funnel: branded Search campaign (maximize clicks, builds conversion history), PMax campaign (maximize conversions), and Display retargeting campaign — all pointing to a Synter-hosted landing page. Requires an active Google Ads connection. (15 credits) Parameters `landing_page_url` string required Synter LP URL (e.g. "https://syntermedia.ai/lp/my-saas") `business_name` string required Brand name shown in ads (max 25 chars) `trial_days` number Length of free trial to promote in ad copy (default: 30) `total_daily_budget` number Total daily budget across all campaigns in USD (default: $50) `month_label` string Label for campaign names e.g. "Apr 2026" (defaults to current month) ## Documents & Notifications 3 `create_document` write Create a document in the Campaign IDE editor (free). Perfect for reports, audits, strategy docs, and plans that can be collaboratively edited. Parameters `title` string required Document title (e.g., "Q1 Performance Report", "Google Ads Audit") `content` string required Document content in markdown format. Supports headings, bullet lists, numbered lists, bold, horizontal rules, and tables. `organization_id` number Optional workspace ID to create the document in. `delete_document` write Delete a Campaign IDE document by id or uuid (e.g. to remove a stale or duplicate doc). Only deletes documents you own. Parameters `document_id` number `uuid` string `send_slack_message` write Post a message to a Slack channel via the Synter bot. channel = a channel ID (Cxxxx) or #name. The bot can only post to channels it's a member of. Parameters `channel` string required `text` string required ## LLM & Brand Visibility (GEO) 13 `get_llm_visibility_overview` read-only Get workspace LLM visibility overview — Share of Voice (SOV), citations, brand mentions, and top opportunities across ChatGPT, Claude, Perplexity, and AI Overviews. Parameters `project_id` string Optional project ID filter `days` number Lookback window in days (default: 30) `list_llm_visibility_prompts` read-only List tracked commercial buying prompts and newest per-engine AI answer evidence (ChatGPT, Claude, Perplexity). Parameters `project_id` string Optional project ID filter `search` string Optional prompt search filter `active_only` boolean Filter for active prompts only (default: true) `limit` number Max items to return (default: 50) `list_llm_visibility_sightings` read-only List observed competitive ChatGPT ads, Reddit citations, YouTube citations, and web citations. Parameters `project_id` string Optional project ID filter `sighting_type` string Optional filter by sighting type (e.g., 'chatgpt\_ad') `limit` number Max items to return (default: 50) `list_llm_visibility_opportunities` read-only List ranked LLM visibility opportunities, missing citations, and actionable recommendations. Parameters `project_id` string Optional project ID filter `status` string Filter by status (e.g. 'open', 'completed') `limit` number Max items to return (default: 50) `recommend_llm_visibility_strategy` read-only Generate Generative Engine Optimization (GEO) content strategies, PR drafts, schema markup, and outreach tactics. Parameters `project_id` string Optional project ID filter `prompt_id` string Optional prompt ID filter `focus_area` string Strategy focus area (e.g. 'all', 'wikipedia', 'listicles') `limit` number Max recommendations to return (default: 10) `discover_llm_visibility_prompts` read-only Discover high-intent B2B commercial buying prompts across Evaluation, Comparison, Pricing/ROI, and Feature Verification stages. Parameters `project_id` string Optional project ID filter `domain` string Target domain to discover prompts for `competitors` string\[\] List of competitor domains `icp_persona` string Target ICP persona `auto_seed` boolean Automatically seed discovered prompts into tracking (default: false) `audit_llm_crawler_readiness` read-only Audit AI crawler accessibility (GPTBot, ClaudeBot, PerplexityBot, Google-Extended) and generate custom llms.txt and robots.txt. Parameters `domain` string required Target domain to audit (e.g. 'example.com') `check_llms_txt` boolean Check llms.txt availability (default: true) `run_llm_visibility_scan` write Trigger an on-demand LLM visibility scan across AI engines for a project. Parameters `project_id` string Optional project ID `idempotency_key` string Optional idempotency key to prevent duplicate scans `draft_wikipedia_article` write Generate NPOV-compliant Wikipedia article draft and WP:PAID COI disclosure for Wikipedia AFC submission. Parameters `brand_name` string required Brand name `domain` string required Official domain `description` string Company overview and history `founding_year` number Founding year `headquarters` string Headquarters location `citations` string\[\] List of independent secondary source URLs `sync_wikidata_entity` write Generate structured Wikidata entity payload (P31, P856, P571) for LLM knowledge graph indexing. Parameters `brand_name` string required Brand name `domain` string required Official domain `founding_year` number Founding year `headquarters` string Headquarters location `generate_jsonld_schema_markup` write Generate valid schema.org JSON-LD scripts (Organization, SoftwareApplication, Product, FAQPage) for LLM crawlers. Parameters `brand_name` string required Brand name `domain` string required Official domain `description` string Brand description `pricing_summary` string Pricing overview `same_as_urls` string\[\] Social and directory profile URLs `faqs` object\[\] FAQ question/answer pairs `find_llm_citation_listicles` read-only Find media listicles and roundups cited by ChatGPT and Perplexity, and generate outreach pitch briefs. Parameters `buying_prompt` string required Target commercial buying prompt `brand_name` string required Your brand name `domain` string Your official domain `competitors` string\[\] Competitor brand names or domains `audit_review_site_profiles` read-only Audit brand profile completeness across G2, Capterra, Trustpilot, and Gartner for LLM answer indexing. Parameters `brand_name` string required Brand name `domain` string required Official domain `review_platforms` string\[\] List of review platforms to audit (e.g. \['g2', 'capterra'\]) ## Account Structure Hygiene 2 `audit_account_structure` read-only 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. Parameters `platform` string reddit (full depth) or google (campaign-level). Default reddit. `reddit` `google` `account_id` string Optional ad account ID; falls back to the connected account. `account_name` string Optional friendly account name selector when multiple are connected. `repair_account_structure` write Repair an ad account's campaign structure. Dry-run by default — reports what it would archive and changes nothing. Pass apply=true (only after customer approval) to archive duplicate clutter (keeps the earliest of each same-name set). Ad groups with empty targeting are flagged, never auto-archived. Reddit apply is fully supported; Google apply is dry-run planning only. Free — no credits. Parameters `platform` string reddit (full apply) or google (dry-run planning only). Default reddit. `reddit` `google` `account_id` string Optional ad account ID; falls back to the connected account. `account_name` string Optional friendly account name selector when multiple are connected. `apply` boolean False (default) = dry run, writes nothing. True = archive the duplicate clutter listed in the plan. Requires customer approval. ## Advanced (Script Library) 3 `execute` write Execute any Synter action: create campaigns, generate AI images/videos, 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": ""} to hard-enforce target identity for updates. Parameters `action` string required The action to execute (e.g., "create\_image", "google\_ads\_create\_search\_campaign"). Must be a name registered in list\_available\_scripts — execute rejects unknown actions. `platform` string Target platform for credential injection (auto-detected from action name if not provided). `args` string\[\] Command-line arguments as a list (e.g., \["--prompt", "Modern SaaS dashboard"\]) `account_id` string Optional specific ad account ID to use `dry_run` boolean Optional validation-only mode. Defaults to false so approved actions execute once. `customer_id` string Alias for account\_id (the native run\_ppc\_script spelling); ignored when account\_id is set. `expected_names` object Confirm-don't-assume guard. Dict of target-id flag -> expected name fragment, e.g. {"campaign-id": "Brand\_Leaders"}. On dry\_run=false the live entity names are resolved and matched; any mismatch refuses execution. `list_available_scripts` read-only See all available PPC scripts (free) No parameters required. `inspect_script` read-only Get the exact arguments, choices, required fields, and output fields for a Synter action before executing it (free). Returns the script's docstring, parsed argument list, and approximate output schema — not its source code. Parameters `script_name` string required ## Example usage Just ask naturally — your AI assistant picks the right tool: | You say | Tool used | | --- | --- | | What's my Google Ads spend this week? | pull_google_ads_performance | | Show all my active campaigns | list_campaigns | | Pause the Brand Search campaign | pause_campaign | | Create a Search campaign for our new product | execute | | Generate a hero image for my landing page | create_image | | How should I allocate budget across my channels? | optimize_budget | | Is the pixel on my landing page actually mine? | verify_pixel_ownership | | Build a lookalike audience from our best customers | build_lookalike_audience | Was this page helpful? YesNo [Previous Configuration](https://docs.syntermedia.ai/mcp/configuration) [Next Rate Limits & Credits](https://docs.syntermedia.ai/mcp/rate-limits) --- Source: https://docs.syntermedia.ai/mcp/tools Full docs as one file: https://docs.syntermedia.ai/llms-full.txt