MCP Server
MCP Server

Whatagraph MCP Server

Connect your AI assistant to Whatagraph and ask questions about your marketing data in plain language — no code, no exports, no dashboards to dig through.

What is this?

The Model Context Protocol (MCP) is an open standard that lets AI assistants like Claude connect directly to the tools you already use. This server gives your AI assistant secure, read-only access to your Whatagraph marketing data — so you can ask questions and get answers without leaving your conversation.

What can you do with it?

  • Ask about campaign performance — "How did my Google Ads campaigns perform this month?" or "Which Facebook ad had the best ROAS last week?"
  • Get traffic breakdowns — "Show me sessions by channel for March" or "What are my top traffic sources?"
  • Explore your connected sources — see all the marketing accounts connected to your Whatagraph team and what data is available
  • Combine data across channels — pull data from Google Ads, Facebook, GA4, LinkedIn, and more in a single conversation

Getting Started

To connect your AI assistant to Whatagraph, copy the server URL below and paste it into your AI client's MCP settings:

URL https://mcp.whatagraph.com/mcp

Works with Claude, Cursor, and any MCP-compatible client. Just paste this URL into the MCP server settings — no API keys needed.

If your client uses a configuration file, add this:

{
  "mcpServers": {
    "whatagraph": {
      "type": "streamable-http",
      "url": "https://mcp.whatagraph.com/mcp"
    }
  }
}

Authorizing Access

The first time your AI assistant connects, you will need to authorize it to access your Whatagraph data. If you are already logged in to Whatagraph, this takes just a few clicks — no passwords or API keys to manage.

1

A browser window opens

Your AI client will open a Whatagraph authorization page. If you are already logged in, you will go straight to team selection.

2

Select your team

Choose which Whatagraph team you want the AI assistant to access. If you belong to multiple teams, pick the one you want to work with.

3

Approve and start asking questions

Click approve and you are all set. Your AI assistant now has access to the marketing data for your selected team.

Your data is always accessed securely over an encrypted connection. The AI assistant gets read-only access to the team you selected — it cannot modify any data, change settings, or access other teams.

Usage Examples

Here are some real-world examples of what you can ask your AI assistant once connected to Whatagraph:

Campaign Performance Review

Ask your AI assistant to compare campaign performance across date ranges and channels:

"Show me how my Google Ads campaigns performed this month compared to last month. Break it down by campaign name and include spend, clicks, and conversions."

Traffic Source Analysis

Pull data from Google Analytics to understand where your traffic is coming from:

"What are my top traffic channels for March? Show sessions, new users, and engagement rate by channel grouping."

Cross-Channel Ad Creative Review

Compare ad performance across Facebook, Google Ads, and other paid channels:

"Which Facebook ads had the best click-through rate last week? Include spend, impressions, clicks, and CTR for the top 10 ads."

Multi-Source Summary

Get a high-level overview across all your connected data sources:

"Give me a summary of all my connected data sources and their key metrics for the past 30 days."

Available Tools

Behind the scenes, your AI assistant uses the following tools to access your data. You do not need to call these yourself — just ask a question in plain language and the assistant will pick the right tools automatically.

list-skills

CALL THIS FIRST — before any other tool — on the first turn of every new conversation. Discovers available workflow skills: step-by-step playbooks for common Whatagraph tasks. The index is small, cached, and read-only. Use load-skill to read the full content of a skill. Call again when entering a new domain. Use action to choose the operation:

  • list — all available skills
  • search — find skills matching a query (requires query parameter). Supports natural language queries (e.g. "how to create a report") and keyword searches.

load-skill

Load a workflow skill — a step-by-step playbook for a Whatagraph task. Use list-skills first to discover available skills. Use action to choose the operation:

  • show — full skill content (markdown)
  • header — description + first 200 characters preview

list-sources

Browse data sources connected to your team. Data sources are specific accounts/properties connected from integrations (e.g. a specific Google Ads account, a specific GA4 property). Use action to choose the operation:

  • list — list all connected data sources (cursor-paginated, pass cursor from page.cursor for next page)
  • show — full details for one source (requires source_id)
  • list_metadata — list metadata for source management; use scope to fetch only what you need (integrations, accounts, spaces, users, tags, categories, or all)
  • list_report_types — list available report types for a source (requires source_id)
  • list_dimensions_and_metrics — list available dimensions and metrics (cursor-paginated, requires source_id, optionally report_type, filter, is_universal)
  • list_usage — list usage counts for sources across reports, blends, transfers, source groups, and overviews (requires source_ids)

Start here when you need to understand what data is available before fetching it.

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

fetch-data

Fetch marketing data from a connected source. Returns rows of metric values optionally grouped by dimensions for a date range. Use the list-sources tool first to discover available sources, report types, and field names. Important: if the response indicates data is not yet ready (rate-limited or processing), wait the indicated retry_after seconds and call again with the same parameters.

Field IDs come in three families, and the valid set depends on the source AND report type: native dotted IDs (e.g. metrics.cost_micros on Google Ads), bare IDs (e.g. sessions on GA4), and custom-field IDs (universal_metric_{id} / universal_dimension_{id}). Never guess the family — copy the external_id verbatim from list-sources action=list_dimensions_and_metrics for the same source_id and report_type you pass here.

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-spaces

Browse spaces (also known as "client folders"). Spaces are the top-level containers that organize reports and data sources. If a user says "space", "folder", or "client", they mean a space. Use action to choose the operation:

  • list — cursor-paginated list of spaces the user can access (pass cursor from page.cursor for next page)
  • show — full details for one space (report/measurement counts)
  • children — list sub-spaces under one space

list-reports

Browse reports within spaces (client folders). Reports contain pages of data visualization widgets. Use the list-spaces tool first to find the right space, then this tool to explore reports inside it. Use action to choose the operation:

  • list — cursor-paginated list of reports, filterable by name, space, integration, or source (pass cursor from page.cursor for next page)
  • show — full report details: pages with widgets, date range, share settings
  • list_sources — list data sources and sample integrations used in a report
  • resolve — resolve a live-report URL, share URL, or hash to a report_id. Pass the URL or hash in url_or_hash

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-report-tabs

Browse tabs (pages) within a report. Each report has one or more tabs, each containing widgets (data visualizations). Called "tabs" in the UI, stored as "report_pages" in the backend. Use the list-reports tool first to find the report, then this tool to explore its tabs. Use action to choose the operation:

  • list — list all tabs in a report (id, name, position, widget count)
  • show — full tab details with all widgets and their types

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-widgets

Browse widgets on report tabs. Widgets are visual data components — charts, tables, single values, funnels, media, goals, etc. — that display marketing data from connected sources. If a user says "chart", "graph", "table", "KPI card", or "visualization", they mean a widget. Use action to choose the operation:

  • list — list all widgets in a report (summaries grouped by tab)
  • show — full widget details: type, configs with metrics/dimensions/source, layout
  • csv_export — export widget data as CSV rows. Check data_status in the response: ready (data loaded), warning (data source error or still warming up — check warning_message for details, retry later), no_data (no data for the date range)
  • list_premade — cursor-paginated list of premade/template widgets (no report_id needed, pass cursor from page.cursor for next page). Requires channel_id to scope results to a specific integration

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

export-report

Export all widgets in a report (or a single tab) as CSV in one call. Use this instead of calling list-widgets with action=csv_export once per widget — one export-report call returns every widget's CSV plus metadata (title, source, date range, widget type), grouped by tab.

Parameters:

  • report_id (required) — report to export
  • tab_id (optional) — limit to a single tab
  • widget_ids (optional) — limit to specific widgets
  • from / till (optional, YYYY-MM-DD) — fallback date range for widgets that don't have one configured

Comment, calendar, image, and filter control widgets are skipped (no tabular data).

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-integrations

Browse available integrations (channels) and connected accounts. If a user says "channel" or "integration", they mean this tool. Use action to choose the operation:

  • list — all implemented integrations
  • list_grouped — integrations grouped by category with source counts
  • list_accounts — connected accounts for a specific integration (requires channel_id)
  • list_available_sources — available sources for an account (requires account_id)

list-themes

Browse report visual themes and color palettes. Control branding, colors, and visual appearance of reports. Use action to choose the operation:

  • list_themes — cursor-paginated list of available themes. Pass report_id to see both report-level and team-level themes with active status; omit report_id for team-level themes only (pass cursor from page.cursor for next page)
  • list_colors — cursor-paginated list of color palettes. Pass report_id to see both report-level and team-level palettes with active status; omit report_id for team-level palettes only (pass cursor from page.cursor for next page)
  • show_theme — single theme details: name, header, footer, and style options (requires report_id and theme_id)

list-templates

Browse report templates — reusable report blueprints. Templates can be applied to create new reports. Linked reports auto-update when their template changes. Use action to choose the operation:

  • list — cursor-paginated list of team templates with tags and linked report counts (pass cursor from page.cursor for next page)
  • show — template details: pages with widget counts, theme settings
  • linked_reports — reports created from this template (auto-sync with template changes)

list-snapshots

Browse report snapshots — saved versions of a report's structure. Use action to choose the operation:

  • list — cursor-paginated snapshots for a report with timestamps and creator (pass cursor from page.cursor for next page)

view-sharing

View report sharing settings and public share URLs. If a user says "share link", they mean this tool. Use action to choose the operation:

  • show — current sharing settings and share URL for a report

URL types: The share_url is the public viewer URL (e.g. https://reports.live/shared/<hash>). This is NOT the signed-in editor URL (https://live.whatagraph.com/client/<space_id>/live-report/<report_id>).

view-team

View team settings, subscription details, available roles, and perform global search across the entire platform. Use the search action when you don't know which domain (reports, spaces, overviews) to look in. Use action to choose the operation:

  • show — team info: name, settings, enabled features
  • search — global cross-domain search: finds reports, overviews, and spaces matching a term
  • roles — available team roles for this team (admin, manager, editor)
  • show_subscription — current subscription plan and usage limits
  • list_plans — available subscription plans

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-automations

Browse scheduled report delivery configurations. If a user says "schedule", "automated report", or "email delivery", they mean automation. Use action to choose the operation:

  • list — automation schedules for a specific report (requires report_id)
  • list_all — all automations across the account (no report_id needed), with cursor pagination. Supports search (by report name) and frequency filters
  • show — full automation details: schedule, timezone, compare type, PDF settings

list-custom-dimensions

Browse custom dimensions (universal dimensions). These are user-created dimensions that combine or transform data from connected sources. Use action to choose the operation:

  • list — cursor-paginated team custom dimensions with optional type/search filter (pass cursor from page.cursor for next page)
  • list_with_premades — cursor-paginated list including premade (system) dimensions alongside team ones
  • show — full dimension details (metadata, timestamps, creator)
  • usage — how many widgets/reports use specific dimensions (bulk check)

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-custom-metrics

Browse custom metrics (universal metrics). These are user-created metrics that combine or transform data from connected sources using formulas or aggregations. Use action to choose the operation:

  • list — cursor-paginated team custom metrics with optional type/search filter (pass cursor from page.cursor for next page)
  • list_with_premades — cursor-paginated list including premade (system) metrics alongside team ones
  • show — full metric details
  • usage — how many widgets/reports use specific metrics (bulk check)

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-blends

Browse data blends. Blends combine data from multiple sources into a single virtual data source for cross-channel reporting. Use action to choose the operation:

  • list — cursor-paginated list of blends with optional search/filter (pass cursor from page.cursor for next page)
  • show — full blend details with sub-sources, join configuration, and usage stats

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-source-groups

Browse source groups. Source groups combine multiple data sources into a single aggregated source with unified report type configurations. Use action to choose the operation:

  • list — cursor-paginated list of source groups, supports search (pass cursor from page.cursor for next page)
  • show — full source group details with sources and configs
  • source_issues — list sources with disabled ETL configs (sync issues)
  • list_output_names — list valid output_name values for creating a source group (requires source_ids)

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-filters

Browse unified filters. Filters are saved filter configurations that can be applied to data sources and widget configs to narrow down displayed data. Use action to choose the operation:

  • list — cursor-paginated list of team filters, filterable by name and channel (pass cursor from page.cursor for next page)
  • show — full filter details with options and values

Tip: If you haven't already this conversation, consider calling list-skills first to check for a workflow playbook (e.g. report digests, metric fetching, blends). Skip if nothing relevant exists.

list-overviews

Browse overviews (called 'measurements' in the backend) — KPI tracking dashboards that monitor specific metrics over time with visualizations and optional targets. If a user says 'overview', they mean this tool. Use action to choose the operation:

  • list — cursor-paginated list of team overviews, supports search (pass cursor from page.cursor for next page)
  • show — full overview details with configs and share settings

view-goals

View data goals (called 'data goals' in the backend, 'goals' in the UI) — targets set on specific metrics to track progress toward KPIs. Use action to choose the operation:

  • list — paginated list of goals with optional search/filter by source
  • show — show details for a specific goal by ID

list-destinations

View data transfers and destination types. Use action to choose the operation:

  • list — paginated list of transfers with optional filters by name, status, issue, or destination
  • show — full details for a specific transfer by ID, including its configs
  • list_jobs — paginated list of ETL jobs for a specific transfer, optionally filtered by config_id and state
  • list_destination_types — available destination types (BigQuery, Looker Studio, Whatagraph Storage) with their required components and locations

Limits

The server allows up to 60 requests per minute per user. This is more than enough for normal conversations — you will likely never hit this limit.

Need Help?

If you run into any issues or have questions about using the MCP server with your AI assistant:


For Developers

If you are building an MCP client or integration, here are the technical details:

  • Transport: Streamable HTTP via POST https://mcp.whatagraph.com/mcp
  • Authentication: OAuth 2.1 Authorization Code with PKCE
  • Required scope: mcp:use
  • Server metadata: GET https://mcp.whatagraph.com/.well-known/mcp-server.json
  • Dynamic client registration: POST https://mcp.whatagraph.com/oauth/register
  • Rate limit: 60 req/min, 5 req/sec per authenticated user