Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Adzviser MCP server

Vendor MCP
Open markdown

The Adzviser MCP connector routes your AI agent's tool calls to Adzviser's own MCP server through Scalekit. Each user signs in to Adzviser once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 69 tools.

Tools
69
What they doRead · write · destructive
66 · 3 · 066 read3 write0 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Pull marketing reports: retrieve live performance data from ad, analytics, CRM, email, and ecommerce channels for analysis
  • Explore available metrics: list selectable metrics and breakdowns for platforms like Google Ads, Facebook Ads, GA4, and Shopify
  • List workspaces: see each workspace and the ad accounts and data sources connected to it

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Adzviser MCP connection

    In AgentKit > Connections, create an Adzviser MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Adzviser MCP server, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    Adzviser MCP uses Dynamic Client Registration (DCR) — no client ID or secret is required. The only step is creating a connection in Scalekit and authorizing your Adzviser account.

    1. Create a connection in Scalekit

      • In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
      • Search for Adzviser MCP and click Create.
      • Note the Connection name — use this as connection_name in your code (e.g., adzvisermcp).
    2. Authorize your Adzviser account

      Generate an authorization link and open it in a browser to complete the Adzviser OAuth flow.

      The user is redirected to Adzviser to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'adzvisermcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Adzviser MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'adzvisermcp_list_countries_fb_ad_library',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • adzvisermcp_get_change_resultRetrieve a saved change receipt: approved before/expected values, write status, verification evidence and next step.Read-only

    Get Change Result

    Retrieve a saved change receipt: approved before/expected values, write status, verification evidence and next step. Use detail=diagnostic for troubleshooting. Does not perform provider writes. outcome_unknown must never be retried as a new change.

    Inputs

    change_idstringrequired
    No description.
    detailstring
    No description.one of summarydiagnostic
  • adzvisermcp_get_data_source_accessRead can_write, its expected_revision and write availability separately for each data connection account (DCA) in a workspace.Read-only

    Get Data Source Access

    Read can_write, its expected_revision and write availability separately for each data connection account (DCA) in a workspace. Each scope_ref identifies one DCA. The same provider account connected in another workspace has independent permission. Reporting access remains governed by the existing connection.

    Inputs

    workspace_namestringrequired
    No description.
  • adzvisermcp_get_resourcesDiscover what users can change in their connected accounts, or read resources and their current settings.Read-only

    Get Resources

    Discover what users can change in their connected accounts, or read resources and their current settings. For questions like "What can I do with write access?", call with workspace_name only, optionally source or scope_ref. No resource lookup is needed for this overview. Present returned capabilities as concrete tasks, grouped by connector, with the account names and access state. Explain what can change, on which items, and the main restrictions; for a broad overview, use a compact table with "What you can do", "Where it applies", and "Example request". Use the returned examples as illustrations, never as selected targets or authorization. Avoid vague category lists such as "budgets, bids, keywords, assets" or unexplained "eligible". Say which bid can change and under which strategy, whether keywords can be added or removed, and which asset fields can be edited. Spell out unfamiliar acronyms. Do not dump action IDs or JSON schemas into the answer. Capabilities describe connector support, not confirmed eligibility or provider permission. Show the options even when can_write=false, explaining that Read and write must be enabled first. If writes_enabled=false, explain that execution is currently unavailable. Never enable access or prepare changes just to show capabilities. Once the user chooses an action, inspect the selected account with resource_type or refs. Use its actions, action_blockers and action_schemas; only returned resource_ref values may be change targets. Provider permissions are checked during preview and may require reconnection. Use source=fb_ads to narrow Facebook Ads discovery in mixed workspaces. Do not assume different connectors support the same actions. Reading settings does not execute or verify a saved change.

    Inputs

    workspace_namestringrequired
    No description.
    cursorinteger
    No description.
    limitinteger
    No description.
    refsarray
    No description.
    resource_typestring
    No description.one of campaignad_groupkeywordadnegative_keyword_listassetlocationad_set
    scope_refstring
    DCA ID returned by discovery, encoded as a string. Previously issued UUID references are also accepted.
    searchstring
    No description.
    sourcestring
    No description.one of google_adsfb_ads
  • adzvisermcp_list_countries_fb_ad_libraryGet the list of available countries/regions for Facebook (Meta) Ad Library searches.Read-only

    List Available Countries for Facebook Ad Library

    Get the list of available countries/regions for Facebook (Meta) Ad Library searches. Use these regions when composing a meta_ad_library_request in the retrieve_reporting_data tool.

    Inputs

    This tool takes no inputs.

  • adzvisermcp_list_countries_google_ads_transparencyGet the list of available countries/regions for Google Ads Transparency Center searches.Read-only

    List Available Countries for Google Ads Transparency Center

    Get the list of available countries/regions for Google Ads Transparency Center searches. Use these regions when composing a google_ads_transparency_request in the retrieve_reporting_data tool.

    Inputs

    This tool takes no inputs.

  • adzvisermcp_list_metrics_and_breakdowns_activecampaignGet the list of selectable ActiveCampaign metrics, such as Contacts, Sends, Opens, Clicks, and breakdowns like Campaign Name, List Name etc.Read-only

    ActiveCampaign Metrics and Breakdowns

    Get the list of selectable ActiveCampaign metrics, such as Contacts, Sends, Opens, Clicks, and breakdowns like Campaign Name, List Name etc.

    Inputs

    This tool takes no inputs.

  • adzvisermcp_list_metrics_and_breakdowns_adobe_analyticsGet the list of selectable Adobe Analytics 2.0 metrics like Page views, Visits, Visitors, and breakdowns like Page, Browser, and Device type etc.Read-only

    Adobe Analytics 2.0 Metrics and Breakdowns

    Get the list of selectable Adobe Analytics 2.0 metrics like Page views, Visits, Visitors, and breakdowns like Page, Browser, and Device type etc.

    Inputs

    This tool takes no inputs.

  • adzvisermcp_list_metrics_and_breakdowns_adrollGet the list of selectable AdRoll metrics, such as Impressions, Clicks, Spend, Conversions, and breakdowns like Campaign Name, Ad Group, Creative etc.Read-only

    AdRoll Metrics and Breakdowns

    Get the list of selectable AdRoll metrics, such as Impressions, Clicks, Spend, Conversions, and breakdowns like Campaign Name, Ad Group, Creative etc.

    Inputs

    This tool takes no inputs.

Workflows

List workspaces

Use adzvisermcp_list_workspace to retrieve the workspaces the user has configured, along with their connected ad platform accounts.

const result = await actions.executeTool({
connector: 'adzvisermcp',
identifier: 'user_123',
toolName: 'adzvisermcp_list_workspace',
toolInput: {},
});
console.log(result);

Discover available metrics for a platform

Before querying data, call a list_metrics_and_breakdowns_* tool to discover valid metric and breakdown names for your target platform.

// Discover Google Ads metrics and breakdowns
const fields = await actions.executeTool({
connector: 'adzvisermcp',
identifier: 'user_123',
toolName: 'adzvisermcp_list_metrics_and_breakdowns_google_ads',
toolInput: {},
});
console.log(fields);

Retrieve reporting data across platforms

Use adzvisermcp_retrieve_reporting_data to pull structured analytics from one or more connected platforms. Pass an adzviser_request object to specify metrics, breakdowns, date ranges, and filters. Most use cases work without this parameter — Adzviser auto-fetches data from all connected accounts.

const report = await actions.executeTool({
connector: 'adzvisermcp',
identifier: 'user_123',
toolName: 'adzvisermcp_retrieve_reporting_data',
toolInput: {
adzviser_request: {
google_ads_request: {
metrics: ['Clicks', 'Impressions', 'Cost'],
breakdowns: ['Campaign Name'],
date_ranges: [{ start_date: '2024-01-01', end_date: '2024-01-31' }],
},
},
},
});
console.log(report);