AI agents invoke runReport to trigger actions in Google Analytics. What it does depends on the arguments the agent supplies, and its effects often reach beyond the immediate call — builds kicked off, notifications sent, workflows started.
While the underlying effect is retrieving analytics data (read-like), the tool 'runs' a report by executing a request against the Google Analytics API. This is classified as Execute because it triggers an external operation whose results depend on the arguments passed (dimensions, metrics, date ranges, filters, etc.).
From the tool's definition "Run a report" - the verb 'run' indicates executing an operation against the GA4 API, triggering an external query/computation rather than a simple read.
Documented attack patterns abuse exactly the kind of access runReport gives an agent:
PolicyLayer is an MCP gateway — it sits between your AI agents and Google Analytics, and nothing reaches the server without passing your rules. This is the rule we recommend for runReport:
{
"version": "1",
"default": "deny",
"tools": {
"runReport": {
"limits": [
{
"counter": "runreport_rate",
"window": "minute",
"max": 10,
"scope": "grant"
}
]
}
}
} runReport stays usable, but rate-capped — a runaway agent can't fire it dozens of times a minute. Everything else on the server is denied unless you say otherwise.
Free to start. No card required.
Run a report to get analytics data. It is categorised as a Execute tool in the Google Analytics MCP Server, which means it can trigger actions or run processes. Use rate limits and argument validation.
Register the Google Analytics MCP server in PolicyLayer and add a rule for runReport: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Google Analytics. Nothing to install.
runReport is a Execute tool with high risk. Execute tools should be rate-limited and have argument validation enabled.
Yes. Add a rate_limit block to the runReport rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for runReport. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
runReport is provided by the Google Analytics MCP server (ruchernchong/mcp-server-google-analytics). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
Deterministic rules across all 5 Google Analytics tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.
Free to start. No card required.
5 Google Analytics tools catalogued and risk-classified — across an index of 42,500+ MCP servers.