The Agency Analytics MCP connector routes your AI agent's tool calls to Agency Analytics's own MCP server through Scalekit. Each user signs in to Agency Analytics once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 35 tools.
- Tools
- 35
- What they doRead · write · destructive
- 34 · 1 · 034 read1 write0 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 Agency Analytics MCP connection
In AgentKit > Connections, create an Agency Analytics MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Agency Analytics MCP server, so you don't need to register an OAuth app.
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 = '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)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: 'agencyanalyticsmcp_browse_client_custom_metrics',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 = "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_browse_client_custom_metrics",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_toolagencyanalyticsmcp_browse_client_custom_metricsList 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.Read-onlyBrowseClientCustomMetrics
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.
Inputs
clientIdinteger- The client (campaign) ID.
agencyanalyticsmcp_browse_client_dashboardsList all dashboards for a client/campaign.Read-onlyBrowseClientDashboards
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.
Inputs
client_idinteger- The client (campaign) ID. Required on every call.
pageinteger- Page number for pagination (default 1).
agencyanalyticsmcp_browse_client_data_sourcesDiscover connected providers and available metric data sources for a campaign.Read-onlyBrowseClientDataSources
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).
Inputs
clientIdinteger- The client (campaign) ID.
messagestring- The user's original question — used to filter relevant data sources.
agencyanalyticsmcp_browse_client_reportsList all reports for a client/campaign.Read-onlyBrowseClientReports
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.
Inputs
client_idinteger- The client (campaign) ID. Required on every call.
agencyanalyticsmcp_browse_clientsBrowse or enumerate clients.Read-onlyBrowseClients
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.
Inputs
groupIdinteger- Folder ID to drill into. Omit to list all folders and ungrouped clients.
limitinteger- Maximum number of items to return (default 50, max 200).default
50 offsetinteger- Zero-based pagination offset (default 0).default
0 searchstring- Optional text filter applied to client name or URL.
statusstring- Optional status filter — e.g. "active" or "inactive". Omit to return all statuses.
agencyanalyticsmcp_fetch_webFetch a single public web page or document by URL and return its readable text.Read-onlyFetchWeb
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).
Inputs
urlstringrequired- Absolute http(s) URL to fetch, e.g. 'https://example.com/article'.
maxLengthinteger- Maximum characters of extracted text to return. Defaults to 30000; clamped to [1000, 100000].
agencyanalyticsmcp_read_client_ad_managerFetch a client's Google Ad Manager (sell-side / publisher ad-serving) analytics, broken down by a dimension.Read-onlyReadClientAdManager
Fetch a client's Google Ad Manager (sell-side / publisher ad-serving) analytics, broken down by a dimension. Returns one row per dimension value with the publisher's ad-revenue metrics (revenue, impressions, clicks, CTR, eCPM, fill rate, and more). This is the client-as-PUBLISHER earning ad revenue — NOT the client buying ads (use read_client_ads for spend-side campaign performance). Supported providers (1): google-ad-manager-v1.
Inputs
applyMarkupboolean- Whether to apply the client's agency markup to revenue and eCPM figures.default
false clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The dimension to break down Ad Manager revenue by.one of
advertisercreativeline_itemordercitycountryregioncustom_criteriaplacementbrowserdevicedevice_categorydomainoperating_systemdefaultadvertiser limitinteger- Maximum rows to return (default 50).default
50 providerstring- The Ad Manager provider slug.one of
google-ad-manager-v1 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_adsFetch ad data broken down by campaign, ad group, or ad for a specific platform.Read-onlyReadClientAds
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.
Inputs
applyMarkupboolean- Whether to apply the client's agency markup to cost/spend figures.default
false clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The entity type to break down by.one of
campaignadgroupadvideoreachdomaindefaultcampaign limitinteger- Maximum rows to return (default 50).default
50 providerstring- The ad platform provider slug.one of
googleadwordsfacebook-adslinked-in-adssnapchat-adstiktok-adsadrollamazon-adsbing-adstwitter-adsspotify-adsstack-adaptgoogle-display-video360pinterest-adsreddit-ads-v1simpli-ficentrocentro-basischoozleadformyelp-adsground-truth-v1 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_ai_trackerFetch a client's AI Tracker analytics — how visible the brand is inside AI assistants' answers (ChatGPT, Google AI Overview, Google AI Mode, Claude, Perplexity, Gemini), broken down by a dimension.Read-onlyReadClientAiTracker
Fetch a client's AI Tracker analytics — how visible the brand is inside AI assistants' answers (ChatGPT, Google AI Overview, Google AI Mode, Claude, Perplexity, Gemini), broken down by a dimension. Returns one row per dimension value with AI-visibility metrics (visibility, citations, position, sentiment, citation_rate, prompts). This is AI-answer visibility — NOT Google SERP keyword rankings (use read_client_keywords for that). Supported providers (1): agency-analytics-ai-tracker-v1.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The dimension to break down AI visibility by.one of
platformprompttopiccitation_domaincitation_urlby_dateby_date_platformby_date_topicdefaultplatform limitinteger- Maximum rows to return (default 50).default
50 providerstring- The AI Tracker provider slug.one of
agency-analytics-ai-tracker-v1 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_audienceFetch a client's audience demographics broken down by a demographic dimension for a specific connected platform.Read-onlyReadClientAudience
Fetch a client's audience demographics broken down by a demographic dimension for a specific connected platform. Returns one row per segment with the platform's audience metric. Use for 'who is the audience?' questions such as audience by age, gender, or country. Not a time-series tool and not ad performance by demographic. Supported platforms (5): instagram, youtube, tiktok-v1, pinterest-ads, linked-in.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The demographic dimension to break audience down by.one of
agegendercitycountrydevicecategoryregionindustryseniorityfunctioncompany_sizedefaultcountry limitinteger- Maximum rows to return (default 50).default
50 providerstring- The audience platform provider slug.one of
instagramyoutubetiktok-v1pinterest-adslinked-in startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_callsFetch call analytics grouped by an entity type for a connected call-tracking integration.Read-onlyReadClientCalls
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The dimension to group calls by.one of
call_typestatussourcedefaultstatus limitinteger- Maximum rows to return (default 50).default
50 providerstring- The call tracking provider slug.one of
marchextwiliowhat-convertscallrailcall-tracking-metricscall-sourcegoogleadwordsavanserdelaconwild-jar startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_client_contentFetch content analytics broken down by individual post, reel, pin, or video item for a specific social platform.Read-onlyReadClientContent
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The type of content: 'posts', 'reels', 'pins', or 'videos'.one of
postsreelspinsvideosdefaultposts limitinteger- Maximum rows to return (default 50).default
50 providerstring- The social platform provider slug.one of
facebookinstagrampinterestyoutubelinked-intiktok-v1vimeo startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_client_conversionsFetch conversion analytics broken down by conversion type for a specific platform connected to a client.Read-onlyReadClientConversions
Fetch conversion analytics broken down by conversion type for a specific platform connected to a client. Returns one row per conversion type with counts and (where the platform tracks it) value/cost. Not a time-series tool — use read_client_metrics for conversions over time, or read_client_ads for per-campaign totals. Supported platforms (6): google-analytics4, facebook-ads, stack-adapt, google-local-services-ads, bing-ads, simpli-fi.
Inputs
applyMarkupboolean- Whether to apply the client's agency markup to cost/value figures.default
false clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
limitinteger- Maximum rows to return (default 50).default
50 providerstring- The conversion platform provider slug.one of
google-analytics4facebook-adsstack-adaptgoogle-local-services-adsbing-adssimpli-fi startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_crmFetch CRM data for a specific platform connected to a client.Read-onlyReadClientCrm
Fetch CRM data for a specific platform connected to a client. Returns one row per entity (deal stage, company, contact segment, campaign, appointment, etc.). Use for sales-pipeline / CRM questions such as deals by stage, pipeline value, or contacts by lifecycle stage. Not a time-series tool — use read_client_metrics for pipeline/revenue trends over time. Supported platforms (5): hub-spot, salesforce, keap, high-level, sharp-spring.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The CRM entity type to fetch.one of
dealscompaniescontactscampaignsappointmentsconversationsdefaultdeals limitinteger- Maximum rows to return (default 50).default
50 providerstring- The CRM provider slug.one of
hub-spotsalesforcekeaphigh-levelsharp-spring startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_custom_metricsFetch the computed output of a single client's custom metrics (formula-driven KPIs such as 'Cost per Lead' or 'ROAS') over a date range.Read-onlyReadClientCustomMetrics
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.
Inputs
byDateboolean- Set to true to return values broken down by date.default
false clientIdinteger- The client (campaign) ID.
customMetricIdsarray- List of custom metric IDs to fetch. Omit to fetch all.
endDatestring- End date in YYYY-MM-DD format.
startDatestring- Start date in YYYY-MM-DD format.
agencyanalyticsmcp_read_client_dashboardFetch data for a specific dashboard.Read-onlyReadClientDashboard
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.
Inputs
client_idinteger- The client (campaign) ID. Required on every call.
dashboard_idinteger- ID of the dashboard to fetch.
dashboard_namestring- Name of the dashboard to fetch.
end_datestring- End date in YYYY-MM-DD format.
section_namestring- Name of the section to fetch data for. Omit for Step 1 (list sections).
start_datestring- Start date in YYYY-MM-DD format.
agencyanalyticsmcp_read_client_data_sourceRun a raw AAQL read query for one client and return the raw connector rows as CSV.Read-onlyReadClientDataSource
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.
Inputs
assetstring- The AAQL asset/table name.
clientIdinteger- The client (campaign) ID.
confirmedboolean- Set to true to confirm the export.default
false fieldsarray- Fields to include in the output.
filtersobject- Key-value filter map.
groupByarray- Fields to group by.
limitinteger- Maximum rows (default 50).default
50 offsetinteger- Pagination offset.default
0 providerstring- The integration provider slug.
sortobject- Sort configuration.
testModeboolean- Serve the provider's demo data instead of the client's live data, so a source can be read without a live integration.default
false
agencyanalyticsmcp_read_client_ecommerceFetch ecommerce data for a specific platform connected to a client.Read-onlyReadClientEcommerce
Fetch ecommerce data for a specific platform connected to a client. Returns one row per entity (product, order status, channel, subscription, payment, etc.). Use for online-store questions such as best-selling products, orders by status, sales by channel, or subscription revenue. Not a time-series tool — use read_client_metrics for revenue/sales trends over time. Metrics are provider-native and not directly comparable across platforms. Supported platforms (6): shopify, woocommerce, big-commerce-v1, stripe, keap, google-analytics4.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The ecommerce entity type to fetch.one of
productschannelsorderscustomerssubscriptionspaymentsrefundstransactionsdefaultproducts limitinteger- Maximum rows to return (default 50).default
50 providerstring- The ecommerce provider slug.one of
shopifywoocommercebig-commerce-v1stripekeapgoogle-analytics4 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_emailFetch email-campaign performance for a specific platform connected to a client.Read-onlyReadClientEmail
Fetch email-campaign performance for a specific platform connected to a client. Returns one row per email campaign with engagement metrics (sent, delivered, opens, clicks, open_rate, click_rate, unsubscribes, bounce_rate). Not a time-series tool — use read_client_metrics for email metrics over time. Sendinblue/Brevo ignores the date range and always returns all campaigns. Supported platforms (3): mail-chimp, hub-spot, sendinblue.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
limitinteger- Maximum rows to return (default 50).default
50 providerstring- The email platform provider slug.one of
mail-chimphub-spotsendinblue startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_formsFetch web-form submission analytics for a specific platform connected to a client.Read-onlyReadClientForms
Fetch web-form submission analytics for a specific platform connected to a client. Returns one row per form with its submission count (and, for HubSpot, views + submission/clickthrough rates). Not a time-series tool, call tracking, or conversions-by-type data — use read_client_metrics, read_client_calls, or read_client_conversions respectively. GravityForms reports an all-time count per form (its date range is ignored); HubSpot honors the date range. Supported platforms (2): gravity-forms-v1, hub-spot.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
limitinteger- Maximum rows to return (default 50).default
50 providerstring- The form platform provider slug.one of
gravity-forms-v1hub-spot startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_insightsReturn a single client's biggest-moving metrics (trend signals), ranked by the magnitude of their percent change — biggest movers first, whether up or down.Read-onlyReadClientInsights
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.
Inputs
clientIdinteger- The client (campaign) ID.
comparisonTypestring- The comparison type.one of
previous_periodyear_over_year directionstring- Filter to only gains ('up'), only declines ('down'), or flat metrics ('flat').one of
updownflat limitinteger- Maximum number of results (default 50).default
50 minPercentageChangeMagnitudenumber- Minimum absolute percent change to include.
periodinteger- Comparison window in days. Allowed values: 30 or 90.
agencyanalyticsmcp_read_client_keywordsFetch keyword data for a specific platform connected to a client.Read-onlyReadClientKeywords
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.
Inputs
applyMarkupboolean- Whether to apply the client's agency markup to cost/cpc figures (ad-platform providers only; no effect on organic/rank providers).default
false clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
limitinteger- Maximum rows to return (default 50).default
50 providerstring- The keyword platform provider slug.one of
googleadwordsbing-adsamazon-adspinterest-adssimpli-fibing-webmaster-toolsgoogle-search-consolerank-trackerse-ranking-v1 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_client_knowledgeAnswer 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).Read-onlyReadClientKnowledge
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.
Inputs
clientIdinteger- Optional. The client (campaign) whose documents to search. Omit to search across all accessible clients plus shared account-level documents.
promptstring- The natural-language question about the uploaded documents.
agencyanalyticsmcp_read_client_metricsFetch aggregated time-series metrics for a single client over a date range, scoped to one connected integration provider.Read-onlyReadClientMetrics
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
incrementstring- Time grouping: 'day' or 'month'.one of
daymonthdefaultday providerstring- The integration provider slug.one of
adrollbing-adsfacebookfacebook-adsgoogle-analytics4google-local-services-adsgoogle-my-businessgoogle-search-consolegoogleadwordsground-truth-v1high-levelinstagramlinked-inlinked-in-adspinterest-adsreddit-ads-v1simpli-fispotify-adsstack-adapttiktok-adstwitter-ads startDatestring- Start date in YYYY-MM-DD format.
agencyanalyticsmcp_read_client_pagesFetch page data for a specific platform connected to a client.Read-onlyReadClientPages
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The entity type: 'pages' or 'blog_posts'.one of
pagesblog_postsdefaultpages limitinteger- Maximum rows to return (default 50).default
50 providerstring- The page analytics provider slug.one of
google-analytics4google-search-consolehub-spotunbounceagency-analytics-auditor-4 startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_client_reportRead a specific scheduled report for a client/campaign.Read-onlyReadClientReport
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.
Inputs
client_idinteger- The client (campaign) ID. Required on every call.
end_datestring- End date in YYYY-MM-DD format.
report_idinteger- ID of the report to read.
report_namestring- Name of the report to read.
section_namestring- Name of the section to fetch. Omit for Step 1 (list sections).
start_datestring- Start date in YYYY-MM-DD format.
agencyanalyticsmcp_read_client_reputationFetch a client's aggregate review/reputation analytics for a specific connected review platform.Read-onlyReadClientReputation
Fetch a client's aggregate review/reputation analytics for a specific connected review platform. Returns review counts broken down by a dimension, or an overall rating summary. This is aggregate reputation analytics, NOT the individual reviews themselves (use read_client_reviews for review text/authors) and not a time-series tool. TrustPilot and Yelp return the current snapshot regardless of the requested dates. Supported platforms (5): bird-eye, trust-pilot, grade-us, gather-up, yelp.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The dimension to break reputation data down by. 'overall' is the only option that returns average_rating.one of
ratingsourcesentimentoveralldefaultrating limitinteger- Maximum rows to return (default 50).default
50 providerstring- The reputation/review platform provider slug.one of
bird-eyetrust-pilotgrade-usgather-upyelp startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_reviewsFetch individual customer reviews for a specific review platform connected to a client.Read-onlyReadClientReviews
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
limitinteger- Maximum rows to return (default 50).default
50 providerstring- The review platform provider slug.one of
google-my-businessvendastabird-eyegather-upgrade-ustrust-pilotyelp startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_client_site_auditFetch a client's technical site-audit data for a specific connected provider.Read-onlyReadClientSiteAudit
Fetch a client's technical site-audit data for a specific connected provider. Returns page-speed / Lighthouse scores and audit findings, or Search Console sitemap health. This is technical site health — NOT keyword rankings (use read_client_keywords) or page traffic (use read_client_pages), and not a time-series tool. startDate/endDate are ignored — results are always the current snapshot. Supported providers (2): google-page-speed-v1, google-search-console.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format. Ignored by this tool — site-audit results are always the current snapshot.
entityTypestring- The site-audit breakdown to fetch.one of
scoresscores_mobileauditsaudits_mobilesitemapssitemap_alertsdefaultscores limitinteger- Maximum rows to return (default 50).default
50 providerstring- The site-audit provider slug.one of
google-page-speed-v1google-search-console startDatestring- Start date in YYYY-MM-DD format. Ignored by this tool — site-audit results are always the current snapshot.
testModeboolean- Set to true to return sample data without a live API call.default
false
agencyanalyticsmcp_read_client_trafficFetch traffic analytics grouped by an entity type for a specific traffic platform.Read-onlyReadClientTraffic
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.
Inputs
clientIdinteger- The client (campaign) ID.
endDatestring- End date in YYYY-MM-DD format.
entityTypestring- The dimension to group traffic by.one of
agebrowsercampaignchannelcitycountrydevicedevice_modelfirst_user_source_platformgenderinterestlanding_pagelanding_page_query_stringlanguageoperating_systempagepercent_scrolledplatformregionsearch_termsession_keywordsession_manual_termsession_mediumsession_sourcesession_source_mediumsession_traffic_originsourcesource_mediumuser_typeimpression_typesearch_enginesocial_networkreferrerlocationdefaultsource limitinteger- Maximum rows to return (default 50).default
50 providerstring- The traffic analytics provider slug.one of
google-analytics4youtubegoogle-my-businessmatomo-v1clarity-v1hub-spot startDatestring- Start date in YYYY-MM-DD format.
testModeboolean- Set to true to return sample data.default
false
agencyanalyticsmcp_read_knowledge_baseSearch the AgencyAnalytics knowledge base for how-to articles and platform documentation.Read-onlyReadKnowledgeBase
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.
Inputs
searchstring- Search term to look up in the knowledge base.
agencyanalyticsmcp_search_clientsLook up ONE specific client by name fragment, brand token, or domain.Read-onlySearchClients
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.
Inputs
querystringrequired- A 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_usersSearch the teammates and contacts in your own AgencyAnalytics account by name or email.Read-onlySearchUsers
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.
Inputs
querystringrequired- Required. A name or email fragment to search for, e.g. "john", "smith", "john@acme.com".
limitinteger- Optional. Maximum number of users to return (default 10, max 50).default
10
agencyanalyticsmcp_search_webSearch 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-onlySearchWeb
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.
Inputs
querystringrequired- The search query — a keyword phrase to research.
countryCodestring- Optional two-letter Google country code (gl), e.g. 'ca'.
enginestring- Search engine to use: 'google' (desktop, default), 'google_mobile', or 'bing'.one of
googlegoogle_mobilebing languagestring- Optional language code (hl for Google, bing_language for Bing), e.g. 'en'.
limitinteger- Maximum organic results to return (1-100). Defaults to 10.
locationstring- Optional free-form location to localize results, e.g. 'Toronto, Ontario, Canada'.
agencyanalyticsmcp_create_mcp_feedbackRecord user feedback explicitly directed at the AgencyAnalytics MCP server experience — its tools, ergonomics, or quality of results.WriteCreateMcpFeedback
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.
Inputs
messagestringrequired- The user's feedback in their own words. 1-2000 characters.
sentimentstringrequired- Overall sentiment of the feedback.one of
positivenegative
No tools match.