Agency Analytics MCP connector
OAuth 2.1/DCRAnalyticsMarketingMonitoringAgency Analytics is a marketing reporting platform that enables digital agencies to monitor SEO, PPC, social media, and other channel performance in...
Agency Analytics MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set 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> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'agencyanalyticsmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Agency Analytics MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'agencyanalyticsmcp_fetch_web',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "agencyanalyticsmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Agency Analytics MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="agencyanalyticsmcp_fetch_web",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Search web, users, clients — Search the live web and return a compact keyword-research result set: organic results (position, title, link, domain, snippet), related searches, People Also Ask questions, and the answer box when present
- Read knowledge base, client traffic, client reviews — Search the AgencyAnalytics knowledge base for how-to articles and platform documentation
- Fetch web — Fetch a single public web page or document by URL and return its readable text
- Create mcp feedback — Record user feedback explicitly directed at the AgencyAnalytics MCP server experience — its tools, ergonomics, or quality of results
- Clients browse — Browse or enumerate clients
- Reports browse client — List all reports for a client/campaign
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
agencyanalyticsmcp_browse_client_custom_metrics#List the custom metrics available for a single client — both campaign-level and account-level — so you can discover which formula-driven KPIs exist (e.g. 'Cost per Lead', 'ROAS'). Returns one row per custom metric with its id, name, data_type, change_format, scope, formula, and description. Use the returned ids with read_client_custom_metrics to fetch computed values.1 param
List the custom metrics available for a single client — both campaign-level and account-level — so you can discover which formula-driven KPIs exist (e.g. 'Cost per Lead', 'ROAS'). Returns one row per custom metric with its id, name, data_type, change_format, scope, formula, and description. Use the returned ids with read_client_custom_metrics to fetch computed values.
clientIdintegeroptionalThe client (campaign) ID.agencyanalyticsmcp_browse_client_dashboards#List all dashboards for a client/campaign. Returns paginated dashboards (10 per page). If the user does not see what they are looking for, increment page and call again. Requires client_id on every call.2 params
List all dashboards for a client/campaign. Returns paginated dashboards (10 per page). If the user does not see what they are looking for, increment page and call again. Requires client_id on every call.
client_idintegeroptionalThe client (campaign) ID. Required on every call.pageintegeroptionalPage number for pagination (default 1).agencyanalyticsmcp_browse_client_data_sources#Discover connected providers and available metric data sources for a campaign. Pass message (the user's question) to filter returned data sources to only those relevant to the question. Returns providers (connected slugs) and data_sources (AAQL data source definitions with available fields and pre-hydrated filters).2 params
Discover connected providers and available metric data sources for a campaign. Pass message (the user's question) to filter returned data sources to only those relevant to the question. Returns providers (connected slugs) and data_sources (AAQL data source definitions with available fields and pre-hydrated filters).
clientIdintegeroptionalThe client (campaign) ID.messagestringoptionalThe user's original question — used to filter relevant data sources.agencyanalyticsmcp_browse_client_reports#List all reports for a client/campaign. Use this when no specific report was named and you need to present options or pick the most relevant one. Requires client_id on every call.1 param
List all reports for a client/campaign. Use this when no specific report was named and you need to present options or pick the most relevant one. Requires client_id on every call.
client_idintegeroptionalThe client (campaign) ID. Required on every call.agencyanalyticsmcp_browse_clients#Browse or enumerate clients. Two modes: Folder mode (omit groupId) returns all folders with their client counts plus ungrouped clients. Drill-down mode (groupId provided) returns all clients inside the specified folder. Results are paginated via limit and offset.5 params
Browse or enumerate clients. Two modes: Folder mode (omit groupId) returns all folders with their client counts plus ungrouped clients. Drill-down mode (groupId provided) returns all clients inside the specified folder. Results are paginated via limit and offset.
groupIdintegeroptionalFolder ID to drill into. Omit to list all folders and ungrouped clients.limitintegeroptionalMaximum number of items to return (default 50, max 200).offsetintegeroptionalZero-based pagination offset (default 0).searchstringoptionalOptional text filter applied to client name or URL.statusstringoptionalOptional status filter — e.g. "active" or "inactive". Omit to return all statuses.agencyanalyticsmcp_create_mcp_feedback#Record user feedback explicitly directed at the AgencyAnalytics MCP server experience — its tools, ergonomics, or quality of results. Only call this when the user clearly intends to leave feedback about the MCP.2 params
Record user feedback explicitly directed at the AgencyAnalytics MCP server experience — its tools, ergonomics, or quality of results. Only call this when the user clearly intends to leave feedback about the MCP.
messagestringrequiredThe user's feedback in their own words. 1-2000 characters.sentimentstringrequiredOverall sentiment of the feedback.agencyanalyticsmcp_fetch_web#Fetch a single public web page or document by URL and return its readable text. HTML is reduced to plain text; JSON, plain-text, and XML responses are returned as-is. Output is truncated to maxLength characters (default 30000).2 params
Fetch a single public web page or document by URL and return its readable text. HTML is reduced to plain text; JSON, plain-text, and XML responses are returned as-is. Output is truncated to maxLength characters (default 30000).
maxLengthintegeroptionalMaximum characters of extracted text to return. Defaults to 30000; clamped to [1000, 100000].urlstringoptionalAbsolute http(s) URL to fetch, e.g. 'https://example.com/article'.agencyanalyticsmcp_read_client_ads#Fetch ad data broken down by campaign, ad group, or ad for a specific platform. Returns one row per entity — NOT a time series. Use ONLY when the user asks for a per-entity breakdown. Supported platforms (21): googleadwords, facebook-ads, linked-in-ads, snapchat-ads, tiktok-ads, adroll, amazon-ads, bing-ads, twitter-ads, spotify-ads, stack-adapt, google-display-video360, pinterest-ads, reddit-ads-v1, simpli-fi, centro, centro-basis, choozle, adform, yelp-ads, ground-truth-v1.7 params
Fetch ad data broken down by campaign, ad group, or ad for a specific platform. Returns one row per entity — NOT a time series. Use ONLY when the user asks for a per-entity breakdown. Supported platforms (21): googleadwords, facebook-ads, linked-in-ads, snapchat-ads, tiktok-ads, adroll, amazon-ads, bing-ads, twitter-ads, spotify-ads, stack-adapt, google-display-video360, pinterest-ads, reddit-ads-v1, simpli-fi, centro, centro-basis, choozle, adform, yelp-ads, ground-truth-v1.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.entityTypestringoptionalThe entity type to break down by.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe ad platform provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data without a live API call.agencyanalyticsmcp_read_client_calls#Fetch call analytics grouped by an entity type for a connected call-tracking integration. Returns one row per entity type. Supported providers (10): marchex, twilio, what-converts, callrail, call-tracking-metrics, call-source, googleadwords, avanser, delacon, wild-jar.7 params
Fetch call analytics grouped by an entity type for a connected call-tracking integration. Returns one row per entity type. Supported providers (10): marchex, twilio, what-converts, callrail, call-tracking-metrics, call-source, googleadwords, avanser, delacon, wild-jar.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.entityTypestringoptionalThe dimension to group calls by.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe call tracking provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_client_content#Fetch content analytics broken down by individual post, reel, pin, or video item for a specific social platform. Returns one row per content item — NOT a time series. Supported platforms (7): facebook, instagram, pinterest, youtube, linked-in, tiktok-v1, vimeo.7 params
Fetch content analytics broken down by individual post, reel, pin, or video item for a specific social platform. Returns one row per content item — NOT a time series. Supported platforms (7): facebook, instagram, pinterest, youtube, linked-in, tiktok-v1, vimeo.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.entityTypestringoptionalThe type of content: 'posts', 'reels', 'pins', or 'videos'.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe social platform provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_client_custom_metrics#Fetch the computed output of a single client's custom metrics (formula-driven KPIs such as 'Cost per Lead' or 'ROAS') over a date range. Provide customMetricIds to read specific metrics; omit it to read every custom metric available for the client. Use browse_client_custom_metrics first to discover the available metric ids.5 params
Fetch the computed output of a single client's custom metrics (formula-driven KPIs such as 'Cost per Lead' or 'ROAS') over a date range. Provide customMetricIds to read specific metrics; omit it to read every custom metric available for the client. Use browse_client_custom_metrics first to discover the available metric ids.
byDatebooleanoptionalSet to true to return values broken down by date.clientIdintegeroptionalThe client (campaign) ID.customMetricIdsarrayoptionalList of custom metric IDs to fetch. Omit to fetch all.endDatestringoptionalEnd date in YYYY-MM-DD format.startDatestringoptionalStart date in YYYY-MM-DD format.agencyanalyticsmcp_read_client_dashboard#Fetch data for a specific dashboard. Step 1 (no section_name): resolves a dashboard container by dashboard_id or dashboard_name and returns the list of available dashboards. Step 2 (with section_name): fetches provider data for the named dashboard. Requires client_id on every call.6 params
Fetch data for a specific dashboard. Step 1 (no section_name): resolves a dashboard container by dashboard_id or dashboard_name and returns the list of available dashboards. Step 2 (with section_name): fetches provider data for the named dashboard. Requires client_id on every call.
client_idintegeroptionalThe client (campaign) ID. Required on every call.dashboard_idintegeroptionalID of the dashboard to fetch.dashboard_namestringoptionalName of the dashboard to fetch.end_datestringoptionalEnd date in YYYY-MM-DD format.section_namestringoptionalName of the section to fetch data for. Omit for Step 1 (list sections).start_datestringoptionalStart date in YYYY-MM-DD format.agencyanalyticsmcp_read_client_data_source#Run a raw AAQL read query for one client and return the raw connector rows as CSV. Use this ONLY when the user explicitly asks to export raw data. For normal analytics use the entity and metric tools — they are far more token-efficient.10 params
Run a raw AAQL read query for one client and return the raw connector rows as CSV. Use this ONLY when the user explicitly asks to export raw data. For normal analytics use the entity and metric tools — they are far more token-efficient.
assetstringoptionalThe AAQL asset/table name.clientIdintegeroptionalThe client (campaign) ID.confirmedbooleanoptionalSet to true to confirm the export.fieldsarrayoptionalFields to include in the output.filtersobjectoptionalKey-value filter map.groupByarrayoptionalFields to group by.limitintegeroptionalMaximum rows (default 50).offsetintegeroptionalPagination offset.providerstringoptionalThe integration provider slug.sortobjectoptionalSort configuration.agencyanalyticsmcp_read_client_insights#Return a single client's biggest-moving metrics (trend signals), ranked by the magnitude of their percent change — biggest movers first, whether up or down. Use this to answer 'what changed the most for this client?'. These are pre-computed trend signals refreshed once daily — NOT real-time.6 params
Return a single client's biggest-moving metrics (trend signals), ranked by the magnitude of their percent change — biggest movers first, whether up or down. Use this to answer 'what changed the most for this client?'. These are pre-computed trend signals refreshed once daily — NOT real-time.
clientIdintegeroptionalThe client (campaign) ID.comparisonTypestringoptionalThe comparison type.directionstringoptionalFilter to only gains ('up'), only declines ('down'), or flat metrics ('flat').limitintegeroptionalMaximum number of results (default 50).minPercentageChangeMagnitudenumberoptionalMinimum absolute percent change to include.periodintegeroptionalComparison window in days. Allowed values: 30 or 90.agencyanalyticsmcp_read_client_keywords#Fetch keyword data for a specific platform connected to a client. Returns one row per keyword. Supported platforms (9): googleadwords, bing-ads, amazon-ads, pinterest-ads, simpli-fi, bing-webmaster-tools, google-search-console, rank-tracker, se-ranking-v1.6 params
Fetch keyword data for a specific platform connected to a client. Returns one row per keyword. Supported platforms (9): googleadwords, bing-ads, amazon-ads, pinterest-ads, simpli-fi, bing-webmaster-tools, google-search-console, rank-tracker, se-ranking-v1.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe keyword platform provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_client_knowledge#Answer questions grounded in a client's uploaded documents — contracts, invoices, statements of work, proposals, briefs, meeting notes, reports — or the account's shared docs (brand guidelines, templates, policies). Pass clientId to scope to one client; omit it to search all accessible clients plus shared docs. Returns a grounded, source-cited answer.2 params
Answer questions grounded in a client's uploaded documents — contracts, invoices, statements of work, proposals, briefs, meeting notes, reports — or the account's shared docs (brand guidelines, templates, policies). Pass clientId to scope to one client; omit it to search all accessible clients plus shared docs. Returns a grounded, source-cited answer.
clientIdintegeroptionalOptional. The client (campaign) whose documents to search. Omit to search across all accessible clients plus shared account-level documents.promptstringoptionalThe natural-language question about the uploaded documents.agencyanalyticsmcp_read_client_metrics#Fetch aggregated time-series metrics for a single client over a date range, scoped to one connected integration provider. Returns one row per day or month — NOT one row per campaign or keyword. Use this for trend questions. Responses are limited to a maximum of 200 rows. Supported providers: adroll, bing-ads, facebook, facebook-ads, google-analytics4, google-local-services-ads, google-my-business, google-search-console, googleadwords, ground-truth-v1, high-level, instagram, linked-in, linked-in-ads, pinterest-ads, reddit-ads-v1, simpli-fi, spotify-ads, stack-adapt, tiktok-ads, twitter-ads.5 params
Fetch aggregated time-series metrics for a single client over a date range, scoped to one connected integration provider. Returns one row per day or month — NOT one row per campaign or keyword. Use this for trend questions. Responses are limited to a maximum of 200 rows. Supported providers: adroll, bing-ads, facebook, facebook-ads, google-analytics4, google-local-services-ads, google-my-business, google-search-console, googleadwords, ground-truth-v1, high-level, instagram, linked-in, linked-in-ads, pinterest-ads, reddit-ads-v1, simpli-fi, spotify-ads, stack-adapt, tiktok-ads, twitter-ads.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.incrementstringoptionalTime grouping: 'day' or 'month'.providerstringoptionalThe integration provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.agencyanalyticsmcp_read_client_pages#Fetch page data for a specific platform connected to a client. Returns one row per page. Supported platforms (5): google-analytics4, google-search-console, hub-spot, unbounce, agency-analytics-auditor-4.7 params
Fetch page data for a specific platform connected to a client. Returns one row per page. Supported platforms (5): google-analytics4, google-search-console, hub-spot, unbounce, agency-analytics-auditor-4.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.entityTypestringoptionalThe entity type: 'pages' or 'blog_posts'.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe page analytics provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_client_report#Read a specific scheduled report for a client/campaign. Requires report_id or report_name. Step 1 (no section_name): resolves the report and returns its list of sections. Step 2 (with section_name): fetches provider data for one specific section. Requires client_id on every call.6 params
Read a specific scheduled report for a client/campaign. Requires report_id or report_name. Step 1 (no section_name): resolves the report and returns its list of sections. Step 2 (with section_name): fetches provider data for one specific section. Requires client_id on every call.
client_idintegeroptionalThe client (campaign) ID. Required on every call.end_datestringoptionalEnd date in YYYY-MM-DD format.report_idintegeroptionalID of the report to read.report_namestringoptionalName of the report to read.section_namestringoptionalName of the section to fetch. Omit for Step 1 (list sections).start_datestringoptionalStart date in YYYY-MM-DD format.agencyanalyticsmcp_read_client_reviews#Fetch individual customer reviews for a specific review platform connected to a client. Returns one row per review. Supported platforms (7): google-my-business, vendasta, bird-eye, gather-up, grade-us, trust-pilot, yelp.6 params
Fetch individual customer reviews for a specific review platform connected to a client. Returns one row per review. Supported platforms (7): google-my-business, vendasta, bird-eye, gather-up, grade-us, trust-pilot, yelp.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe review platform provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_client_traffic#Fetch traffic analytics grouped by an entity type for a specific traffic platform. Returns one row per entity value (e.g. per device type, per country). Supported providers (6): google-analytics4, youtube, google-my-business, matomo-v1, clarity-v1, hub-spot.7 params
Fetch traffic analytics grouped by an entity type for a specific traffic platform. Returns one row per entity value (e.g. per device type, per country). Supported providers (6): google-analytics4, youtube, google-my-business, matomo-v1, clarity-v1, hub-spot.
clientIdintegeroptionalThe client (campaign) ID.endDatestringoptionalEnd date in YYYY-MM-DD format.entityTypestringoptionalThe dimension to group traffic by.limitintegeroptionalMaximum rows to return (default 50).providerstringoptionalThe traffic analytics provider slug.startDatestringoptionalStart date in YYYY-MM-DD format.testModebooleanoptionalSet to true to return sample data.agencyanalyticsmcp_read_knowledge_base#Search the AgencyAnalytics knowledge base for how-to articles and platform documentation. Use this to answer questions about how to use the AgencyAnalytics platform itself.1 param
Search the AgencyAnalytics knowledge base for how-to articles and platform documentation. Use this to answer questions about how to use the AgencyAnalytics platform itself.
searchstringoptionalSearch term to look up in the knowledge base.agencyanalyticsmcp_search_clients#Look up ONE specific client by name fragment, brand token, or domain. Returns the single best-matching client (highest cosine similarity over `company`+`url`) with a `providers` field — use that to confirm a provider is connected before calling any entity tool. If the user wants to list, browse, or enumerate clients — use `browse_clients` instead.1 param
Look up ONE specific client by name fragment, brand token, or domain. Returns the single best-matching client (highest cosine similarity over `company`+`url`) with a `providers` field — use that to confirm a provider is connected before calling any entity tool. If the user wants to list, browse, or enumerate clients — use `browse_clients` instead.
querystringrequiredA substantive client identifier the user actually provided — a name fragment, brand token, or domain (e.g. "acme", "shopify", ".io"). NOT a search engine query. Empty, whitespace-only, single-character, or generic-word queries will be rejected.agencyanalyticsmcp_search_users#Search the teammates and contacts in your own AgencyAnalytics account by name or email. Returns users you are allowed to contact with id, name, email, and role.2 params
Search the teammates and contacts in your own AgencyAnalytics account by name or email. Returns users you are allowed to contact with id, name, email, and role.
querystringrequiredRequired. A name or email fragment to search for, e.g. "john", "smith", "john@acme.com".limitintegeroptionalOptional. Maximum number of users to return (default 10, max 50).agencyanalyticsmcp_search_web#Search the live web and return a compact keyword-research result set: organic results (position, title, link, domain, snippet), related searches, People Also Ask questions, and the answer box when present. Use for keyword research, SERP inspection, and competitor discovery. Not client-scoped — no clientId required.6 params
Search the live web and return a compact keyword-research result set: organic results (position, title, link, domain, snippet), related searches, People Also Ask questions, and the answer box when present. Use for keyword research, SERP inspection, and competitor discovery. Not client-scoped — no clientId required.
countryCodestringoptionalOptional two-letter Google country code (gl), e.g. 'ca'.enginestringoptionalSearch engine to use: 'google' (desktop, default), 'google_mobile', or 'bing'.languagestringoptionalOptional language code (hl for Google, bing_language for Bing), e.g. 'en'.limitintegeroptionalMaximum organic results to return (1-100). Defaults to 10.locationstringoptionalOptional free-form location to localize results, e.g. 'Toronto, Ontario, Canada'.querystringoptionalThe search query — a keyword phrase to research.