MCP Server Reference

Use the CloudZero MCP server to query cost data, retrieve optimization recommendations, explore Dimensions, access telemetry, and manage organization context. These are the same tools that power AI Hub. In the Model Context Protocol (MCP), tools are functions that an MCP server exposes for AI clients to call.

This reference documents each tool, its parameters, and which skills use it. Skills are guided analysis workflows available through the CloudZero Plugin that combine multiple tools into structured investigations. For setup instructions, see Set Up AI Hub.

Authentication

The MCP server supports three authentication methods:

  • CloudZero account (OAuth): On first use, a browser window opens to sign in. Sessions persist across AI tool restarts. See Set Up AI Hub for setup.
  • API key: Pass an X-Api-Key header for automation, CI/CD, or clients that do not support OAuth. API key usage is metered with a daily quota. See API Key Authentication for setup.
  • OAuth client: Register a client ID and client secret for an enterprise agent platform that cannot register itself with the MCP server. Users still sign in individually, so data access controls and permission sets apply. See Connect an Agent Platform with MCP OAuth Clients for setup.

Access and permissions

The MCP server enforces the same roles and permissions as the CloudZero application.

Data access controls

Your role's data access filters apply to all cost queries. If your role restricts visibility to specific Dimensions (for example, only Team = Engineering), the MCP server returns only matching data. API key users have full access to all cost data in the organization.

See Users and Permissions for details.

Permission sets

Some tools require specific permission sets on your role. If the required permission set is not granted, the tool returns an authorization error.

The MCP Settings permission sets control who can manage OAuth clients. They grant no access to the tools below.

ToolRequired permission setRequired scope
download_costformationDimension Definition Settings (View Dimension Definitions)cost-contexts:get-definition-download-link
get_container_usageKubernetes Cluster Details (View Kubernetes Cluster Details)container:get_usage
get_costformation_versDimension Definition Settings (View Dimension Definitions)cost-contexts:get-contexts
get_optimize_recsOptimize (View Recommendations)insights-workflow:list-recommendations
get_realized_savingsOptimize (View Recommendations)insights-workflow:get-realized-savings
get_resource_metadataResource Provider (View resource provider)resource-provider:get-resource-by-czrn
get_telemetry_dataTelemetry Stream Settings (View Telemetry Streams)unit-cost:get-records
get_telemetry_streamsTelemetry Stream Settings (View Telemetry Streams)unit-cost:streams
set_generated_contextOrganization Administration (Modify Organization Settings)czca-server:set-org-context
set_org_contextOrganization Administration (Modify Organization Settings)czca-server:set-org-context

All other tools are available to any authenticated user.

⚠️

API key users have full access to all cost data and all tools. Role-based data access filters and permission set restrictions do not apply. Use OAuth authentication when Role-based access control is required.

Usage quotas

API key calls are subject to a daily usage quota per organization. OAuth users are not metered.

ℹ️

Each organization has a default quota of 3,000 API key tool calls per UTC calendar day. The quota resets at midnight UTC.

Quota warnings

As your organization approaches the daily limit, the MCP server appends a warning to tool results at the following thresholds:

ThresholdExample warning
50%"Your organization has used 50% (1500/3000) of the daily API call quota."
75%"Your organization has used 75% (2250/3000) of the daily API call quota."
90%"Your organization has used 90% (2700/3000) of the daily API call quota."

Quota exceeded

When the daily quota is exceeded, the MCP server returns an error and no further API key tool calls succeed until the quota resets at midnight UTC.

Response size limit

The MCP server enforces a 5 MB maximum on individual tool responses. When a query produces a response above the limit, the server returns a tool error with the actual response size and guidance for narrowing the query:

"Tool '<tool_name>' produced a response of <X.X> MB, which exceeds the 5 MB limit. To recover, narrow your query: shrink date_range, add or tighten filters, reduce the limit parameter, or change group_by to a less granular dimension."

AI agents that receive this error can retry with a narrower query automatically.

Per-tool limit caps

Query-style tools also enforce a maximum value for the limit parameter. Requests that exceed the cap are rejected before the tool runs.

ToolMaximum limit
get_available_dimensions1,000
get_cost_data5,000
get_dimension_values1,000
get_optimize_recs1,000
get_telemetry_data5,000

Tools

CategoryToolDescription
Allocationsget_available_dimensionsList Dimensions for filtering and grouping
Allocationsget_dimension_valuesGet values for a specific Dimension
Contextget_org_contextRetrieve organization context: custom instructions and generated context
Contextget_org_context_versionsList available context versions
Contextset_generated_contextReplace the generated context that /init derives from query history
Contextset_org_contextReplace the custom instructions that agents follow
CostFormationdownload_costformationGet a download link for a CostFormation definition
CostFormationget_costformation_versList versions of a CostFormation definition
Kubernetesget_container_usageGet Kubernetes CPU and memory usage versus requests
Optimizationget_optimize_recsGet cost optimization recommendations
Optimizationget_realized_savingsTrack realized savings from addressed recommendations
Queryget_cost_dataQuery cost data with filters and groupings
Queryget_recent_query_historyView recent cost queries
Referenceget_reference_infoGet reference documentation
Resourceget_resource_metadataRetrieve metadata for a single cloud resource
Telemetryget_telemetry_dataRetrieve telemetry metrics
Telemetryget_telemetry_streamsList available telemetry streams

Allocations

get_available_dimensions

Lists all available Dimensions for filtering or grouping cost data, including both standard CloudZero Dimensions and custom Dimensions.

Parameters

ParameterRequiredDescription
filterNoFilter Dimensions by name pattern
force_refreshNoBypass cache and fetch fresh data
include_hiddenNoInclude hidden Dimensions in results
limitNoMaximum Dimensions to return

Skills: custom-dimension-analysis, tag-coverage-analysis, understand-cloudzero-organization

get_dimension_values

Retrieves the available values for a specific Dimension, such as all account names, service types, or team values.

Parameters

ParameterRequiredDescription
date_rangeNoTime period to scope the values
dimensionYesThe Dimension to get values for
limitNoMaximum values to return
matchNoFilter values by pattern

Skills: cost-comparison, custom-dimension-analysis, tag-coverage-analysis, understand-cloudzero-organization

Context

Organization context is the guidance every agent reads at the start of a cost analysis session. It has two sections with different owners:

SectionWritten byWhat it holds
Custom InstructionsYou, with set_org_context or by asking the agentRules agents must follow: business rules, Dimension preferences, team structures and cost ownership, cost allocation policies
Generated ContextThe /init prompt, with set_generated_contextWhat /init derives from your recent query history: Dimension definitions, common workflows, team structures, cost allocation patterns

Each tool writes only its own section and carries the other forward unchanged. Custom Instructions take precedence when the two overlap.

Keep custom guidance across /init

The /init prompt (/plugin:cost-analyst:cloudzero:init in the Claude Code Plugin) replaces Generated Context in full on every run and never edits Custom Instructions. To add a rule that persists, such as "exclude tax and support charges by default," save it to Custom Instructions with set_org_context or ask the agent to save it for you. For setup steps, see Set Up AI Hub.

If you ran /init before context was split into two sections, your earlier generated content is stored as Custom Instructions and preserved as written. The next /init run offers to move those sections out of Custom Instructions and removes only what you confirm.

get_org_context

Retrieves your organization's context for cost analysis. The instructions field returns up to two sections: # Custom Instructions, authored by your organization with set_org_context, followed by # Generated Context, derived from query history by the /init prompt. Custom Instructions take precedence. A section is omitted when it is empty.

Parameters

ParameterRequiredDescription
versionNoSpecific context version to retrieve (defaults to the latest)

Skills: understand-cloudzero-organization, all other skills (consume cached context)

get_org_context_versions

Lists all available versions of organization context for reviewing historical configurations. Every save with set_org_context or set_generated_context creates a timestamped version. Prior versions are retained for 30 days; the current version never expires.

Parameters

None.

Skills: understand-cloudzero-organization

set_generated_context

Replaces the Generated Context section with content derived from recent query history. The /init prompt calls this tool after you review and confirm the proposed context. Custom Instructions are preserved exactly as stored, so every rule a person added survives the refresh.

Parameters

ParameterRequiredDescription
generatedYesThe complete generated context. Replaces the current Generated Context section; Custom Instructions are left unchanged

Skills: Used by the /init prompt rather than by a skill

set_org_context

Replaces the Custom Instructions section with guidance you want every agent to follow: business rules, Dimension preferences, team structures and cost ownership, cost allocation policies. The tool leaves Generated Context unchanged, and /init in turn never modifies Custom Instructions. Because the call replaces the whole section, pass the full updated text when adding to existing instructions, not just the addition.

Parameters

ParameterRequiredDescription
contextYesThe complete custom instructions. Replaces the current Custom Instructions section; Generated Context is left unchanged

Skills: understand-cloudzero-organization

CostFormation

These tools read the YAML Dimension definitions you manage with CostFormation.

download_costformation

Returns a pre-signed, temporary download link for a CostFormation Dimension definition file, along with metadata about when the definition was last updated and by whom. The link expires shortly after it is issued. Request a new link rather than retrying an expired one.

Parameters

ParameterRequiredDescription
fqnNoFully qualified name of the CostFormation definition (defaults to the default definition)
versionNoVersion identifier to download (defaults to the latest version)

Skills: Available for direct CostFormation review and export workflows

get_costformation_vers

Lists the available versions of a CostFormation Dimension definition. Returns version identifiers with human-readable creation dates, most recent first. Use this to find a version before downloading it with download_costformation.

Parameters

ParameterRequiredDescription
fqnNoFully qualified name of the CostFormation definition (defaults to the default definition)
limitNoMaximum number of versions to return (default: 10)

Skills: Available for direct CostFormation review and export workflows

Kubernetes

get_container_usage

Reports how much CPU and memory Kubernetes workloads actually use versus what they request, for rightsizing and container-efficiency analysis. Data comes from the CloudZero Agent for Kubernetes, so it covers only clusters running the agent. Cost is not included here; use the cost tools for spend and pair the two to size the savings available from rightsizing.

Parameters

ParameterRequiredDescription
date_rangeNoTime period to query (defaults to the last 30 days)
filtersNoFilter criteria as a dict mapping a dimension to the values to include, for example {"k8s_workload": ["checkout-api"]}
partition_byYesKubernetes entity to key the results by

Partition values

ValueDescription
k8s_clusterKey results by cluster
k8s_namespaceKey results by namespace
k8s_workloadKey results by workload

Valid filters dimensions are k8s_cluster, k8s_namespace, k8s_workload, cloud_account_id, cloud_provider, and cloud_region.

Response

Each entity reports p95_used (the 95th-percentile amount used over the date range, which absorbs short spikes), requested (the amount reserved), and efficiency (p95_used / requested). Efficiency well under 1.0 means the workload reserves far more than it uses and is a rightsizing candidate; near 1.0 means it is sized about right; above 1.0 means it is using more than it requested and risks CPU throttling or OOM kills. Efficiency is capped at 2.0, so that value means "at least twice its request" rather than an exact ratio. Any of the three values can be null, most often for workloads that set no resource requests.

CPU is reported in cores and memory in GiB. The response echoes cpu_unit, memory_unit, and the effective date_range used.

Skills: Available for direct Kubernetes rightsizing lookups

Optimization

get_optimize_recs

Retrieves cost optimization recommendations from CloudZero, including rightsizing, Reserved Instance, and Savings Plan opportunities.

Parameters

ParameterRequiredDescription
limitNoMaximum recommendations to return
offsetNoPagination offset
sort_keyNoField to sort results by
sort_orderNoSort direction: asc or desc
statusNoFilter by recommendation status

Status values

ValueDescription
addressedCompleted
ignoredDismissed
in_progressBeing implemented
not_startedNot yet acted upon

Skills: service-cost-deep-dive

get_realized_savings

Retrieves realized savings from addressed Optimize recommendations over a time period, with optional breakdowns by Dimension.

Parameters

ParameterRequiredDescription
end_dateNoEnd date in YYYY-MM-DD format (defaults to today)
filtersNoFilter criteria as a JSON object (for example, {"service": ["EC2"]})
max_partitionsNoMaximum number of partitions to return (default: 10)
partition_byNoDimension to partition results by (for example, service, account, region)
start_dateNoStart date in YYYY-MM-DD format (defaults to 30 days ago)

Skills: Available for direct savings analysis and reporting

Query

get_cost_data

Queries cost data from CloudZero with support for grouping, filtering, and time-based analysis. This is the primary tool for retrieving cost information.

Parameters

ParameterRequiredDescription
cost_typeNoType of cost metric (default: real_cost)
date_rangeNoTime period to query (defaults to the last 30 days)
filtersNoFilter criteria to narrow results
granularityNoTime granularity: hourly, daily, weekly, 30days, monthly
group_byNoDimensions to group results by (up to 3)
limitNoMaximum results to return (default: 50)

Response

Each result row includes projected_row_count, the number of underlying cost records aggregated into that row. This is useful for diagnosing Dimension cardinality and allocation complexity. The value is null for hourly granularity.

Skills: cost-anomaly-detection, cost-comparison, cost-spike-investigation, cost-trend-analysis, custom-dimension-analysis, service-cost-deep-dive, tag-coverage-analysis, top-cost-drivers

get_recent_query_history

Returns an analysis of your organization's cost query patterns over the last 30 days, including the most frequently used queries (overall and over the last 7 days), the most frequently used Dimensions, and total query counts.

Parameters

None.

Skills: All skills (for context)

Reference

get_reference_info

Retrieves reference documentation about CloudZero concepts, workflows, and best practices.

Parameters

ParameterRequiredDescription
reference_typeYesType of reference to retrieve

Reference types

ValueDescription
cost_analyst_instructionsGeneral cost analyst guidance
cost_analysis_workflowBest practices for cost analysis
cost_typesAvailable cost metrics
custom_dimensions_workflowWorking with custom Dimensions
dimensionsStandard Dimensions
filtering_workflowHow to filter cost data

Skills: understand-cloudzero-organization, all skills (for reference lookups)

Resource

get_resource_metadata

Retrieves metadata for a single cloud resource by its CloudZero Resource Name (CZRN), including provider service, resource type, lifecycle state, tags, and relationships.

Parameters

ParameterRequiredDescription
czrnYesThe CloudZero Resource Name (CZRN) identifying the resource

Skills: Available for direct resource metadata lookups

Telemetry

get_telemetry_data

Retrieves telemetry metrics from configured telemetry streams for correlating costs with operational metrics.

Parameters

ParameterRequiredDescription
date_rangeNoTime period for telemetry data (defaults to the last 30 days)
filtersNoFilter criteria to narrow results; only Dimensions in the stream's keys can be used as filters
granularityNoTime granularity: hourly, daily, weekly, 30days, monthly; defaults to the stream's native granularity and cannot be finer than the stream's natural grain
group_byNoDimensions to group results by; only target Dimensions in the stream's keys are valid
limitNoMaximum results to return (default: 50)
stream_nameYesThe name of the telemetry stream to query

Skills: cost-trend-analysis, service-cost-deep-dive

get_telemetry_streams

Lists all available telemetry streams configured in your CloudZero organization.

Parameters

None.

Skills: cost-trend-analysis, service-cost-deep-dive

Parameter reference

Cost types

The cost_type parameter accepts the following values:

ValueDescription
amortized_costUpfront payments spread over term
billed_costAs invoiced
custom_costA cost calculation defined for your organization, available when CloudZero has configured one for you
discounted_amortized_costAmortized with discounts
discounted_costDiscount amounts applied
invoiced_amortized_costRecurring commitment charges amortized; upfront charges remain separate line items
on_demand_costOn-demand pricing
real_costAfter all discounts (default)
usage_amountUsage quantities (for example, GB-hours or compute-hours) instead of cost

Granularity options

The granularity parameter accepts:

ValueDescription
30daysFixed 30-day period breakdown
dailyDay-by-day breakdown
hourlyHour-by-hour breakdown
monthlyMonth-by-month breakdown
weeklyWeek-by-week breakdown

Omit the granularity parameter to return the total for the period with no time breakdown.

ℹ️

Have questions or feedback? Reach out to your account manager.


Did this page help you?