Skip to content

Tool Reference

The CloudQuell MCP server exposes 43 tools29 read tools and 14 write tools. This page lists every one, grouped by domain, with what it does, its key parameters, whether it reads or writes, the OAuth scope it requires, and its MCP annotations.

Everything here is derived directly from the deployed tool definitions (src/tools/, src/schemas/, src/tools/register.ts). If a tool isn’t on this page, it isn’t in the server.

Scope. Read tools require the read scope (granted by default at sign-in). Write tools require the admin:write scope and confirm: true on the call (see Authentication & authorization). A token with admin:write also has read.

MCP access is a paid feature. Calling any tool on this page requires your organization to be on a paid CloudQuell plan (the mcp_access entitlement). A Free org can connect and list the tools, but every tool call returns upgrade_required. See Access, limits & data scope.

Annotations. Every tool carries MCP tool annotations that clients use to drive UI and confirmation prompts. They are hints, not enforcement — the real gate is the scope + confirm check.

Annotation shown Meaning
read-only readOnlyHint: true — never modifies state.
write · additive readOnlyHint: false, destructiveHint: false — creates/updates, reversible.
write · destructive destructiveHint: true — removes a record (e.g. delete/cancel).
· idempotent idempotentHint: true — repeating the same call has no extra effect.
· side-effecting dispatches something real to the outside world (e.g. a test message).

All tools set openWorldHint: true (they call live CloudQuell backends).

Common parameters. Almost every tool accepts:

  • response_formatconcise (default; key fields only, fewer tokens) or detailed (the full parsed payload).
  • limit — caps the rows returned in list sections (defaults noted per tool).
  • integration_id — scope to one (or more) provider connections; omit for the whole organization.

All tool output is capped at ~25,000 tokens (~100 KB); on overflow the tool returns a short message telling the agent how to narrow the request rather than truncating silently.


Tool What it does Key parameters R/W · scope Annotation
query_costs The one flexible cost-query tool. Returns a cost slice for the org. view="overview" (default) = MTD vs. previous month, per-account & per-service rollups, service comparison. view="detailed" = pivot breakdowns; pair with group_by. view (default overview), group_by (service/account/product/usage_type/tag), start_date/end_date (YYYY-MM-DD), provider (aws/azure/gcp/snowflake/anthropic/openai), account_id, service, granularity, limit, response_format Read · read read-only

query_costs views: only overview and detailed are valid values. Any other value (e.g. savings, anomalies, budget_status, tag_coverage, allocation, commitments) is rejected as an input-validation error — those slices are served by their own dedicated tools instead. Use get_savings, list_anomalies, get_budget_status, get_tag_coverage, get_allocation_breakdown, and list_commitments for them.

Tool What it does Key parameters R/W · scope Annotation
get_ai_spend The org’s direct AI / LLM spend — Anthropic (Claude) or OpenAI API usage, selected with provider (anthropic is the default; openai needs the OpenAI integration connected). Returns cost (dollars, FX-correct) and tokens per row, broken down by the dimension you pick — workspace means Anthropic workspaces / OpenAI Projects, api_key is per-key token/request attribution (providers expose no per-key dollars), service_tier splits batch vs. standard. Excludes AWS Bedrock: it’s AWS-billed and already in your cloud spend (query_costs), so it’s left out here to avoid double-counting — don’t add this figure to cloud totals expecting Bedrock to be separate. provider (anthropic default / openai), group_by (model default / token_type / workspace / api_key / service_tier / cost_type / provider / day / none), start_date/end_date (req, YYYY-MM-DD), model, token_type, workspace, response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
get_savings The org’s full savings picture in one call: headline rollup (banked / open / potential), by-action-type breakdown, effective-savings-rate metrics, and the filtered list of recommendations (rightsizing, idle, commitment purchases) with dollar estimates, effort, and confidence. minMonthlySavings ($ floor), actionType, accountId (id or name), product, limit (default 50), response_format Read · read read-only
get_recommendation_history The status-change audit trail behind a single recommendation: each entry’s status (and previous status), any notes, realized savings, dismissed reason, and when it changed. recommendation_id (req), limit, response_format Read · read read-only
update_recommendation_status Mark a savings recommendation applied, dismissed, in_progress, active, etc. Optionally record an audit note, realized savings, or a dismissal reason. recommendation_id (req), status (req), notes, realized_savings, dismissed_reason, confirm (req) Write · admin:write write · additive · idempotent
Tool What it does Key parameters R/W · scope Annotation
list_anomalies Lists cost anomalies, derived client-side from month-over-month and week-over-week movement (the backend has no precomputed anomaly list). Flags a service when its MoM increase clears min_pct_increase, or when spend appears for a service with no baseline (new-service anomaly). min_pct_increase (default 25), min_cost (default 0), service, provider (aws/azure/gcp/snowflake/anthropic/openai), limit (default 50), response_format Read · read read-only
investigate_anomaly Deep-dives one service: chains three reads — anomalies view (weekly trend + MoM), per-resource breakdown for a date, and the ±7-day daily series — and returns a synthesized verdict on whether the trend looks anomalous. service (req), date (YYYY-MM-DD; defaults to current MoM period end), account_id, top_n_resources (default 15), response_format Read · read read-only
get_weekly_cost_slices Weekly per-service cost slices for the trailing ~12+ weeks plus the MoM-by-service comparison — for charting trends and spotting swings. service, account_id, provider (aws/azure/gcp/snowflake/anthropic/openai), limit (default 500), response_format Read · read read-only
list_anomaly_dismissals The org’s active anomaly dismissals — each row carries the (service, period, window) key plus the reason and when it was dismissed. Use it to find the exact key undismiss_anomaly needs. limit, response_format Read · read read-only
dismiss_anomaly Suppresses an anomaly so it no longer surfaces in the feed (upsert). The (service, period, window) triple is the dismissal key — keep it to reverse the dismissal later. service (req), period (req, e.g. “2026-06”), window (req, one of “mtd”/“weekly”/“monthly”), reason, confirm (req) Write · admin:write write · additive · idempotent
undismiss_anomaly Reverses a previous dismiss_anomaly so the anomaly can surface again. Provide the same key you dismissed with. service (req), period (req), window (req), confirm (req) Write · admin:write write · destructive · idempotent
Tool What it does Key parameters R/W · scope Annotation
get_budgets Lists budget definitions: name, amount, currency, period, dates, threshold percentages, notification channels, and scope. integration_id, limit, response_format Read · read read-only
get_budget One budget definition by id. budget_id (req), response_format Read · read read-only
get_budget_status Current spend vs. budget: actual, forecast, actual/forecast %, variance vs target, configured thresholds, and a derived status (on_track / warning / over) per budget. integration_id, limit, response_format Read · read read-only
create_budget Creates a budget. Currency is not settable — the backend stamps the org’s display currency. name (req), amount (req), start_date (req), period (default monthly), end_date, integration_id, scope (platform/services/tagKey+tagValue/costCenterId), threshold_pcts, notification_channels ({ slack, teams, email[] }), confirm (req) Write · admin:write write · additive
update_budget Partial update — send only the fields to change; everything omitted is preserved (so { enabled: false } pauses a budget without touching scope/thresholds/channels). Set enabled to enable/disable. Currency is not settable. budget_id (req), name, amount, start_date, end_date, period, integration_id, scope, threshold_pcts, notification_channels, enabled, confirm (req) Write · admin:write write · idempotent
delete_budget Deletes a budget by id — the budget and its alerting are removed. budget_id (req), confirm (req) Write · admin:write write · destructive · idempotent
Tool What it does Key parameters R/W · scope Annotation
list_commitments Lists Reserved Instances & Savings Plans with a utilization/expiry summary: type, status, days-until-expiry, utilization %, dollars saved, effective cost. integration_id, limit, response_format Read · read read-only
get_expiring_commitments Same data filtered by lifecycle status — defaults to expiring_soon (those needing renewal). status (default expiring_soon; expired/active/unknown), integration_id, limit, response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
get_tag_coverage Tagged-vs-untagged spend split for the current billing month to date, coverage per tag key, and the services with the most untagged spend — where tagging gaps hurt allocation accuracy. Covers cloud providers only (AWS / Azure / Google Cloud); AI and warehouse spend is excluded from the denominator by design. integration_id, limit, response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
get_allocation_breakdown How spend is allocated across cost centers for the current period: own spend, rolled-up spend (incl. descendants), % of total, parent linkage, plus a synthetic “Unallocated” bucket. integration_id, limit, response_format Read · read read-only
list_cost_centers The org’s cost-center definitions and their parent/child hierarchy (the allocation taxonomy). limit, response_format Read · read read-only
list_allocation_rules The rules that assign spend to cost centers (match dimension, service/tag, priority, enabled, integration scope). cost_center_id, limit, response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
list_saved_reports The org’s saved custom cost reports: name, description, chart type, scope, and the pivot config (dimensions, metrics, granularity). Each report is scoped to one integration (integration_id) or a whole provider (provider, e.g. aws — spans all of that provider’s integrations; integration_id is null then). integration_id, limit, response_format Read · read read-only
get_report One saved report by report_id (fetched from the list and filtered client-side — there is no per-report backend route). Carries the same integration-or-provider scope fields as the list. report_id (req), integration_id, response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
list_alert_rules The configured cost-alert rules: type (trend/threshold/anomaly/budget), cadence, thresholds, watched services/accounts, channels. An empty list is normal. integration_id, limit, response_format Read · read read-only
get_alert_rule One alert rule by id (filtered from the list client-side). alert_id (req), integration_id, response_format Read · read read-only
list_triggered_alerts The firing history — both cost-rule firings and budget-threshold crossings in one feed: subject, type, when, trigger vs. baseline value, delivery status. An empty list is normal. since (ISO date), severity — filters by delivery status (delivered/failed/suppressed), not a severity level, limit (1–500), response_format Read · read read-only
Tool What it does Key parameters R/W · scope Annotation
list_integrations The org’s provider integrations / cloud connections — each with id, name, provider (aws/anthropic/openai/…), and status. Use it to find the integration_id other tools accept for scoping. limit, response_format Read · read read-only
get_integration One provider integration by id (id, name, provider, status, plus every field in detailed mode). integration_id (req), response_format Read · read read-only
trigger_integration_ingest Kicks off (or re-runs) the on-demand data-ingest job for one integration. integration_id (req), confirm (req) Write · admin:write write · additive · idempotent
Tool What it does Key parameters R/W · scope Annotation
list_notification_channels The org’s notification channels — each with channel_id, channel_name, channel_type (slack/teams/email/webhook), and enabled. Use it to find the channel_id that delete/test need. limit, response_format Read · read read-only
create_notification_channel Creates a notification channel for cost alerts. channel_name (req), channel_type (req: slack/teams/email/webhook), destination (req: webhook URL or email), confirm (req) Write · admin:write write · additive
delete_notification_channel Removes a channel by id — it stops receiving alerts. channel_id (req), confirm (req) Write · admin:write write · destructive · idempotent
test_notification_channel Sends a real test message to a channel — recipients will see it. channel_id (req), confirm (req) Write · admin:write write · additive · side-effecting
Tool What it does Key parameters R/W · scope Annotation
send_invite Invites a person to the org by email. email (req), role (viewer/contributor/admin/super_admin; default contributor), message, confirm (req) Write · admin:write write · additive
cancel_invite Revokes a pending invite — it can no longer be accepted. invite_id (req), confirm (req) Write · admin:write write · destructive · idempotent
update_organization_name Renames the organization. org_id (req), organization_name (req), confirm (req) Write · admin:write write · additive · idempotent
update_organization_preferences Updates org preferences (e.g. currency, language, dismissed_quick_setup). org_id (req), preferences (req), confirm (req) Write · admin:write write · additive · idempotent

Use these to learn the valid filter values before querying.

Tool What it does Key parameters R/W · scope Annotation
get_metadata All three filter vocabularies in one call: available service codes, tag keys, and linked accounts ({ accountId, accountName }). integration_id, limit, response_format Read · read read-only
get_available_services The AWS service codes the org has cost data for (the valid service filter values). integration_id, limit, response_format Read · read read-only
get_available_tag_keys The cost-allocation tag keys available for grouping/filtering. integration_id, limit, response_format Read · read read-only
get_available_linked_accounts The linked AWS accounts as { accountId, accountName } pairs — to resolve ids ↔ names and find valid account_id filters. integration_id, limit, response_format Read · read read-only

Group Read tools Write tools
Cost query_costs
AI spend get_ai_spend
Savings get_savings, get_recommendation_history update_recommendation_status
Anomalies list_anomalies, investigate_anomaly, get_weekly_cost_slices, list_anomaly_dismissals dismiss_anomaly, undismiss_anomaly
Budgets get_budgets, get_budget, get_budget_status create_budget, update_budget, delete_budget
Commitments list_commitments, get_expiring_commitments
Tag coverage get_tag_coverage
Allocation get_allocation_breakdown, list_cost_centers, list_allocation_rules
Reports list_saved_reports, get_report
Alerts list_alert_rules, get_alert_rule, list_triggered_alerts
Integrations list_integrations, get_integration trigger_integration_ingest
Notifications list_notification_channels create_notification_channel, delete_notification_channel, test_notification_channel
Org & invites send_invite, cancel_invite, update_organization_name, update_organization_preferences
Discovery get_metadata, get_available_services, get_available_tag_keys, get_available_linked_accounts
Total 29 14

Not yet available (coming soon): async report generation — both generate_report (creating a job) and get_report_job_status (polling it) ship together as one unit. See the Changelog.