The Supermetrics MCP connector routes your AI agent's tool calls to Supermetrics's own MCP server through Scalekit. Each user signs in to Supermetrics once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 14 tools.
- Tools
- 14
- What they doRead · write · destructive
- 8 · 4 · 28 read4 write2 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Supermetrics MCP connection
In AgentKit > Connections, create a Supermetrics MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Supermetrics 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
Supermetrics 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 Supermetrics account.
-
Create a connection in Scalekit
- In the Scalekit dashboard, go to AgentKit → Connections → Create Connection.
- Search for Supermetrics MCP and click Create.
- Note the Connection name — use this as
connection_namein your code (e.g.,supermetricsmcp).
-
Authorize your Supermetrics account
Generate an authorization link and open it in a browser to complete the Supermetrics OAuth flow.
The user is redirected to Supermetrics to sign in and grant access. Scalekit stores the token and injects it automatically into every tool call — no further configuration is needed.
-
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.actionsconst connector = 'supermetricsmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Supermetrics MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'supermetricsmcp_data_source_discovery',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "supermetricsmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Supermetrics MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="supermetricsmcp_data_source_discovery",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolsupermetricsmcp_accounts_discoveryList connected ad accounts and profiles for a marketing or advertising data source.Read-onlyAccounts Discovery
List connected ad accounts and profiles for a marketing or advertising data source.
Inputs
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
compressstring- Whether to compress the response payload.
filterstring- Text filter to narrow discovery results.
supermetricsmcp_campaign_and_resource_getRetrieve campaign details, performance metrics, or related resources from an advertising platform.Read-onlyCampaign And Resource Get
Retrieve campaign details, performance metrics, or related resources from an advertising platform.
Inputs
account_idstringrequired- Ad account or profile ID for the selected data source.
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
max_rowsstring- Maximum number of rows to return.
paramsstring- Resource-type-specific parameters. See ResourceParams for which fields apply to each resource_type.
resource_typestring- Type of resource to retrieve (e.g. `CAMPAIGN`, `AD_GROUP`).
supermetricsmcp_data_queryQuery marketing analytics data from any connected data source, with optional date ranges, field selection, and filters.Read-onlyData Query
Query marketing analytics data from any connected data source, with optional date ranges, field selection, and filters.
Inputs
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
compare_end_datestring- End of the comparison period (YYYY-MM-DD). Required when `compare_type` is `custom`.
compare_showstring- How to display the comparison: - 'perc_change': percentage change (default) - 'abs_change': absolute change - 'value': raw value from the comparison period
compare_start_datestring- Start of the comparison period (YYYY-MM-DD). Required when `compare_type` is `custom`.
compare_typestring- Select how to compare results to an earlier period: - 'prev_range': previous period of the same length - 'prev_year': same period in the previous year - 'prev_year_weekday': same weekdays in the previous year - 'custom': user-defined period (requires compare_start_date and compare_end_date)
date_range_typestring- Preset date range (e.g. `last_30_days`, `last_month`). Use instead of `start_date`/`end_date`.
ds_accountsstring- List of account IDs to query data from.
end_datestring- End of the data range (YYYY-MM-DD).
fieldsstring- List of metric and dimension field names to include. Use `field_discovery` to find valid field names.
filtersstring- List of field filters to narrow the query results.
max_rowsstring- Maximum number of rows to return.
settingsstring- All data source-specific settings from data_source_discovery config mode. Pass as a JSON object. IMPORTANT: Every setting_id from data_source_discovery (report_type, common_settings, report-type-specific settings) MUST be passed inside this object — do NOT pass them as separate root-level parameters. Example: {"report_type": "TopIosApps", "country": "US", "list_type": "top-free"}
start_datestring- Start of the data range (YYYY-MM-DD).
timezonestring- Timezone for date calculations (e.g. `America/New_York`).
supermetricsmcp_data_source_discoveryList all available marketing and advertising data sources supported by Supermetrics.Read-onlyData Source Discovery
List all available marketing and advertising data sources supported by Supermetrics.
Inputs
compressstring- Whether to compress the response payload.
ds_idstring- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
supermetricsmcp_field_discoveryList available metrics and dimensions for a specific data source.Read-onlyField Discovery
List available metrics and dimensions for a specific data source. Returns field names usable in `data_query`.
Inputs
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
compressstring- Whether to compress the response payload.
filterstring- Text filter to narrow discovery results.
supermetricsmcp_get_async_query_resultsRetrieve results of an async `data_query` using the schedule ID returned by that query.Read-onlyGet Async Query Results
Retrieve results of an async `data_query` using the schedule ID returned by that query.
Inputs
schedule_idstringrequired- Schedule ID returned by `data_query` for async result retrieval.
compressstring- Whether to compress the response payload.
supermetricsmcp_get_todayGet the current UTC date and time.Read-onlyGet Today
Get the current UTC date and time. Use before `data_query` to resolve relative date references.
Inputs
This tool takes no inputs.
supermetricsmcp_supermetrics_guideExplain what Supermetrics can do for this user, or show what has changed recently.Read-onlySupermetrics Guide
Explain what Supermetrics can do for this user, or show what has changed recently.
Inputs
modestring- Use `tour` (the default) for what the user can do with Supermetrics, or `whats_new` for capabilities added recently.
supermetricsmcp_contact_supermetricsSend product feedback, create a support ticket, or submit a sales enquiry to Supermetrics.WriteContact Supermetrics
Send product feedback, create a support ticket, or submit a sales enquiry to Supermetrics.
Inputs
messagestringrequired- Detailed description. Include relevant context: tools used, errors encountered, data sources involved, trace IDs
subjectstringrequired- Brief summary of the feedback or issue
typestringrequired- Type of contact: 'feedback' for product feedback/feature requests, 'support' for technical issues, 'sales' for sales enquiries and demo requests
categorystring- Support ticket category. Only used when type is 'support'
companystring- Contact's company name. Required when type is 'sales'
countrystring- Contact's country. Required when type is 'sales'
ds_idstring- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
firstnamestring- Contact's first name. Required when type is 'sales'
industrystring- Contact's industry. Used when type is 'sales'
lastnamestring- Contact's last name. Required when type is 'sales'
supermetricsmcp_manage_dashboardsUpload, retrieve, edit, or view version history for live Supermetrics Studio dashboards that re-query data on each view.WriteManage Dashboards
Upload, retrieve, edit, or view version history for live Supermetrics Studio dashboards that re-query data on each view.
Inputs
actionstringrequired- Action to perform: `upload` to create or replace a dashboard, `get` to retrieve its code and metadata, `edit` to apply patches to its code, or `changelog` to view version history.
allowed_accountsstring- Per-data-source list of account IDs the dashboard may query. Required for `upload`.
allowed_toolsstring- MCP tool names the dashboard is allowed to call. Required for `upload`.
change_summarystring- Description of the change, recorded in version history. Used by `upload` replace and `edit`.
codestring- Complete dashboard code (HTML or JSX) that visualizes the data. Required for `upload`.
dashboard_idstring- UUID of the dashboard. Required for `get` and `edit`. For `upload`, omit to create a new dashboard or provide to replace an existing one.
descriptionstring- Short description/subtitle of the dashboard itself, shown in the board list. Used by `upload`.
patchesstring- List of patch operations to apply to the dashboard's code. Used by `edit`.
titlestring- Display name of the dashboard. Used by `upload`.
supermetricsmcp_manage_user_and_teamManage your Supermetrics account: get user profile, license, and team member info, invite new members, get a login link for a data source, or assign users to a subscription.WriteManage User And Team
Manage your Supermetrics account: get user profile, license, and team member info, invite new members, get a login link for a data source, or assign users to a subscription.
Inputs
actionstringrequired- Action to perform: `get_info` for user/license/team info, `invite_member` to invite a new member, `login_data_source` for a login link (requires `ds_id`), or `add_user_to_subscription` (requires `license_id` and `user_ids`).
ds_idstring- Data source identifier to get a login link for. Required for `login_data_source`.
emailstring- Email address of the member to invite. Used by `invite_member`.
license_idstring- Subscription license ID from `get_info`. Required for `add_user_to_subscription`.
rolestring- Role to assign the invited member. Used by `invite_member`.
user_idsstring- User IDs from `get_info` to assign to the subscription. Required for `add_user_to_subscription`.
supermetricsmcp_resources_manageOpen the visual media picker or manage ad creative assets for a supported platform.WriteResources Manage
Open the visual media picker or manage ad creative assets for a supported platform.
Inputs
account_idstringrequired- Ad account or profile ID for the selected data source.
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
actionstring- Action to perform on the resource (e.g. `browse_assets`).
asset_typestring- Type of creative asset to manage (e.g. `IMAGE`, `VIDEO`).
paramsstring- Internal action-specific parameters (used by the picker UI).
supermetricsmcp_campaign_createCreate a new advertising campaign on Google Ads, Facebook Ads, TikTok Ads, LinkedIn Ads, or Microsoft Advertising.DestructiveCampaign Create
Create a new advertising campaign on Google Ads, Facebook Ads, TikTok Ads, LinkedIn Ads, or Microsoft Advertising.
Inputs
account_idstringrequired- Ad account or profile ID for the selected data source.
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
namestringrequired- Display name for the campaign.
ad_groupsstring- Ad groups (AW/AC) or ad sets (FA/TIK) to create with the campaign.
bidding_strategystring- Bidding strategy. Also accepted inside platform_settings. AW: MANUAL_CPC, MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS. For TARGET_ROAS, set the target value via platform_settings.bidding_config.target_roas (float multiplier, e.g. 3.5 = 350% ROAS). Without it, optimizes for max value with no target. For TARGET_CPA, set target via platform_settings.bidding_config.target_cpa (float in account currency, e.g. 5.0 = $5). AC: MAX_CLICKS, MAX_CONVERSIONS, MANUAL_CPC, ENHANCED_CPC, TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE. FA: LOWEST_COST_WITHOUT_CAP (default), LOWEST_COST_WITH_BID_CAP, COST_CAP. FA also accepts TARGET_ROAS — use bidding_config.target_roas to set the target. Auto-sets OUTCOME_SALES objective, VALUE optimization, and pixel if not specified.
budget_amountstring- Daily or lifetime budget amount in the account currency.
budget_typestring- Budget type: DAILY or LIFETIME. LIA: only LIFETIME at campaign level. AC: LIFETIME only works on AUDIENCE campaigns.
end_datestring- End of the data range (YYYY-MM-DD).
extensionsstring- Ad extensions (AW/AC — sitelinks, callouts, snippets; AW also supports image extensions). Ignored on FA/TIK.
platform_settingsstring- Platform-specific settings. AW: {campaign_type (SEARCH, DISPLAY, PERFORMANCE_MAX, SHOPPING, VIDEO, DEMAND_GEN), bidding_strategy, bidding_config (see below), network_settings}. bidding_config (AW/AC/FA): {target_roas (float multiplier, e.g. 3.5 = 350% ROAS — used with TARGET_ROAS), target_cpa (float in account currency, e.g. 5.0 = $5 — used with TARGET_CPA)}. Works the same on all platforms. AC: {campaign_type (SEARCH, AUDIENCE, SHOPPING, DYNAMIC_SEARCH, PERFORMANCE_MAX), bidding_strategy (MAX_CLICKS, MAX_CONVERSIONS, MANUAL_CPC, TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE, ENHANCED_CPC)}. FA: {objective (OUTCOME_TRAFFIC, OUTCOME_ENGAGEMENT, OUTCOME_LEADS, OUTCOME_SALES, OUTCOME_AWARENESS, OUTCOME_APP_PROMOTION), special_ad_categories, buying_type, campaign_budget_optimization (true=CBO on, budget at campaign level; false=CBO off, budget per ad set)}. TIK: {objective_type (TRAFFIC, LEAD_GENERATION, REACH, VIDEO_VIEWS, CONVERSIONS, APP_INSTALL), promotion_type (WEBSITE, APP, SHOP — defaults to WEBSITE), placement_type (PLACEMENT_TYPE_AUTOMATIC default)}.LIA: campaign-level platform_settings are optional. Ad group platform_settings are where LIA-specific options go (campaign_type, cost_type, objective_type, daily_budget).
start_datestring- Start of the data range (YYYY-MM-DD).
statusstring- Campaign status (e.g. `ENABLED`, `PAUSED`).
targetingstring- Campaign-level targeting defaults inherited by all ad groups
url_tagsstring- Campaign-level URL tracking parameters appended to ad links
supermetricsmcp_campaign_updateUpdate an existing advertising campaign by its ID on a supported ad platform.DestructiveCampaign Update
Update an existing advertising campaign by its ID on a supported ad platform.
Inputs
account_idstringrequired- Ad account or profile ID for the selected data source.
campaign_idstringrequired- Unique identifier of the campaign to update.
ds_idstringrequired- Data source identifier (e.g. `GA4`, `FA`, `ADWORDS`). Use `data_source_discovery` to list available IDs.
ad_groupsstring- Ad groups to create (no id) or update (with id). Only provided fields change on update.
bidding_strategystring- New bidding strategy. AW: MANUAL_CPC, MAXIMIZE_CLICKS, MAXIMIZE_CONVERSIONS, TARGET_CPA, MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS. For TARGET_ROAS, set the target value via platform_settings.bidding_config.target_roas (float multiplier, e.g. 3.5 = 350% ROAS). Without it, optimizes for max value with no target. For TARGET_CPA, set target via platform_settings.bidding_config.target_cpa (float in account currency, e.g. 5.0 = $5). AC: MAX_CLICKS, MAX_CONVERSIONS, MANUAL_CPC, ENHANCED_CPC, TARGET_CPA, TARGET_ROAS, MAXIMIZE_CONVERSION_VALUE. FA: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP. FA also accepts TARGET_ROAS — use bidding_config.target_roas to set the target. IMPORTANT: FA bid strategy changes require the campaign to have a budget. CBO-off campaigns (budget at ad set level) cannot have their bid strategy changed. LOWEST_COST_WITH_BID_CAP requires bid_amount on each ad set.
budget_amountstring- Daily or lifetime budget amount in the account currency.
budget_typestring- New budget type: DAILY or LIFETIME. LIA: only LIFETIME at campaign level. AC: LIFETIME only works on AUDIENCE campaigns.
end_datestring- End of the data range (YYYY-MM-DD).
extensionsstring- Replace extensions (removes old, adds new) — AW/AC. Ignored on FA/TIK.
namestring- Display name for the campaign.
platform_settingsstring- Platform-specific settings to update. AW/AC/FA: {bidding_config: {target_roas (float, e.g. 3.5 = 350%), target_cpa (float, e.g. 5.0 = $5)}}. AW: {ad_schedule, bid_adjustments}. FA: {campaign_budget_optimization (true=CBO on, false=CBO off)}.
remove_ad_group_idsstring- Ad group / ad set IDs to remove
remove_ad_idsstring- Ad IDs to remove
start_datestring- Start of the data range (YYYY-MM-DD).
statusstring- Campaign status (e.g. `ENABLED`, `PAUSED`).
targetingstring- Replace campaign targeting (removes old, adds new)
url_tagsstring- Campaign-level URL tracking parameters appended to ad links
No tools match.
Workflows
Discover available data sources
Use supermetricsmcp_data_source_discovery to list all marketing and advertising data sources connected to the user’s Supermetrics account.
const sources = await actions.executeTool({ connector: 'supermetricsmcp', identifier: 'user_123', toolName: 'supermetricsmcp_data_source_discovery', toolInput: {},});console.log(sources);sources = actions.execute_tool( connection_name="supermetricsmcp", identifier="user_123", tool_name="supermetricsmcp_data_source_discovery", tool_input={},)print(sources)Query marketing analytics data
Use supermetricsmcp_data_query to pull structured metrics and dimensions from a connected data source. Call field_discovery first to find valid field names, and get_today to resolve relative date references.
const report = await actions.executeTool({ connector: 'supermetricsmcp', identifier: 'user_123', toolName: 'supermetricsmcp_data_query', toolInput: { ds_id: 'GA4', fields: ['Sessions', 'Conversions', 'Date'], date_range_type: 'last_30_days', max_rows: 100, },});console.log(report);report = actions.execute_tool( connection_name="supermetricsmcp", identifier="user_123", tool_name="supermetricsmcp_data_query", tool_input={ "ds_id": "GA4", "fields": ["Sessions", "Conversions", "Date"], "date_range_type": "last_30_days", "max_rows": 100, },)print(report)Create an ad campaign
Use supermetricsmcp_campaign_create to create a new advertising campaign on a supported platform. Call accounts_discovery first to find the correct account ID.
const campaign = await actions.executeTool({ connector: 'supermetricsmcp', identifier: 'user_123', toolName: 'supermetricsmcp_campaign_create', toolInput: { ds_id: 'FA', account_id: 'act_123456789', name: 'Q1 Brand Awareness', status: 'PAUSED', budget_amount: '50.00', budget_type: 'DAILY', },});console.log(campaign);campaign = actions.execute_tool( connection_name="supermetricsmcp", identifier="user_123", tool_name="supermetricsmcp_campaign_create", tool_input={ "ds_id": "FA", "account_id": "act_123456789", "name": "Q1 Brand Awareness", "status": "PAUSED", "budget_amount": "50.00", "budget_type": "DAILY", },)print(campaign)