Skip to main content
Glama
cloudprice-mcp

cloudprice-mcp

export_focus

Converts pricing query results into FOCUS 1.3-shaped JSON or CSV rows for importing into Vantage, Microsoft Cost Management, OpenCost, Apptio, or other FinOps tools.

Instructions

Emit FOCUS 1.3-shaped rows from any pricing query, ready to import into Vantage Custom Providers / Microsoft Cost Mgmt / OpenCost / Apptio / any FinOps tool that consumes the FinOps Foundation's open billing schema (ratified Dec 2025). The rows populate the list-price columns (ListCost, ListUnitPrice, PricingQuantity, etc.) and leave billed/contracted/effective columns NULL since cloudprice produces projections, not real bills — that's explicitly documented in the result's notes field. Use this when the user says 'export my comparison to FOCUS', 'send this to Vantage', 'plug this into our FinOps stack'. Supports query_kind: compute_workload (calls assess_migration), token_pricing (compare_token_pricing), extended_model_lookup (lookup_extended_model_pricing). Format is 'json' (default) or 'csv'.

Input Schema

NameRequiredDescriptionDefault
modeNo
queryNo
egressNo
formatNojson
sourceNo
computeNo
storageNo
targetsNo
model_idNo
multi_azNo
providerNo
databasesNo
providersNo
commitmentNo
query_kindYesWhich underlying pricing tool to run before FOCUS-shaping.
model_familyNo
source_cloudNo
object_storageNo
billing_period_startNoISO date YYYY-MM-DD for the synthetic billing period start. Defaults to current month.
monthly_input_tokensNo
monthly_output_tokensNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.29.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and mostly does: it discloses that only list-price columns are populated, that billed/contracted/effective columns are left NULL because these are projections rather than real bills, and that this caveat is surfaced in the result's notes field. That is meaningful behavioral context a schema could not convey. It stops short of stating read-only/safety posture or row-volume expectations, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core capability and the alternative-routing sentence, which is good structure, but the first sentence is padded with a long slash-separated vendor list plus filler like '(ratified Dec 2025)' that adds no selection value. The information density is high but the packaging is bloated enough to cost readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description handles the hard parts well for a projection/export tool with no output schema — it explains what the emitted rows look like and which columns are intentionally NULL. The remaining gap is scope: with 21 params and no annotations or output schema, an agent still cannot tell from the description which parameters are required for each query_kind or how many rows to expect, so it is complete on semantics but thin on invocation detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 10% across 21 parameters, so the description must compensate. It does explain the one required parameter (query_kind, its three values, and which underlying tool each triggers) and documents format's json/csv default, which effectively tells the agent that remaining params are pass-through to the chosen pricing tool. However, 18 other params (mode, compute, storage, targets, commitment, token counts, billing_period_start, etc.) get no mapping to a query_kind, so the agent must still guess which subset applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb+resource ('Emit FOCUS 1.3-shaped rows from any pricing query') and immediately frames the deliverable as an import-ready artifact for named FinOps consumers. It is unmistakably an export/shaping tool, which none of the pricing/compare siblings are, so an agent can route to it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit selection signals ('export my comparison to FOCUS', 'send this to Vantage', 'plug this into our FinOps stack') and, crucially, maps each query_kind value to the underlying sibling it invokes (compute_workload → assess_migration, token_pricing → compare_token_pricing, extended_model_lookup → lookup_extended_model_pricing). That is exactly the when-to-use / which-alternative guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.