- Brand
- Whatagraph
- Category
- Data & Analytics
- Primary Subcategory
- Ad Campaign Analytics & Reporting
Integration details
Description
Connect seamlessly to 60+ platforms—including Google Ads, GA4, Shopify, Meta, and more—and access all your cross-channel performance data in one place. Simply ask questions in natural language to retrieve campaign results, compare performance across channels, and uncover trends without digging through dashboards. Explore your full reporting structure with ease: navigate spaces, reports, tabs, and widgets, and understand exactly how your data is organized. Dive into connected data sources to see available metrics and dimensions, so you can analyze performance with precision and confidence. Whatagraph helps you go from raw data to clear insights—faster and smarter.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Ad Campaign Analytics & Reporting
- Secondary Subcategories
- None listed
- Brand
- Whatagraph
- Access
- Account required
- First tracked
- 2026-06-17
- Tool count
- 57
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Whatagraph
Get updates when Whatagraph’s Discoverability Score or category rank changes.
Competing in ChatGPT Ad Campaign Analytics & Reporting
View Category57 tools agents can invoke
Permanently delete an AI visibility monitor, its prompts, and all captured answers. The monitor's data source is removed from the team, so widgets built on it stop loading. Use `action=delete_monitor` with the `monitor_id` from `list-ai-visibility`. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, reports. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-ai-visibility
Delete an AI agent for the team (soft delete). Deletion is blocked while the agent has active conversations (processing, retrying, cancelling, or awaiting action) — wait for them to finish or cancel them first. Use `action=delete` with an `agent_ulid`. Use `list-agents` with `action=list` to find ULIDs. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: agent schedules, agent triggers, conversations. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-agents
Remove scheduled report delivery configurations. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: scheduled report deliveries. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-automations
Delete data blends. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, reports, filters, goals. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-blends
Delete one of your conversations (soft delete). Only `type=user` (chat) conversations can be deleted — inter-agent and builder conversations are managed by their agent lifecycle and are not deletable here. Deletion is blocked while a conversation is still active (processing, retrying, cancelling, or awaiting action) — cancel it first. Use `action=delete` with a `type` and `conversation_id`. **Destructive actions.** Every action of this tool: permanently deletes data. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-conversations
Permanently delete one or more custom dimensions and all their related mappings, tags, and fields. A dimension still used by widgets or filters is blocked (unless `force=true`) and the references are reported, because deletion is a hard delete that cannot be undone. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, filters, reports, blends. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-custom-dimensions
Permanently delete one or more custom metrics and all their related field mappings. A metric still used by widgets or filters is blocked (unless `force=true`) and the references are reported, because deletion is a hard delete that cannot be undone. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, filters, reports. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-custom-metrics
Delete data transfers. This removes the ETL transfer configuration and stops data syncing. Use `action` to choose the operation: - `delete` — delete a transfer. **Requires confirmation.** **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: source groups, widgets. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-destinations
Delete a dynamic integration that has never been connected. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: integration_definitions, integration_keys. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-dynamic-integrations
Delete a filter by ID. This removes the filter (soft delete). Use `action` to choose the operation: - `delete` — remove a filter (soft delete) **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, blends, overviews. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-filters
Delete goals. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: overviews. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-goals
Delete overviews. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: overview shares. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-overviews
Delete reports. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: report tabs, widgets, automations, shares, snapshots. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-reports
Remove public share links from reports and overviews. Target a report with `report_id` or an overview with `overview_id` — one or the other, never both. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: public links already handed out. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-sharing
Delete report snapshots. Use `action` to choose the operation: - `delete` — delete a snapshot **Destructive actions.** Every action of this tool: permanently deletes data. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-snapshots
Delete source groups. This removes the source group, its configs, sources, and the associated virtual integration source. This action cannot be undone. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, blends, reports, transfers. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-source-groups
Remove data sources from the team. This disconnects the source and removes its data from reports. Use `source_ids` to specify which sources to delete. Requires confirmation. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: widgets, blends, reports, goals, source groups. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-sources
Delete spaces. Cannot delete the "Home" space. If a user says "space", "folder", or "client", they mean a space. Use `action=delete` with a `client_id` to soft-delete a space and all its reports. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: reports, overviews, member access. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-spaces
Delete report templates. Does NOT delete reports created from the template. **Destructive actions.** Every action of this tool: permanently deletes data. Breaks downstream: linked reports. These actions use a two-step server contract: the first call returns a preview without changes; executing the same arguments requires its single-use `confirm_token`. Playbook reference: `whatagraph-deleting`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
delete-templates
Export a report as a file — Excel data or a rendered PDF. Returns a temporary download URL that expires in 1 hour. Creates a private export file and, for PDF, a background render job. Exporting never changes the report's sharing settings: an unshared report stays unshared. Choose with `format`: - `xlsx` (default) — every widget as its own sheet with its own columns and data. The file can be large; when you have a shell, inspect parts of it rather than loading it whole. Calendar and filter control widgets are skipped. Requires the `widget-csv-export` plan feature. - `pdf` — the report rendered as a document. Layout is fixed and not configurable: landscape, 1440 CSS px wide, one page per tab, each page's height following that tab's own content (so pages in one document can differ in height). A PDF is rendered in the background, so **the first call does not return the file** — it returns a `pdf_job_id`. Call again with that `pdf_job_id` to collect it: `status: pending` means it is still rendering (wait a few seconds and repeat), `status: ready` carries the `download_url`, and `status: expired` means the job is unknown or older than 24 hours, so start a new one. Parameters: - `report_id` (required) — report to export - `format` (optional) — `xlsx` (default) or `pdf` - `tab_id` (optional) — a single tab. For `xlsx` only that tab's widgets are exported; for `pdf` the document is that one tab rather than the whole report. - `widget_ids` (optional, `xlsx` only) — limit to specific widgets - `from` / `till` (optional, `xlsx` only, YYYY-MM-DD) — fallback date range for widgets that don't have one configured - `pdf_job_id` (`pdf` only) — collect a render started by an earlier call Playbook reference: `whatagraph-export`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
export-report
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. `limit` sets the page size; the response is also capped at ~50 KB. When the full result exceeds either bound, rows are paginated — check `page.has_more` and pass `page.cursor` in the next call to get the next page. `page.estimated_total` is the true total row count, not just the rows returned. When comparison data is included, both primary and comparison rows paginate together in lockstep under one shared ~50 KB cap (a single cursor advances both blocks, each tracking its own position). This tool has a workflow playbook: run `list-skills` (or `load-skill` by the matching `whatagraph-<domain>` name) for its required fields, valid ID shapes, call sequence, and known gotchas before composing a call. Whatagraph's data model is specific, so a call assembled without the playbook often fails on a field name or ID.
fetch-data
Internal: returns the data payload for a widget preview. Called by the preview app, not by the model. Requires the `token` from `preview-widget`.
get-widget-preview-payload
List the canonical catalog of tools that custom agents can be configured with. Call this BEFORE `manage-agents` (action=create or action=update) to obtain valid `tool_name` values and pass them verbatim — do not invent or guess names. Optional `search` filters by tool_name/title/description; `category` filters by read / write / destructive. Returns each tool's `tool_name`, `title`, `category`, `default_permission`, a short `description`, and `skills` ({core_for, optional_for}) — the skills that need this tool as a core tool vs. use it only in optional sub-workflows.
list-agent-tools
Browse AI agents for the team. Use `action` to choose the operation: - `list` — list all agents for the team (excludes system agents and drafts). When an agent has a pending draft, the listed name/description/model/status reflect the draft, with `is_draft=true` and `has_draft=true`. - `show` — full details for one agent (requires `agent_ulid`). Returns the pending draft (`is_draft`/`changed_fields`) when one exists, else the live agent. `tools` lists every tool the registry offers, not only the ones this agent holds. Read `is_granted` before `permission`: `is_granted: false` means the agent does not have the tool and will refuse to call it, and `permission` is only the catalog default it would take if you granted it. Grant one with `manage-agents` `action=update`.
list-agents
List the files (assets) available to you. In an agent conversation this is the files owned by this conversation, your agent, or the team; otherwise those owned at the team level, at a space (client) you can access, or on a report under such a space. Returns a manifest with each asset's id, title, type, size, parse status and a short summary — never the full text. Use `read-document` with an asset id to read a text file's contents. Filter with `scope`, `kind` or `tag`. `filter_space_ids` / `filter_report_ids` narrow to assets owned EXACTLY at those space/report nodes. Omit all filters for the full manifest.
list-assets
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-automations
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 Each sub-source in `show` reports its own `filter`, which narrows that channel's rows before the join runs. Use `manage-filters` with `blend_sub_source_id` to change one. A blend filed under another blend is a child. `list` hides children unless you pass `parent_blend_id` or `include_children`, and `show` returns a parent's direct children. Playbook reference: `whatagraph-blends`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-blends
Browse conversations across all three conversation domains. Pass `type` to choose the domain and `action` for the operation (valid actions depend on the type): - `type=inter_agent` — `list_roots` (top-level conversations), `list_children` (children of a parent, requires `parent_conversation_id`), `show` (transcript, requires `conversation_id`). - `type=user` — `list` (Chat conversations), `show` (transcript, requires `conversation_id`). - `type=builder` — `list` (Agent Builder conversations, optional `filter_context_agent_ulid`), `show` (transcript, requires `conversation_id`). `filter_status` and `limit` (default 50, max 200) apply to the list actions. `show` returns the conversation header plus a cursor-paginated transcript of the visible user/assistant messages (`role`, `author`, `content`, `turn`, `created_at`). Pass `include: ["thinking", "tools"]` to add thinking rows and tool calls (each paired with its result as one entry). Follow `page.cursor` to read the rest. On agent-to-agent conversations most activity is tool calls, so the default view can be very short — pass `include: ["tools"]` to see what the agent actually did. Scope: every conversation on the team, plus your own private ones. Conversations another member marked private are not returned.
list-conversations
Read what a Custom API source already holds. A Custom API source is one you fill in yourself, so this is how you find out what is defined before you write to it with `manage-custom-api`. Use `action` to choose the operation: - `list_metrics` — the metrics defined on the source (external_id, name, type, accumulator) - `list_dimensions` — the dimensions defined on the source (external_id, name, type) - `list_data_points` — the stored rows, newest date first. Narrow with `from` and `till` Read the metrics and dimensions before defining any, so you update what is there instead of creating a near duplicate.
list-custom-api-data
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` — dimension details including rules: field mappings, condition maps (`data`), tag/source counts (`tag`), or AI prompt (`ai`) - `list_tags` — paginated tag values with assigned source IDs for a tag-type dimension (pass `cursor` from `page.cursor` for next page) - `usage` — how many widgets/reports use specific dimensions (bulk check) Both listings hide child dimensions by default, the same way the customer's own list does. Pass `parent_id` for one parent's children, or `include_children` for every dimension flat. Playbook reference: `whatagraph-custom-dimensions`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-custom-dimensions
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) Both listings hide child metrics by default, the same way the customer's own list does. Pass `parent_id` for one parent's children, or `include_children` for every metric flat. Playbook reference: `whatagraph-custom-metrics`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-custom-metrics
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
list-destinations
List the dynamic integrations this team has built — connectors stored as database rows rather than shipped in code. Each entry reports its status, its live version and its newest version, so a re-draft in progress is visible. Pass `channel_id` for one integration's full version history, including which version is live and whether the newest draft has been sampled (publishing is gated on that).
list-dynamic-integrations
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). Only team-level filters are listed; a filter attached to a widget config or a source is not one, so it is read with `show` by its ID - `show` — full filter details with options and values, for any filter the team owns, including the config-scoped ones `manage-filters` creates on a widget config, source or blend sub-source - `list_parameters` — list available filter parameters for a channel (e.g. attribution windows, granularity). These are channel-specific settings that affect how filtered data is queried from the provider API. Requires `channel_id` Playbook reference: `whatagraph-filters`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-filters
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`). For sub-source integrations (Google Sheets, BigQuery, Snowflake), returns parent sources with `has_sub_sources=true` - `list_available_sub_sources` — available sub-sources (e.g. sheet tabs, BQ tables) for a parent source (requires `account_id` and `source_external_id`)
list-integrations
Browse overviews (called 'measurements' in the backend) — KPI tracking dashboards that monitor specific metrics over time with visualizations. 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, applied filters, and share settings
list-overviews
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). By default only visible tabs are returned; pass `include_hidden: true` to also list hidden tabs - `show` — full tab details with all widgets and their types Playbook reference: `whatagraph-report-tabs`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-report-tabs
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. Each item includes `space_name`, `pages_count` (tab count), and `sources_summary` (connected integration names like `["Google Ads", "Meta Ads"]`). Filterable by `search` (name), `semantic_search` (meaning-based), `filter_space_ids`, `filter_channel_ids` (accepts slugs like `"google-ads"`), or `filter_source_ids` - `show` — full report details: pages with widgets, date range, share settings - `list_sources` — flat list of all data sources on a report, each with `is_sample_data` boolean - `resolve` — resolve a live-report URL, share URL, or hash to a report_id. Pass the URL or hash in `url_or_hash` Playbook reference: `whatagraph-reports`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
list-reports
CALL THIS FIRST when a task builds, changes or analyses something in Whatagraph and you do not yet know which skill covers it, and again when entering a new domain. Skip it when the skill name is known (load it with `load-skill`) or that skill is already loaded in this conversation. This discovers the workflow skills for the server: the step-by-step playbooks that carry the correct workflow, field IDs, and gotchas for each Whatagraph task (widgets, blends, filters, reports, automations, sources, and more). Skills are the operating manual — the other tools expose the raw API, and these playbooks tell you how to drive it, so loading the matching one before you build a call is what makes multi-step flows succeed instead of failing on a field name or ID. The index is small, cached, and read-only. Use `load-skill` to read a skill's full content; skill names follow a predictable `whatagraph-<domain>` convention, so a known domain can be loaded directly without listing first. A skill is listed even when this agent is missing a tool it needs — those tools are named in `missing_required_tools`, so you can read the playbook and tell the user which grant to ask the team owner for. Use `action` to choose the operation: - `list` — every skill on the server - `search` — find skills matching a query (requires `query` parameter). Supports natural language queries (e.g. "how to create a report") and keyword searches.
list-skills
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) - `show` — snapshot details including tab/widget/source counts and creator
list-snapshots
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: sources, plus each config's `id`, `output_name` (read-only, computed from the config's structure — not a create/update parameter), name, and `etl_config_ids` (the per-channel ETL config ids to re-pass when updating). Each entry in `etl_configs` carries `is_premade`: a premade channel is Whatagraph-managed and CANNOT be edited with `update_config` — build a new source group instead. - `source_issues` — list sources with disabled ETL configs (sync issues). Pass `group_id` to check a specific group, or omit it to check all groups at once - `list_output_names` — list valid `output_name` values for creating a source group (requires `source_ids`) Playbook — required fields, ID shapes, call sequence: `load-skill` `whatagraph-source-groups`.
list-source-groups
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`) - `resolve_fields` — semantic search for dimensions and metrics by natural language (requires `source_id` and `query`, e.g. "revenue", "how much did we spend"). Returns the best-matching fields ranked by relevance - `list_usage` — list usage counts for sources across reports, blends, transfers, source groups, and overviews (requires `source_ids`) - `health_summary` — aggregated counts by status (ok, error) and total — no pagination, one call for the whole account Each source item carries `requires_report_type`; when it is true, call `list_report_types` and pass the result to widget and fetch calls. The playbook lists the returned attributes and the aliases accepted in `fields` projections. Start here when you need to understand what data is available before fetching it. Playbook — required fields, ID shapes, call sequence: `load-skill` `whatagraph-sources-and-data`.
list-sources
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 **Home space:** Every team has a default "Home" space that holds reports not assigned to a named space. `list` returns it alongside named spaces — it is the one with `is_home=true`.
list-spaces
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-templates
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. Response includes `applied_theme_id`, `applied_theme_source` (`"team"`, `"report"`, `"system"`, or `null`), and `team_has_themes` - `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. Response includes `applied_color_id`, `applied_color_source` (`"team"`, `"report"`, `"system"`, or `null`), and `team_has_colors`. Names and IDs only — read a palette's actual colors with `show_color` - `show_theme` — single theme details: name, header, footer, and style options (requires `report_id` and `theme_id`) - `show_color` — a single palette's actual colors: `widget_colors`, `chart_colors`, `additional_colors` (requires `color_id`). `list_colors` returns names and IDs only, so this is the only way to read what a palette looks like. Works on built-in premade palettes too — pass the `applied_color_id` a report reports as `"system"` to read it, or to copy it as the base for a new palette. When `applied_theme_source` is `"system"`, the active theme is a built-in premade theme not included in the list — `team_has_themes: false` with a non-null `applied_theme_id` is expected in this case. **Email (whitelabel) themes** control report-delivery email branding (separate from report visual themes). These require the `whitelabel` feature. - `list_email_themes` — the team's email themes with their web/email domains and options - `list_web_domains` — web domains available for email themes (team + premade) — pick an `id` for `web_domain_id` - `list_email_domains` — email domains available for email themes (team + premade) — pick an `id` for `email_domain_id`
list-themes
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, layout, and per-config `metrics` / `dimensions` / `report_types` in the same shape `manage-widgets` accepts back, plus `source` and `options` (display settings only — bindings are not duplicated there). Image widget URLs in `options.images[].url` are returned as full, directly-usable URLs. Offline widgets (types 125-136) bind no metric, so they return no bindings; each row reports `data_summary` instead — `headers` and `data_row_count` for table and time-series shapes, `entry_names` and `entry_count` for the rest - `csv_export` — export widget data as CSV rows. Response contains `csv_rows: string[][]` (first row is headers, rest are data rows), `data_status` (`ready` = data loaded, `warning` = source error or warming up — check `warning_message` and retry after `retry_after_seconds`, `no_data` = no data for the date range), and `title` (widget display name) - `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 - `chart_presets` — how to set up a Dynamic Chart widget (type 142). Returns `families`: the chart families you set with `manage-widgets` `chart_type` (scatter, bubble, heatmap, candlestick, combo, polar, pie family, …), each with what it needs bound. That is the normal path — the chart follows the widget's bindings, so the user can keep editing it in the drawer. Also returns `presets` with a runnable `example_chart_spec` for the escape hatch, `chart_spec`, which pins every column and stops the drawer changing what is plotted. No report_id needed - `currency_exchange` — list the money metrics on a widget that can be converted to a different currency, with each metric's current `external_id`, `original_currency`, `exchange_currency`, `default_currency`, and `is_converted` flag. Feed the `external_id` into `manage-widgets` action=convert_currency or restore with action=restore_currency. Requires the Data Transformation premium feature - `conditional_formats` — read how a table widget (type 102) colours its cells by value. Each metric reports a `mode`: `manual` (threshold rules, returned in `position` order — first match wins — with `operator`, `value`, `value_end`, `text_color`, `background_color`), `auto` (the whole column shaded in seven tints of `auto_color` across its own low-to-high range), or `none`. A metric is in one mode or the other, never both. Narrow with `metric_external_id`. Write with `manage-widgets` action=set_conditional_formats / add_conditional_formats / set_auto_colors. `action=show` also flags which metrics carry rules via `has_conditional_format` - `list_icons` — the icon library available to widget rows (KPI cards, list rows). No report_id needed. Narrow with `search` (matches name, tags and groups) or `icon_set`. Write the returned `icon` value verbatim into `rows[].options.icon` via `manage-widgets`; `action=show` reads it back as `rows[].icon` Playbook — required fields, ID shapes, call sequence: `load-skill` `whatagraph-widgets`.
list-widgets
Load a workflow skill — a step-by-step playbook for a Whatagraph task that carries the correct workflow, field IDs, and gotchas. Skill names follow a predictable `whatagraph-<domain>` convention (e.g. `whatagraph-widgets`, `whatagraph-blends`, `whatagraph-reports`), and each write tool names its own skill in its description, so a known domain can be loaded directly here; use `list-skills` to discover skills when the name is unknown. A skill loads even when you are missing a tool it needs — the missing tools are named in the response, and you should relay them to the user so the team owner can grant them. Use `action` to choose the operation: - `show` — full skill content (markdown) - `header` — description + first 200 characters preview
load-skill
Update team name and settings. Use `action` to choose the operation: - `update` — update team name and/or localization settings (timezone, currency, decimal places, start of week, region, text direction) Playbook reference: `whatagraph-team-and-members`, available through `load-skill`. Documents parameters, identifiers and operation dependencies.
manage-team
Render a Whatagraph widget inline in the chat as a live preview. The chat host displays the actual widget (same charts and theme as in the report) inside its sandbox. Use `widget_id` from `list-widgets` (action=show or action=list). The widget renders with the report's current theme and the widget's saved date range, or a `date_range_from` / `date_range_till` override if supplied.
preview-widget
Read the extracted text of a document available to you, by its asset id (from `list-assets`). Use `offset` and `limit` to page through long files. Image and PDF attachments return a short pointer rather than text. Never guess a file's contents; read it.
read-document
Whatagraph ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Whatagraph's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Whatagraph alternatives on ChatGPT?
As of 2026-11-02, Whatagraph competes with Ad Account Health Check, Ad Reporting by PaidSync.ai, Ad Superpowers, Adalysis, AdBeacon, AdKit - Ads Manager, Adlane, AdLiftr and 72 more in ChatGPT Ad Campaign Analytics & Reporting, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.