MCP

MCP tools reference

Every tool the Buron MCP server exposes, with parameters and return shapes.

The Buron MCP server's tools are grouped into six areas. Your editor's agent calls these automatically based on your questions, you don't need to invoke them directly. This reference is useful when you're building custom skills or want to know exactly what's available.

The server registers 27 tools. Summary:

ToolWhat it does
listDatasetsList every dataset the team can query (ads, organic, cross-channel, attribution) with availability. The starting point for any data question.
describeDatasetOne dataset's full query contract: dimensions, metrics with aggregation semantics, filterable fields, legal operators, date grains.
queryDatasetRun a semantic query — dataset + measures/dimensions/filters/dateRange, no query language. Typed columns + positional rows.
runGoogleAdsGaqlEscape hatch: one read-only GAQL query against live Google Ads — config-graph and "right now" reads (strategies, targets, criteria, approval). Account-targetable; capped with explicit truncation; API v23.
saveQuerySave a semantic query as a named, team-shared saved query (round-trips with Explore).
runQueryExecute a saved query by id and return fresh results.
listQueriesList the team's saved queries as structured summaries; filter by dataset.
createDashboardAssemble a custom dashboard from existing saved queries; returns its buron:// URI.
addDashboardPanelAppend a saved query as a tile on a custom dashboard.
listDashboardsList default + custom dashboards, fully hydrated (panels, viz, layout).
runDashboardRun a dashboard for a date range and return per-panel data with deep-link URIs.
getIntegrationConnection status of an integration. For google-ads includes the account topology: enabled accounts[], managerCustomerId, selected primary conversion action.
listGoogleAdsAccountsEvery enabled Google Ads account on the connection (id, name, currency, time zone) — the first read in an MCC/split case.
listFilesList knowledge files for the team.
readFileRead a knowledge file by path.
writeFileWrite or update a knowledge file.
globFind knowledge files by glob pattern.
grepSearch knowledge file contents by pattern.
listSkillsList installable Buron skills (the same set buron setup installs).
readSkillGet a skill's full SKILL.md template for local installation.
createMutationProposalDraft a typed, guardrailed account-change proposal (never applies anything; a human approves in-app).
listMutationProposalsList the team's mutation proposals with status.
getMutationProposalRead one mutation proposal (diff, basis, status).
dismissMutationProposalWithdraw a drafted proposal.
refreshMutationProposalRe-check a proposal's basis against live account state.
requestMutationRevertDraft the inverse proposal for an applied change.
listMutationLedgerRead the applied-change history (the audit ledger).

Datasets

You query your data by picking metrics, dimensions, and filters from a dataset — there is no query language to write. Live Google Ads datasets answer ad questions on the free tier; warehouse datasets cover your synced sources (organic search, YouTube, cross-channel, attribution). The flow is always: listDatasetsdescribeDatasetqueryDataset.

listDatasets

List every dataset this team can query, with availability. No parameters.

Returns { datasets: [...] }. Each entry carries an id, name, description, family (ads / organic / cross-channel / attribution), live (true for free-tier live datasets), and an availability object — for unavailable datasets, the reason and the action that would unlock it.

describeDataset

Describe one dataset's fields before you query it.

ParameterTypeRequiredDescription
idstringYesDataset id from listDatasets (e.g. "gsc-queries")

Returns the dataset's dimensions and metrics (each with its aggregation semantics), available date grains, the legal filter operators per field type, and the dataset's grain in plain language.

queryDataset

Run a query by picking fields — no SQL or GAQL.

ParameterTypeRequiredDescription
datasetstringYesDataset id
measuresstring[]At least one of measures/dimensionsMetric field keys to aggregate
dimensionsstring[]Dimension field keys to group by
filtersobject[]No{ field, op, value?, valueEnd?, negated?, logic? } — legal ops per field come from describeDataset
dateRangeobjectNo{ from, to, granularity? }; omit for all-time
orderByobject[]No{ field, dir } over selected fields
limitnumberNoDefault 50, max 1000

Returns typed columns, positional rows, rowCount, a truncated flag, and an applied echo of the request. Validation errors name the problem and suggest valid fields, operators, or values.

runGoogleAdsGaql

Escape hatch: run a single read-only GAQL query against live Google Ads when no dataset covers the question. Prefer queryDataset for metrics; reach for this on config-graph and "what is it right now" reads: bidding strategies and targets, conversion actions, campaign criteria, ad approval status, goal wiring. Works on the free tier (it reads the live connection, not the warehouse).

ParameterTypeRequiredDescription
querystringYesA single read-only GAQL SELECT statement (no semicolons)
customerIdsstring[]NoExplicit account targeting. Omit to fan out across every enabled account — pass one child id when diagnosing an MCC/split structure
loginCustomerIdstring | nullNoMCC header override. Omit for the stored manager; null for none

Returns { rows, meta } — rows are keyed by dotted GAQL field paths exactly as queried. Guarantees: every SELECTed field is present on every row (explicit null when Google omits it), int64 metrics arrive as real numbers, results are capped at 2,000 rows with an explicit meta.truncated flag, and per-account failures are reported verbatim in meta.errorsByCustomer — never silently dropped. Write metrics.cost in SELECT (auto-expanded to metrics.cost_micros and normalized back to currency units); Buron's synthetic.channel_group / synthetic.country_group dimensions work in SELECT, WHERE, and ORDER BY. GAQL is not SQL: no JOIN, no GROUP BY, no OR, no subqueries. Google Ads API v23 — field names change across versions.

The previous raw query tool and POST /api/v1/query were replaced by this surface and removed.

Saved queries

Saved queries store the same structured definition the Explore builder uses, so an agent-saved query reopens fully editable in the product, and a query saved from the product runs here.

saveQuery

Save a semantic query for reuse.

ParameterTypeRequiredDescription
namestringYesDisplay name (e.g. "Top search queries, 30d")
queryobjectYesA queryDataset-shaped SemanticQuery (dataset + picks)
vizobjectNoChart config; defaults to a table

Returns the saved query with its buron://query/{uuid} URI.

runQuery

Execute a saved query by id, recompiled from its current definition (a later edit in the product is reflected).

ParameterTypeRequiredDescription
idstringYesSaved query id

Returns the same result envelope as queryDataset.

listQueries

List saved queries, optionally filtered by dataset.

ParameterTypeRequiredDescription
datasetstringNoOnly queries built on this dataset id

Returns { queries: [...] }. Each entry includes id, name, dataset, kind (structured / raw-sql), the picked query, and the buron://query/{uuid} URI.

Dashboards

Dashboards are pre-built views that combine multiple queries into KPIs, charts, and tables. Buron ships with default dashboards and your team can create custom ones.

listDashboards

List every dashboard available to your team: default dashboards plus any custom dashboards. Returns the fully-hydrated shape: each dashboard carries a description, tags, and panel definitions. Each panel is either a query tile (backed by a structured dataset query) or a rollup tile (a bespoke computed panel). For an ad-hoc question not covered by a saved dashboard, use queryDataset instead.

No parameters.

Returns { dashboards: [...] }.

runDashboard

Run a dashboard for a date range and return panel data.

ParameterTypeRequiredDescription
idstringYesDashboard ID (e.g. "google-ads-overview", or a custom UUID)
fromstringYesStart date, YYYY-MM-DD
tostringYesEnd date, YYYY-MM-DD
freshbooleanNoBypass the per-account cache

Returns the computed panel data: KPIs, chart series, and detail tables.

createDashboard

Assemble a custom dashboard from existing saved queries.

ParameterTypeRequiredDescription
namestringYesDashboard name
queriesobject[]YesOrdered panels, each { queryId, position, size? } referencing a saved query

Returns the dashboard with its buron://dashboard/{uuid} URI.

addDashboardPanel

Append a saved query as a tile on a custom dashboard your team owns.

ParameterTypeRequiredDescription
dashboardIdstringYesA custom dashboard id
queryIdstringYesAn existing saved query id

Returns the updated dashboard.

Integrations & account topology

getIntegration

Check the connection status of an ad platform integration.

ParameterTypeRequiredDescription
providerstringYesIntegration provider (e.g. "google-ads")

Returns { connected, provider, status, externalAccountId }. For google-ads the response also carries the account topology: accounts[] (customerId, name, currency, time zone for every enabled account), managerCustomerId (the MCC linkage, when manager-scoped), and selectedConversionAction — the team's primary conversion action, the config behind synthetic.selected_conversions and the dashboard KPIs.

listGoogleAdsAccounts

List every enabled Google Ads account on the team's connection — the first read in any MCC or account-split situation. No parameters.

Returns { accounts: [{ customerId, descriptiveName, currencyCode, timeZone }], count }.

This roster is the boundary. Account selection happens once, in the connection flow, where you see only the accounts your Google login grants access to and choose which ones Buron may use. Every read on this surface — queryDataset, runGoogleAdsGaql, dashboards — is confined to that chosen set; asking for an account outside it returns an error naming the account, not data. Changing the selection means reconnecting. There is deliberately no tool for enumerating accounts under a manager account: for an agency, the rest of your client roster is not visible to agents, only the accounts you enabled for this team.

Mutations (write rail — entitlement-gated)

Teams with mutations enabled get the proposal rail: agents draft typed, guardrailed account-change proposals; nothing is ever applied by an agent — a human reviews and approves in-app, every applied change lands in an audit ledger, and applied changes carry a drafted inverse for one-click revert. Tools: createMutationProposal, listMutationProposals, getMutationProposal, dismissMutationProposal, refreshMutationProposal (re-checks a proposal's basis against live state), requestMutationRevert, listMutationLedger. Teams without the entitlement don't see these tools at all.

Knowledge files

Your team's knowledge layer is a file system. These tools give your editor full read/write access.

readFile

Read a file by path.

ParameterTypeRequiredDescription
pathstringYesFile path (e.g. /ads/taxonomy.md)

Returns the file content as text. Returns an error if the file doesn't exist.

writeFile

Write or update a file.

ParameterTypeRequiredDescription
pathstringYesFile path
contentstringYesFile content
metadataobjectNoOptional metadata object

Returns confirmation with the path and character count.

listFiles

List files in a directory.

ParameterTypeRequiredDescription
directorystringNoDirectory path (e.g. /ads/google/). Lists root if omitted

Returns { files: [...] }.

glob

Find files matching a glob pattern.

ParameterTypeRequiredDescription
patternstringYesGlob pattern (e.g. /ads/google/reports/*.md)

Returns { files: [...] }.

grep

Search file contents for a pattern.

ParameterTypeRequiredDescription
patternstringYesSearch pattern (regex)
directorystringNoDirectory to search in

Returns { matches: [...] }.

Editor skills

These tools let your editor discover and install Buron skills (like /launch) directly.

listEditorSkills

List skills that can be installed into your project. Returns each skill's name and description, plus the install targets for each supported editor.

No parameters.

Returns { skills: [...], installTargets: [...] }.

readEditorSkill

Get the full template for a skill.

ParameterTypeRequiredDescription
namestringYesSkill name from listEditorSkills (e.g. "launch", "setup-google-ads-tracking")

Returns the full SKILL.md template as text. Write it to {projectRoot}/{editorSkillsDir}/{name}/SKILL.md to install.

Was this page helpful?

On this page