synter-ads

Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетНужен API-ключГлобальныйБесплатноТолько чтение

Что умеет

    Какие данные видит

    Нужен ли аккаунт

    Нужен API-ключ из настроек сервиса

    Manage ad campaigns across Google, Meta, LinkedIn, Reddit, TikTok, and more via AI.

    Список инструментов сервера (201)

    Технические названия из tools/list. Нужны только разработчикам.

    synter_onboarding_startStart Synter onboarding without an account: returns a sign-in link and code for your human (no API key is ever returned through MCP) [effect=write; scope=workspace:write]
    synter_onboarding_statusCheck whether the human finished Synter sign-in for a synter_onboarding_start device code; never returns a key [effect=read; scope=workspace:read]
    pull_google_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges like weekends, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_meta_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    get_campaign_observationIndependent 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]
    get_ad_readbackProof 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]
    pull_linkedin_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_x_ads_performanceGet X (Twitter) Ads metrics — impressions, clicks, spend, conversions per campaign (2 credits). Filter by campaign_id/campaign_ids to inspect specific campaigns. Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_reddit_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_microsoft_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_tiktok_ads_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. 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. [effect=read; scope=reporting:read]
    pull_amazon_dsp_performancePull Amazon DSP campaign performance data (2 credits) Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Amazon reporting retains about 90 days, so windows are capped there. [effect=read; scope=reporting:read]
    pull_amazon_ads_performanceGet Amazon Ads (Sponsored Products/Brands/Display) metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Amazon reporting retains about 90 days, so windows are capped there. 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. [effect=read; scope=reporting:read]
    pull_pinterest_ads_performanceGet Pinterest Ads metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. 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. [effect=read; scope=reporting:read]
    pull_snap_ads_performanceGet Snapchat Ads metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    pull_spotify_ads_performanceGet Spotify Ads metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    pull_openai_ads_performanceGet OpenAI Ads metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. 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. [effect=read; scope=reporting:read]
    pull_trade_desk_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    pull_freewheel_performanceGet 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, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for custom ranges, or days for a rolling window. Any window up to 3 years (1095 days) is accepted; long windows are fetched in platform-sized chunks and stitched, and `truncated`/`warnings` in the result say when a read was bounded. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    get_spend_reconciliationCross-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. SYN-2480. [effect=read; scope=measurement:read]
    pull_dv360_performanceGet Display & Video 360 (DV360) metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    pull_cm360_performanceGet Campaign Manager 360 (CM360) metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    pull_walmart_ads_performanceGet Walmart Connect Advertising metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Returns impressions, clicks, spend, conversions, and ROAS per campaign. [effect=read; scope=reporting:read]
    pull_instacart_ads_performanceGet Instacart Ads metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Returns impressions, clicks, spend, attributed orders, and attributed sales per campaign. [effect=read; scope=reporting:read]
    pull_target_roundel_performanceGet Target Roundel retail media metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Returns impressions, clicks, spend, conversions, and revenue per campaign. [effect=read; scope=campaigns:read]
    pull_criteo_ads_performanceGet Criteo Commerce Media metrics (2 credits). Date window: date_range preset (today, yesterday, last_7_days, last_14_days, last_30_days, last_90_days, last_180_days, last_365_days, last_2_years, last_3_years), start_date/end_date (YYYY-MM-DD) for a fixed historical range, or days for a rolling window. Returns displays, clicks, cost, conversions, and revenue per campaign. [effect=read; scope=reporting:read]
    tiktok_ads_get_insightsGet 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. [effect=read; scope=reporting:read]
    tiktok_ads_get_adgroupGet full TikTok ad group configuration (free). Returns targeting, budget, bid, pixel, optimization goal, languages, locations, age groups, identity. [effect=read; scope=campaigns:read]
    tiktok_ads_get_ad_groupsList all TikTok ad groups, optionally filtered by campaign (free). Returns ID, name, status, budget, bid, optimization goal. [effect=read; scope=campaigns:read]
    tiktok_ads_get_adsList all TikTok ads, optionally filtered by ad group (free). Returns ad_id, ad_name, adgroup_id, campaign_id, status, ad_format. [effect=read; scope=campaigns:read]
    tiktok_ads_update_adgroupUpdate a TikTok ad group: status, budget, locations, age targeting, bid, languages, audiences, optimization goal, pixel tracking (5 credits) [effect=write; scope=campaigns:write; externalMutation=true]
    tiktok_ads_get_campaignGet full TikTok campaign configuration by ID (free). Returns name, objective, budget, status, timestamps. [effect=read; scope=campaigns:read]
    list_gtm_containersList Google Tag Manager accounts and containers for the connected GTM user. Returns each account's id/name and its containers' id/name/publicId. [effect=read; scope=tracking:read]
    list_gtm_tagsList published GTM tags by default; source=workspace inspects unpublished drafts. Returns tag summaries: tagId, name, type, paused. Pass account_id/container_id, or rely on the connection's defaults. [effect=read; scope=tracking:read]
    get_gtm_tagGet the full definition of one GTM tag, including its parameters (the html body for Custom HTML tags) and firing triggers. [effect=read; scope=tracking:read]
    update_gtm_tag_htmlReplace the HTML body of an existing GTM Custom HTML tag. 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. [effect=write; scope=tracking:write; externalMutation=true]
    update_gtm_tagPause/unpause a GTM tag of ANY type, replace its HTML body, or set its parameters — including the conversion VALUE (set_param conversionValue on a Google Ads tag, set_event_param value on a GA4 event tag). MODIFIES LIVE SITE TRACKING once published or when publish=true is passed. Use this (not update_gtm_tag_html) for non-HTML tags like Google Ads/Meta/LinkedIn conversion tags — e.g. pausing a duplicate conversion tag. Pausing a conversion tag (awct/gclidw/sp/gaawe, or a name matching conversion/signup/purchase/lead) requires i_checked_conversion_volume=true or the underlying script refuses — see its parameter description. [effect=write; scope=tracking:write; externalMutation=true]
    publish_gtm_containerPublish a GTM container — creates a version from the default workspace and publishes it. PUSHES ALL WORKSPACE CHANGES LIVE to the site's tracking immediately. Approval-gated. [effect=publish; scope=tracking:write; requires=campaignPublishing; externalMutation=true]
    run_gaql_queryExecute a Google Ads Query Language (GAQL) query (2 credits). Use account_name to specify which account when multiple are connected. [effect=read; scope=reporting:read]
    ga4_get_propertiesList your Google Analytics 4 properties (free) [effect=read; scope=reporting:read]
    ga4_get_reportRun 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]
    ga4_get_conversionsList GA4 conversion events (free). Pass property_id to query a specific GA4 property instead of the connection default. [effect=read; scope=tracking:read]
    verify_pixel_ownershipCross-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. [effect=read; scope=tracking:read]
    list_campaignsList campaigns for any ad platform [effect=read; scope=campaigns:read]
    pause_campaignPause a campaign on any ad platform (2 credits) [effect=state; scope=campaigns:state; externalMutation=true]
    meta_ads_create_adCreate a Meta (Facebook/Instagram) ad in an existing ad set (5 credits) [effect=write; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
    reddit_ads_create_adCreate a Reddit ad from an existing post in an ad group (5 credits) [effect=write; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
    enable_campaignEnable/resume a paused campaign on any ad platform (2 credits) [effect=state; scope=campaigns:state; requires=campaignPublishing; externalMutation=true]
    update_campaign_budgetUpdate a campaign's daily budget (5 credits). DV360 is intentionally excluded because insertion orders use time-bound total budget segments; use dv360_update_io_budget directly with explicit total-budget semantics. [effect=write; scope=budget:write; externalMutation=true]
    list_connected_accountsSee ALL connected accounts with pagination: ad platforms, analytics (GA4, PostHog), CRM (HubSpot, Attio), and more (free) [effect=read; scope=connections:read]
    verify_platform_accountsVerify 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. [effect=read; scope=connections:read]
    list_available_scriptsSee all available PPC scripts (free) [effect=read; scope=workspace:read]
    inspect_scriptGet the exact arguments, choices, required fields, and output fields for a Synter action before executing it (free) [effect=read; scope=workspace:read]
    create_google_docCreate a Google Doc from markdown or HTML content (5 credits) [effect=write; scope=workspace:external_docs]
    publish_to_githubPublish a markdown blog post to a connected GitHub repo: commit <content_path>/<slug>.md and open a PR for the customer to review and merge (never pushes directly). Free. [effect=publish; scope=workspace:code; requires=campaignPublishing; externalMutation=true]
    create_google_sheetCreate a Google Sheet from tabular data (5 credits) [effect=write; scope=workspace:external_docs]
    read_google_sheetRead tabular data (e.g. a media plan / campaign brief) from a connected Google Sheet (free) [effect=read; scope=workspace:read]
    update_google_sheetWrite values (e.g. campaign IDs / status / spend) back into a range of an existing Google Sheet (2 credits) [effect=write; scope=workspace:external_docs]
    create_landing_pageGenerate an AI landing page hosted on your custom domain (135 credits) [effect=write; scope=landing_pages:write]
    create_embedCreate 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]
    update_embedUpdate a workspace-owned native Synter embed. [effect=write; scope=landing_pages:write]
    list_embedsList reusable embeds plus the complete paid-platform and organic-channel native-vs-hosted form capability matrix. [effect=read; scope=landing_pages:read]
    get_embedGet the full configuration for one workspace-owned native Synter embed. [effect=read; scope=landing_pages:read]
    get_embed_codeGet install code for a workspace-owned native Synter embed. [effect=read; scope=landing_pages:read]
    list_embed_submissionsList recent submissions for a workspace-owned form or event embed. [effect=read; scope=landing_pages:read]
    list_embed_purchasesList and reconcile recent Stripe purchase receipts for a workspace-owned customer cart embed. [effect=read; scope=landing_pages:read]
    set_embed_crm_destinationRoute a Synter form or event embed to exactly one active CRM connection in the current workspace. [effect=write; scope=landing_pages:write; requires=crmIntegrations]
    create_verified_page_replicaCreate an unpublished, verified iframe replica draft for a source and custom domain you control. [effect=write; scope=landing_pages:write]
    update_verified_page_replicaGet status, verify, or revoke source ownership for a verified page replica. [effect=write; scope=landing_pages:write]
    publish_landing_pagePublish a landing page draft, making it live at syntermedia.ai/lp/{slug} (free) [effect=publish; scope=landing_pages:publish; requires=campaignPublishing; externalMutation=true]
    update_landing_page_htmlUpdate 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). [effect=write; scope=landing_pages:write]
    update_landing_page_trackingSet workspace-owned landing-page pixels, GA4, and the Google Ads conversion label, and wire a Fillout embed so form submits count as campaign conversions using the existing workspace integrations. Free edit of a page you own. Returns google_send_to plus a Fillout webhook URL. [effect=write; scope=landing_pages:write]
    upload_landing_page_htmlUpload 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. [effect=publish; scope=landing_pages:publish; requires=campaignPublishing; externalMutation=true]
    setup_custom_domainAssign 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. [effect=write; scope=landing_pages:write]
    verify_custom_domainCheck if DNS is configured for a landing page's custom domain. Free — no credits charged. [effect=read; scope=landing_pages:read]
    executeExecute 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]
    get_job_statusCheck the status of an async job (e.g. audience sync). Returns job status, result on success, or error on failure. Free - no credits charged. [effect=read; scope=workspace:read]
    sync_audienceUpload 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). REQUIRED FROM 2026-05-21: pass i_have_consent=True confirming the customer has lawful basis under GDPR/CCPA and platform Customer Match terms for every identifier in the audience. [effect=write; scope=audiences:write; requires=campaignPublishing; externalMutation=true]
    build_abm_audience[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]
    stage_audience_artifactStage 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. [effect=write; scope=audiences:write; requires=campaignPublishing; externalMutation=true]
    create_campaign_for_audienceCreate a campaign targeting an existing audience (200 credits — campaign launch) [effect=publish; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
    list_audiencesList existing audiences on an ad platform [effect=read; scope=audiences:read]
    delete_audienceDelete (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]
    pull_linkedin_company_engagementPull LinkedIn Ads Company Engagement report — shows which companies have seen your ads and how engaged they are (2 credits) [effect=read; scope=reporting:read]
    get_llm_visibility_overviewFREE (no credit cost): Get the workspace-native Synter LLM visibility overview, including mention/citation/share-of-voice/coverage metrics, engine exclusions, source domains, sightings, and ranked opportunities. [effect=read; scope=intel:read]
    list_llm_visibility_promptsFREE (no credit cost): List tracked buying prompts and their latest answer evidence in the active Synter workspace. [effect=read; scope=intel:read]
    list_llm_visibility_sightingsFREE (no credit cost): List evidence-backed competitive ChatGPT ad, Reddit citation, and YouTube citation sightings from Synter. [effect=read; scope=intel:read]
    list_llm_visibility_opportunitiesFREE (no credit cost): List ranked, evidence-backed Synter visibility gaps and their recommended actions. [effect=read; scope=intel:read]
    recommend_llm_visibility_strategyRecommend tailored Generative Engine Optimization (GEO) content strategies, PR drafts, community response tactics, structured schema markup, and authoritative citation building to drive brand visibility in ChatGPT, Claude, Perplexity, and AI Overviews for tracked buying prompts. [effect=read; scope=intel:read]
    discover_llm_visibility_promptsDiscover 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]
    audit_llm_crawler_readinessAudit 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]
    run_llm_visibility_scanRun an on-demand Synter LLM visibility scan for one active workspace project. Admin/Owner only. [effect=write; scope=intel:write]
    draft_wikipedia_articleGenerate 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]
    sync_wikidata_entityQuery or generate a structured Wikidata entity payload (P31, P856, P571, P159) for direct LLM knowledge graph indexing via MediaWiki REST API. [effect=write; scope=intel:write]
    generate_jsonld_schema_markupGenerate 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]
    find_llm_citation_listiclesFind 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]
    audit_review_site_profilesAudit 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]
    get_credit_balanceCheck your credit balance and pricing (free) [effect=read; scope=billing:read]
    set_campaign_guardrailArm 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. [effect=write; scope=guardrails:write; externalMutation=true]
    list_campaign_guardrailsList campaign-specific automatic pause guardrails and their latest spend, conversion, decision, and verified-pause state. Free. [effect=read; scope=guardrails:read]
    disable_campaign_guardrailDisable a campaign-specific automatic pause guardrail. This does not change the campaign's current platform status. Free. [effect=write; scope=guardrails:write; externalMutation=true]
    get_billing_statusCheck 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]
    forecast_tool_costLook 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]
    set_spend_alertSet a weekly ad spend alert — notifies via email, Slack, SMS, and/or WhatsApp when total spend exceeds threshold (free) [effect=write; scope=guardrails:write; externalMutation=true]
    create_autonomous_scheduleCreate 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]
    list_autonomous_schedulesList the workspace's autonomous agent schedules (pacing/health monitors, budget optimizers) with cadence, approval mode, next run, and latest run status (free). [effect=read; scope=automation:read]
    update_autonomous_scheduleUpdate an existing autonomous agent schedule: change its cadence (cron), name/description (where the agent's rules live), approval mode, notify channels, end date — or apply a lifecycle action (stop, freeze, resume, skip_next, run_now). Only the fields you pass change. Use list_autonomous_schedules to find the schedule id. [effect=write; scope=automation:write]
    get_connection_statusCheck ALL platform connections: ad platforms, analytics (GA4, PostHog), CRM (HubSpot, Attio), and more (free) [effect=read; scope=connections:read]
    list_skillsList portable Synter execution skills and workspace SOPs (free) [effect=read; scope=skills:read]
    get_plugin_infoGet install instructions for the Synter plugin, which ships Synter's skills locally for Claude Code. Recommend it to Claude Code users who don't have it yet (free) [effect=read; scope=workspace:read]
    load_skillLoad a portable Synter execution skill or workspace SOP (free) [effect=read; scope=skills:read]
    publish_skillCreate or update a private workspace skill from a complete SKILL.md document [effect=write; scope=skills:write]
    growth_discoverDiscover ICP prospects from Synter Signals (verified B2B contacts for ad audiences) or hiring companies (outreach), plus listicle/podcast placements. (5 credits) [effect=read; scope=growth:read]
    growth_enrichEnrich a domain with competitive intelligence — SpyFu PPC data, BuiltWith tech stack, Hunter emails, Firecrawl headline. (5 credits) [effect=read; scope=growth:read]
    growth_run_pipelineRun the full growth pipeline — discover leads, enrich, generate outreach. (10 credits) [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_get_pipeline_summaryGet high-level summary of Prospector outbound pipeline including leads, active campaigns, sent count, replies, meetings booked, and inbox health. [effect=read; scope=growth:read]
    prospector_get_campaignsList Synter Prospector outbound campaigns with status, lead counts, replies, and schedule. [effect=read; scope=growth:read]
    prospector_get_campaignGet a Prospector outbound campaign by ID. Numeric sending-platform IDs read live campaign configuration and sequence steps; Prospector UUIDs read the client-scoped database snapshot. Numeric live readback requires the updated Prospector backend. [effect=read; scope=growth:read]
    prospector_get_campaign_performanceGet Synter Prospector outbound campaign performance: sends, opens, replies, meetings booked, and reply rate. Call this when reporting on an outbound sequence or comparing campaigns. Pass campaign_id for one campaign or omit it for the workspace rollup. [effect=read; scope=growth:read]
    prospector_get_step_performanceGet per-step performance for a Synter Prospector outbound sequence (sends, replies, and drop-off by email or LinkedIn step). Call this after prospector_get_campaign_performance when a campaign reply rate needs a step-level diagnosis. [effect=read; scope=growth:read]
    prospector_get_analytics_summaryGet workspace-level Synter Prospector outbound analytics: campaign count, total replies, meetings booked, and per-campaign send/reply rates. Call this for an outbound reporting rollup across campaigns. [effect=read; scope=growth:read]
    prospector_get_reportsList saved Synter Prospector outbound reports (campaign, step, and analytics artifacts). Call this to find a report_id before prospector_get_report. [effect=read; scope=growth:read]
    prospector_get_reportGet one saved Synter Prospector outbound report by id, including the metrics payload used for campaign reporting. Call prospector_get_reports first when the report_id is unknown. [effect=read; scope=growth:read]
    prospector_get_leadsList leads in the Prospector pipeline or filter by campaign or status. [effect=read; scope=growth:read]
    prospector_get_inbox_healthGet deliverability and warmup health for Prospector sending inboxes scoped to the authenticated owner. An empty result may indicate a missing owner-to-sending-domain mapping; it does not establish that reconnecting is necessary. [effect=read; scope=growth:read]
    prospector_get_contactsFind verified B2B contacts at company domains. Filter with explicit job_titles and job_levels arrays; paginate with offset and the returned next_offset. Legacy query alone is rejected: upstream does not support free-text query. Valid job_levels: Manager, Director, VP, C-Team, Staff, Other. Pass domains (preferred) or company_domain (alias for a single domain). RevenueBase vendor search is tenant-free (shared lookup, no house-tenant campaign data). [effect=read; scope=growth:read]
    prospector_create_campaignCreate a draft Synter Prospector outbound campaign with a sending schedule in the authenticated workspace. List campaigns first to avoid duplicates. This does not launch or send. Add copy separately with prospector_update_campaign_sequence. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_update_campaign_sequenceUpload email sequence steps to a Synter Prospector campaign in the authenticated workspace. Repeated uploads may append duplicate steps; use a fresh draft and read back the live sequence before another write. Each step needs subject, body, and delay_days; use <br> line breaks and {FIRST_NAME}, {COMPANY}, {TITLE} tokens. This does not launch or send. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_assign_inboxes_to_campaignAttach explicitly selected sending inbox IDs to a Synter Prospector campaign. Requires a non-empty sender_email_ids array; never defaults to every inbox. Each ID must satisfy API-key inbox restrictions and the upstream authenticated sending workspace. Does not launch the campaign. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_add_leadsAttach Priority/hand-picked leads to an existing Synter Prospector (EmailBison) campaign by numeric campaign_id. Accepts structured lead objects and/or CSV-shaped rows (email,first_name,last_name,company,title,linkedin_url,custom_shows). Idempotent on email within the campaign (already-attached emails are reported, not duplicated). Saves into the Prospector leads table then IcyPeas-verifies and gate-pushes via verify_and_push_leads. Defaults grade=A and outreach_tier=TIER_1 for Priority A cohorts; override per lead or via grade/outreach_tier args. Tenant-scoped like other prospector_* tools — unmapped orgs are refused. Does not launch the campaign. No live prod push without Growth GO. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_verify_and_push_leadsLower-level lead attach: IcyPeas-verify already-saved Prospector leads and gate-push them into an existing EmailBison campaign by numeric campaign_id. Each lead needs email + grade (A/B/C/D) + outreach_tier (TIER_1/TIER_2/TIER_3/EXCLUDE). Prefer prospector_add_leads for CSV-shaped Growth cohorts that still need save_leads_to_database. Idempotent on email within the campaign. Tenant-scoped. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_update_campaign_statusPause or activate/resume a Prospector outbound campaign. Pass status=paused to stop sending, or status=active (aliases: running, resume, launch, start, enabled) to call EmailBison launch_campaign. NOTE: on customer-workspace MCP connections this tool is not yet tenant-scoped and is refused rather than served from Synter's house tenant; use it from the Synter-internal surface. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    prospector_create_replyApprove and deliver an AI-drafted reply to an interested prospect lead. NOTE: on customer-workspace MCP connections this tool is not yet tenant-scoped and is refused rather than served from Synter's house tenant; use it from the Synter-internal surface. [effect=write; scope=growth:write; requires=prospectorAccess; externalMutation=true]
    builtwith_get_account_usageBuiltWith account capability and usage snapshot — plan limits, rate limits, credit usage. (2 credits) [effect=read; scope=intel:read]
    builtwith_get_domain_technologiesBuiltWith domain tech stack lookup — ad pixels, CRM, analytics, CMS/ecommerce tools, spend/meta. (2 credits) [effect=read; scope=intel:read]
    builtwith_get_technology_changesBuiltWith Change API — recent technology additions/removals for domains, with business context. (2 credits) [effect=read; scope=intel:read]
    builtwith_get_trust_signalsBuiltWith Trust API — domain trust, ecommerce/payment, parked/status, spend and live-tech signals. (2 credits) [effect=read; scope=intel:read]
    builtwith_get_sitesFind websites by BuiltWith technology, natural language audience, or keyword search. (2 credits) [effect=read; scope=intel:read]
    builtwith_product_searchBuiltWith Product API — ecommerce shops and product listings matching a product query. (2 credits) [effect=read; scope=intel:read]
    builtwith_company_to_urlBuiltWith Company to URL API — resolve company names to candidate website domains. (2 credits) [effect=read; scope=intel:read]
    builtwith_get_domain_keywordsBuiltWith Keywords API — keywords associated with a website domain. (2 credits) [effect=read; scope=intel:read]
    forecast_campaignForecast campaign KPIs (spend, CPA, ROAS, clicks, conversions) for 7-30 days with confidence intervals (2 credits) [effect=read; scope=campaigns:read]
    optimize_budgetCross-channel budget allocation using diminishing returns modeling (5 credits) [effect=write; scope=budget:write; externalMutation=true]
    test_creativesStart or check a multi-armed bandit creative experiment using Thompson sampling (3 credits) [effect=write; scope=creative:generate]
    create_social_clipRender, 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]
    create_ad_copyGenerate text ad copy (headlines, descriptions, CTAs) for any platform using Claude (5 credits) [effect=write; scope=creative:generate]
    list_creative_assetsList generated creative assets (images and videos) from your artifact library, with approval status and platform-deployment mapping (free) [effect=read; scope=creative:read]
    upload_creativeUpload a generated creative asset to an ad platform and attach it to a campaign (5 credits) [effect=publish; scope=creative:publish; requires=campaignPublishing; externalMutation=true]
    attach_audienceAttach (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]
    get_attributionMulti-touch attribution analysis using Markov chains (5 credits) [effect=read; scope=measurement:read]
    measure_incrementalityMeasure incremental ad impact via geo-lift or synthetic control [effect=read; scope=measurement:read]
    build_lookalike_audienceBuild ML-based lookalike audience from seed customers [effect=write; scope=audiences:write; externalMutation=true]
    research_campaign_opportunityResearch real demand before planning a campaign: keyword volumes and CPCs, what competitors are actually running, and current trends. Run this BEFORE create_campaign_plan. [effect=read; scope=campaigns:read]
    create_campaign_planCreate or update a campaign launch plan. Use plan_key for idempotency. [effect=write; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
    upsert_plan_entityAdd or update an entity (campaign, ad, tweet, go_link, etc.) within a campaign plan. [effect=write; scope=campaigns:plan; externalMutation=true]
    publish_plan_documentPublish a campaign plan for review, generating a shareable URL. 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. [effect=publish; scope=workspace:write; requires=campaignPublishing; externalMutation=true]
    approve_campaign_planRecord 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]
    execute_campaign_planLaunch an approved campaign plan — activates all entities across platforms in dependency order. [effect=publish; scope=campaigns:write; requires=campaignPublishing; externalMutation=true]
    get_plan_executionGet execution status and per-entity step results for a campaign plan launch (free). [effect=read; scope=campaigns:read]
    run_launch_preflightRun pre-launch conversion-tracking and landing-page checks at PLAN time, before presenting a campaign plan for approval. Read-only and free. Returns tracking issues and confirmation tokens. [effect=read; scope=campaigns:read]
    setup_google_ads_trial_funnelSet 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. [effect=write; scope=campaigns:write; externalMutation=true]
    create_documentCreate 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]
    create_campaign_importImport 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]
    get_campaign_planFetch a campaign plan with its entities, budgets, desired states, and review/execution status (free). [effect=read; scope=campaigns:read]
    get_launch_gate_policyRead what this workspace's Plan QA launch gate is set to — whether a failing QA review blocks a campaign launch, and where the user changes that. [effect=read; scope=campaigns:read]
    delete_documentDelete 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]
    send_slack_messagePost 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. [effect=write; scope=workspace:notify]
    find_audience_signalsFind 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]
    get_pixel_destinationsList Synter Pixel sites and their CAPI event-forwarding destinations for the active workspace. Shows platform, enabled/disabled state, and configured IDs. Free — no credits. [effect=read; scope=tracking:read]
    get_pixel_healthPixel snippet + destination health for the active workspace: snippet installed, destinations configured, last successful CAPI delivery per adapter. Do not pause or scale from get_performance alone; read get_pixel_health, list_event_deliveries, and get_click_attribution first. Free — no credits. [effect=read; scope=tracking:read]
    list_event_deliveriesRead event_deliveries fan-out rows (success/fail/destination) for the workspace pixel. Do not pause or scale from get_performance alone; confirm deliveries before acting. Free — no credits. [effect=read; scope=tracking:read]
    get_click_attributionReturn stored click IDs and UTMs from pixel ingest plus Stripe first-touch (user_attribution, PR 9673). This is stored identifiers only — no first/last/linear model math. Do not pause or scale from get_performance alone. Free — no credits. [effect=read; scope=tracking:read]
    configure_pixel_destinationCreate 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]
    audit_account_structureAudit 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]
    repair_account_structureRepair 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) via PATCH configured_status=ARCHIVED — Reddit v3 has NO hard DELETE. 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. [effect=write; scope=campaigns:structure; externalMutation=true]
    get_account_changelogExtract 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]
    shopify_get_abandoned_checkoutsGet Shopify abandoned checkouts for cart-abandonment and recovery-rate reporting. Call this when diagnosing checkout drop-off or sizing a retargeting audience. Paginate with page_info. [effect=read; scope=commerce:read]
    shopify_get_collectionsGet Shopify collections (smart and custom). Call this when segmenting a catalog for shopping or Performance Max campaigns. Paginate with page_info. [effect=read; scope=commerce:read]
    shopify_get_customer_audienceExport a hashed Shopify customer audience for upload to Meta, Google, TikTok or LinkedIn. Call this to build a customer-match or lookalike seed from store purchase history. The underlying script always SHA-256 hashes customer identifiers before returning them. [effect=read; scope=audiences:read]
    shopify_get_customersAggregate a Shopify customer cohort into privacy-thresholded metrics. Days default to 30, round up to fixed 30, 90, or 365-day rolling UTC windows, and clamp above 365. Exact timestamp and pagination filters are deprecated, ignored, and echoed in deprecated_parameters_ignored. No customer-level records or pagination cursors are returned; cohorts smaller than 10 are suppressed. Use shopify_get_customer_audience when you need the hashed audience file itself. [effect=read; scope=commerce:read]
    shopify_get_discount_codesGet Shopify discount codes and their price rules. Requires an assisted/custom Shopify connection with read_discounts; this is unavailable to public App Store installs. Call this to check which promotions are live before referencing an offer in ad copy or a landing page. Paginate with page_info. [effect=read; scope=commerce:read]
    shopify_get_inventory_levelsGet Shopify inventory levels per inventory item and location. Call this to confirm stock before scaling spend on a product, or to find which locations can fulfil demand. [effect=read; scope=commerce:read]
    shopify_get_inventory_statusGet a Shopify stock-health summary flagging low and out-of-stock products. Call this before increasing budget on a shopping campaign so you do not drive traffic to unavailable products. [effect=read; scope=commerce:read]
    shopify_get_ordersGet Shopify orders with financial and fulfillment status. Call this when the user asks about their Shopify store's orders, revenue by order, refunds, or unfulfilled orders. Paginate with page_info until next_page_info is absent. [effect=read; scope=commerce:read]
    shopify_get_product_feedBuild a Shopify product feed (Google Merchant Center RSS 2.0 XML or CSV) and return it as data. Call this to inspect or refresh the catalog behind Google Shopping and Performance Max campaigns. It never hosts the feed at a public URL; use execute if you need it hosted. [effect=read; scope=commerce:read]
    shopify_get_product_salesGet Shopify revenue broken down by product, vendor or product type. Call this to find the best sellers worth advertising and the long tail that is not converting. [effect=read; scope=commerce:read]
    shopify_get_productsGet Shopify products, filterable by status, vendor, product type or collection. Call this before building a product feed or shopping campaign so ad copy matches the real catalog. Paginate with page_info. [effect=read; scope=commerce:read]
    shopify_get_sales_summaryGet aggregate Shopify revenue, order count and average order value over a date range. Call this to establish store-level baseline revenue before attributing ad spend, or for blended ROAS. [effect=read; scope=commerce:read]
    shopify_get_shopGet Shopify shop identity and configuration: domain, currency, timezone, plan. Call this first when connecting a store, to confirm which shop the credentials point at before any other call. [effect=read; scope=commerce:read]
    shopify_get_webhooksGet the Shopify webhooks currently registered on the store. Call this to verify conversion and order tracking is wired up before trusting Shopify-sourced conversion data. [effect=read; scope=commerce:read]
    shopify_create_discountCreate a Shopify discount code and its price rule. Requires an assisted/custom Shopify connection with write_discounts; this is unavailable to public App Store installs. Call this when launching a promotion that ad creative or a landing page will reference. The value must be negative, for example -10 for 10 percent off. [effect=write; scope=commerce:write; externalMutation=true]
    shopify_create_web_pixelActivate the Synter Web Pixel extension on a Shopify store for checkout_completed conversion tracking. This is the supported path; Shopify stopped rendering ScriptTag pixels on the order-status page. Call this when setting up purchase tracking for a store. [effect=write; scope=tracking:write; externalMutation=true]
    shopify_create_webhookRegister a Shopify webhook so the store pushes events such as orders/paid to Synter. Call this when setting up order or refund tracking for a newly connected store. [effect=write; scope=commerce:write; externalMutation=true]
    klaviyo_get_campaign_metricsGet Klaviyo campaign performance: opens, clicks, revenue, and unsubscribes. Call this when attributing revenue to email or SMS, or when comparing owned-channel results against paid campaigns for blended reporting. [effect=read; scope=email:read]
    klaviyo_get_campaignsGet Klaviyo email and SMS campaigns with their status (draft, scheduled, sent, cancelled). Call this to see what lifecycle marketing is already running before proposing a new send, or to find a campaign id for a metrics lookup. [effect=read; scope=email:read]
    klaviyo_get_flowsGet Klaviyo automated flows and their live status. Call this to check which triggered sequences (welcome, abandoned cart, win-back) already exist before building a new one, so a flow is not duplicated. [effect=read; scope=email:read]
    klaviyo_get_listsGet Klaviyo lists, and optionally segments too. Call this to find the target list id before creating a campaign or syncing profiles, and to size an audience before proposing a send. [effect=read; scope=email:read]
    klaviyo_get_templatesGet Klaviyo email templates, filterable by name. Call this to reuse an existing branded template instead of generating raw HTML for a new campaign. [effect=read; scope=email:read]
    klaviyo_create_campaignCreate a Klaviyo email or SMS campaign as a DRAFT, optionally scheduled. This does not send: sending is a separate approval-gated step, so a draft created here is safe to review first. Call this when building a lifecycle send from a template or supplied HTML. [effect=write; scope=email:write; externalMutation=true]
    klaviyo_create_eventSend a custom event to a Klaviyo profile, such as an ad conversion with a monetary value. Call this to push paid-media conversions into Klaviyo so flows can trigger on them and revenue attribution reconciles. [effect=write; scope=email:write; externalMutation=true]
    klaviyo_update_list_profilesAdd or update profiles on a Klaviyo list from supplied JSON. Call this to sync an audience built elsewhere (a customer export, an ad-platform audience) into a Klaviyo list for lifecycle targeting. [effect=write; scope=email:write; externalMutation=true]