get
Retrieve a saved Costory dashboard, report, cost alert, budget, or virtual dimension by ID, or inspect a BigQuery job. Use when a request needs an object's full settings or widget configuration. For saved objects, this retrieves configuration rather than executing their data queries. Response includes a type discriminator (dashboard | budget | costAlert | report | virtualDimension | bigquery_job) — branch on it.
BigQuery jobs: pass id <project>:<location>.<job_id> (auto-detected from that shape, or set type: "bigquery_job"). Location is case-insensitive (EU and eu are the same). Loaded with the free Jobs API (jobs.get) — user_email, referenced tables, slot/bytes metrics, query_text, and performance_insights — plus stages and children when it is a script parent. Each stage has its name, slotMs, shuffle bytes, and the SQL clause (FROM / JOIN / WHERE / GROUP BY) that places it in query_text. Stages are sorted by slotMs descending. Timing histograms and column lists are omitted. The first fetch is cached in Postgres (a finished job never changes); the second call is a cache hit. Use it to investigate a BigQuery cost line's underlying query.
Dashboard / budget / cost alert / report / virtual dimension lookups:
Budgets: pass the parent budget id (from search) or a budget version id; response includes budgetVersionId for query, plus costMetricId, currency, virtualDimension (id, name, bqName, values), excludedValues, lines, includedVirtualDimensionValues, filterCelRestrictToIncludedLines, and filterCelExcludeExcludedVirtualDimensionValues for aligning query cost with budget. howToQueryAlignedCost gives concrete example payloads.
Cost alerts: pass the alert id (from search or list_alerts); response includes alert configuration plus firingHistory (every stored firing day and group values that fired). The payload includes scopeId, the saved team scope. The returned queries are the stored internal shape — read-only, and they do not contain that scope filter. To change the series with update_alert, write a fresh queries array with filterCel exactly as for create_alert; do not echo these back. The payload also includes messageWidgets (the alert's message content: one ALERT body widget plus optional extras, ordered by position) and messageExecutionId on notified firingHistory rows — pass it to get_alert_message_execution to inspect the run that notified.
Reports: config in words plus run-health (status, nextRunDate, lastRunHealth, widgets array, recent per-destination delivery with executionIds) and shared reportContext. Read-only. To inspect a specific delivery's content, call get_report_execution (then get_report_execution_widget for drill-down).
Virtual dimensions: id / virtualDimensionId (same), hasPendingDraft, immutable bqName (BigQuery/CEL field for groupBy/filterCel — never derive from display name); published and optional draft (name, description, tags, computeStatus, values, rules, leftoverRule; draft may include draftValidation); dependencies. values is derived — output only. leftoverRule is separate from rules — do not put it in the rules array or pass it to update. For updates, copy rules from draft if pending else published, project each rule to { id, name, conditionCel, allocation } (omit position, isLeftovers, and any leftover/catch-all rule), and pass that full rules array to update_virtual_dimension_draft. Call get_skill with skillId: "virtual-dimensions" for allocation shapes and workflow.
Dashboards: call get_skill with skillId: "dashboards" before create/update. Shared settings are dashboardContext (period, groupBy, metricId, currency, conditionsCel, scopeId). Chart widgets include x/y/w/h and resolved queryConfig; text widgets have type: "text" and textContent. After fetch, use get_dashboard_widget_data / get_dashboard_widget_image, or update_dashboard to mutate.
Use "search" (or list tools) first to discover IDs. EXAMPLE: "Open the Kubernetes dashboard" (after search returned its ID) → { id: "clx9abc123" }
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>",
"context": "<context>"
},
"name": "get"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of a V2 dashboard, budget, cost alert, report, virtual dimension, or BigQuery job (from search / list tools). For budgets, pass parent budget id or budget version id. For BigQuery jobs, pass `<project>:<location>.<job_id>` — location is case-insensitive. Response includes a `type` discriminator: dashboard | budget | costAlert | report | virtualDimension | bigquery_job. | |
| slug | No | Organization slug. Omit to auto-detect from your account (fails if you belong to multiple orgs). | |
| type | No | Restrict the lookup to one resource type. Omit to try every type; a BigQuery job id is also auto-detected from its `<project>:<location>.<job_id>` shape. | |
| context | Yes | A few words on why you are calling this tool, for the server developer's analytics. Describe people and things by role, such as "a customer". Do not quote the user or include names, emails, or other personal details. | |
| llm_model | No | The model identifier you are running as, for example "claude-opus-4-8" or "gpt-5.2". Pass "unknown" if you are not certain. Recorded for the server developer's analytics. | |
| conversation_id | No | The conversation_id this server returned earlier in this conversation, unchanged, including after later user messages. Omit it if you have none. Recorded for the server developer's analytics. |