Agency Analytics MCP

Live

OAUTH 2.1

MARKETING REPORTING

Analytics

Agency Analytics MCP gives agents authenticated access to your marketing reporting: pull client metrics, keyword ranks, and campaign insights across every channel.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Agency Analytics MCP
agent · Acme Q3
Run
What changed the most for Acme Dental this month?
S
agencyanalyticsmcp_read_client_insights
88ms
Reporting agent
Top mover: organic sessions up 34% (GA4). Google Ads CPL down 18% to $42. Facebook reach fell 12%, and 3 keywords entered the top 10.
Sources: 3 providers, client Acme Dental, Jun 1 to Jun 30
agencyanalyticsmcp
3 providers
18:29
Message Claude...

Tools your reporting agent reaches for on Agency Analytics, scoped per user.

CALL ANY TOOL
Marketing reporting end to end: find clients, pull metric trends and keyword ranks, surface biggest movers, and read dashboards.
agencyanalyticsmcp_search_clients
Find a client
Look up one client by name fragment, brand token, or domain. Returns the single best match with its connected providers, so the agent can confirm an integration exists before pulling data.
Parameters
Name
Type
Required
Description
query
string
Required
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_read_client_metrics
Pull metric trends
agencyanalyticsmcp_read_client_insights
Surface biggest movers
agencyanalyticsmcp_read_client_keywords
Read keyword ranks
agencyanalyticsmcp_read_client_ads
Break down ad spend
agencyanalyticsmcp_read_client_custom_metrics
Read custom KPIs
agencyanalyticsmcp_read_client_dashboard
Read a dashboard
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Agency Analytics tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["agencyanalyticsmcp"], toolNames: [
    "agencyanalyticsmcp_search_clients",
    "agencyanalyticsmcp_read_client_metrics",
    "agencyanalyticsmcp_read_client_insights"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "What changed the most for Acme Dental this month?" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["agencyanalyticsmcp"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "How is organic traffic trending for Acme Dental?" }],
  tools,
});

// Execute the tool call with the user's vaulted Agency Analytics credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["agencyanalyticsmcp"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Which keywords entered the top 10 for Acme Dental this month?" }],
  tools,
});

// Tool call runs with the user's vaulted Agency Analytics credential
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["agencyanalyticsmcp"] }, pageSize: 100,
});

const agent = new Agent({
  name: "agency_reporting_agent",
  model: "gemini-2.5-pro",
  instruction: "Answer marketing reporting questions for the signed-in user.",
  tools,
});

await agent.run("Break down Facebook Ads spend by campaign for Northside Legal.");
Try these prompts
Copy any prompt into your agent. Each maps directly to an Agency Analytics tool. Click to copy, paste into your agent, done.
Client performance
Copy the prompt
Copied
What changed the most for Acme Dental this month?
Copy the prompt
Copied
Pull organic sessions for Acme Dental over the last 90 days.
Copy the prompt
Copied
How is Google Ads cost per click trending for Northside Legal?
Search and keywords
Copy the prompt
Copied
Which keywords entered the top 10 for Acme Dental this month?
Copy the prompt
Copied
List the Bing Ads keywords with the highest spend for Northside Legal.
Copy the prompt
Copied
Compare rank tracker positions month over month for Acme Dental.
Reports and KPIs
Copy the prompt
Copied
What is the cost per lead for Acme Dental this quarter?
Copy the prompt
Copied
Read the SEO section of Acme Dental's monthly dashboard.
Copy the prompt
Copied
Break down Facebook Ads spend by campaign for Northside Legal.
SEE HOW AUTH WORKS
Your users connect once. Their Agency Analytics credentials stay vaulted, every call is scope-checked, and every action is logged.
1
Authorize
Your user connects
Agency Analytics MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Agency Analytics MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Agency Analytics MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Agency Analytics MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other analytics connectors.
SALES
Deal intelligence agent
Combine Gong, Attio, and Slack signals to surface deal risks and next-best actions. Updated after every call.
ENGINEERING
Engineering standup agent
Aggregate GitHub and GitLab activity, link to Jira, and post a daily standup digest to Slack. No async updates.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
Other connector libraries treat auth as a demo afterthought. Scalekit starts with identity, scope enforcement, and audit. Connectors follow.
01.
Shared tokens break per-user analytics
A shared Agency Analytics token looks fine in a demo. In production every report pull looks like one service account, and you cannot tell which account manager queried which client's data. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Agency Analytics today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Agency Analytics as the user or through a shared key?
As the user. Scalekit resolves the credential of the person who triggered the agent at request time, so every metric pull and report read in your audit trail is attributed to a real user, not a shared service account.
Where is the Agency Analytics token stored?
In an AES-256 encrypted vault with per-tenant namespacing. Tokens are resolved at request time, never enter LLM context, refresh automatically, and can be revoked from one dashboard.
Can I limit what the agent does in Agency Analytics?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example read_client_metrics and read_client_insights without the raw AAQL export tool. Scalekit also enforces scope checks before every API call.
What happens when a user revokes access?
The credential is invalidated at the next tool call. The call fails closed, other users' connections are unaffected, and the revocation is logged in the audit chain.
Can the agent see every client in the agency account?
Only what the connected user can see. Tools like read_client_metrics and browse_clients require a client_id and run against the user's own OAuth token, so Agency Analytics staff permissions apply. Scalekit adds tool-level filtering on top if you want to narrow access further.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""agencyanalyticsmcp"": {
""url"": ""https://mcp.scalekit.com/agencyanalyticsmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.agencyanalyticsmcp]
url = ""https://mcp.scalekit.com/agencyanalyticsmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""agencyanalyticsmcp"": {
""url"": ""https://mcp.scalekit.com/agencyanalyticsmcp"",
""type"": ""http""
}
}
}