Cloud Cost MCP
Compare managed Kubernetes costs across AWS (EKS), Azure (AKS), GCP (GKE), and OCI (OKE), including control plane and node pricing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloud Cost MCPCompare 4 vCPU 16GB VMs across AWS, Azure, GCP, and OCI"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloud Cost MCP
Multi-cloud pricing comparison MCP server for AWS, Azure, GCP, and OCI. Compare compute, storage, egress, and Kubernetes costs across all major cloud providers with a single query.
⚠️ DISCLAIMER: All pricing data is retrieved from publicly available APIs and data sources including instances.vantage.sh, Azure Retail Prices API, and Oracle Cloud Price List API. This data is provided for informational and estimation purposes only. Cloud pricing changes frequently and may vary by region, account type, commitment terms, and other factors. Users are solely responsible for verifying all pricing information directly with cloud providers before making any purchasing or architectural decisions. The authors make no warranties about the accuracy, completeness, or timeliness of this data.
Features
Comprehensive Coverage: 4,900+ instance types across all providers
AWS: 1,300+ EC2 instances + 1,180+ managed-database types + Lightsail
Azure: 1,680+ VM types (official Azure Retail Prices API)
GCP: 360+ instance types across 40+ regions
OCI: 600+ products via Oracle API
No API Keys Required: All data from public APIs (instances.vantage.sh + provider APIs)
Fresh data, two ways: AWS/Azure/GCP bundled data is auto-refreshed weekly via GitHub Actions, and the
refresh_*tools fetch live pricing on demand (cached 60 min in-memory). OCI bundled data is curated. See Data freshness for the exact model.Natural Language Queries: Ask Claude "What's cheapest for 4 vCPU 16GB?"
Workload Calculator: Estimate full workload costs including compute, storage, and egress
Migration Planning: Calculate potential savings when switching providers
Related MCP server: cloudscope-mcp
Installation
For Claude Code Users
# One-command install
claude mcp add cloud-cost -- npx -y cloud-cost-mcpFor Claude Desktop Users
Add this to your claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json), then restart Claude Desktop:
{
"mcpServers": {
"cloud-cost": {
"command": "npx",
"args": ["-y", "cloud-cost-mcp"]
}
}
}Manual Installation
npm install -g cloud-cost-mcpThen reference the installed binary in any MCP client config:
{
"mcpServers": {
"cloud-cost": {
"command": "cloud-cost-mcp"
}
}
}Usage Examples
Once installed, just ask Claude:
Compare Compute
"Compare 4 vCPU 16GB VMs across AWS, Azure, GCP, and OCI"
"Find the cheapest cloud for an 8-core VM with 32GB RAM"
"What's the best deal for ARM instances with 4 cores?"Compare Storage
"Compare object storage pricing for 1TB across all clouds"
"What's the cheapest archival storage for 10TB?"Compare Egress (OCI Advantage!)
"Compare egress costs for 5TB monthly"
"What's the cheapest cloud for 10TB data transfer?"Note: OCI offers 10TB/month free egress - 100x more than AWS/Azure/GCP!
Full Workload Estimates
"Estimate cost for 3 VMs with 4 vCPU each, 500GB storage, and 1TB egress"
"What would a Kubernetes cluster with 5 nodes cost across all clouds?"Quick Estimates
"Quick estimate for a medium API server"
"Compare all clouds for a kubernetes-cluster preset"
"Estimate cost for gpu-training-large preset"GPU Pricing (OCI)
"List all available GPU shapes"
"Compare A100 vs H100 GPU pricing"
"What GPU should I use for ML training with 80GB memory?"
"Get details for BM.GPU.H100.8"Migration Planning
"How much could I save migrating from AWS to OCI?"
"Compare my current GCP setup against other clouds"Available Tools
Comparison Tools
Tool | Description |
| Compare VM/instance pricing by vCPU and memory |
| Compare object and block storage pricing |
| Compare data transfer costs (OCI: 10TB free!) |
| Compare managed K8s costs (EKS, AKS, GKE, OKE) |
| Find cheapest provider for given specs |
Calculator Tools
Tool | Description |
| Full workload estimate across all clouds |
| Instant comparison for common presets |
| Calculate migration savings |
| List available deployment presets |
Available presets: small-web-app, medium-api-server, large-database, ml-training, kubernetes-cluster, data-lake, high-egress-cdn, high-traffic-web, gpu-inference, gpu-training-small, gpu-training-large
Data Management Tools
Tool | Description |
| Check pricing data age (warns if >30 days) |
| Get detailed pricing for one provider |
| Storage pricing by tier for all providers |
Real-Time API Tools
AWS (1,147 EC2 + 353 RDS + Lightsail)
Tool | Description |
| Fetch 1,147 EC2 instance types with spot/reserved pricing |
| Fetch 353 RDS database instance types |
| Get Lightsail bundle pricing |
| List AWS regions with pricing data |
| List EC2 instance families |
GCP (287 instance types)
Tool | Description |
| Fetch GCP Compute Engine pricing (40+ regions) |
| List GCP regions with pricing data |
| List GCP instance families |
Azure (1,199 VM types)
Tool | Description |
| Fetch Azure Retail Prices API |
| Fetch 1,199 VM types from vantage.sh |
| List Azure regions with pricing data |
| List Azure VM categories |
OCI (600+ products)
Tool | Description |
| Fetch live OCI pricing (public API) |
| List OCI service categories |
GPU Tools (OCI)
Tool | Description |
| List GPU shapes with filtering by model, use case, price |
| Get detailed specs and pricing for a GPU shape |
| Compare multiple GPU shapes side-by-side |
| Get GPU recommendation based on workload type |
Available GPU shapes: A10, A100 80GB, H100 80GB, H200 141GB, L40S, MI300X
Status
Tool | Description |
| Check if all real-time APIs are accessible |
Data Freshness
All providers now support real-time pricing refresh via public APIs:
Provider | Data Source | Instance Types | Real-Time |
AWS | instances.vantage.sh | 1,147 EC2 + 353 RDS | ✓ Yes |
Azure | instances.vantage.sh + Retail Prices API | 1,199 | ✓ Yes |
GCP | instances.vantage.sh | 287 | ✓ Yes |
OCI | Oracle Cloud Price List API | 600+ | ✓ Yes |
Use check_api_status to verify API accessibility. Use get_data_freshness to check bundled data age.
Key Insights
OCI Cost Advantages
10TB/month free egress (vs 100GB on AWS/Azure/GCP)
Free Kubernetes control plane (basic clusters)
Uniform global pricing (no regional variation)
Always Free tier includes 4 OCPUs + 24GB RAM on ARM
Free Kubernetes Control Planes
OCI (OKE): Free basic clusters
Azure (AKS): Free control plane
AWS (EKS) and GCP (GKE): $73/month per cluster
Example Output
User: "Compare cost for a 4 vCPU, 16GB RAM VM across all clouds"
┌─────────┬──────────────────────┬────────┬──────────┬─────────────┐
│ Provider│ Instance Type │ vCPUs │ Memory │ Monthly Cost│
├─────────┼──────────────────────┼────────┼──────────┼─────────────┤
│ OCI │ VM.Standard.E5.Flex │ 4 │ 16 GB │ $61.32 │
│ GCP │ e2-standard-4 │ 4 │ 16 GB │ $97.82 │
│ AWS │ t3.xlarge │ 4 │ 16 GB │ $121.47 │
│ Azure │ Standard_D4s_v5 │ 4 │ 16 GB │ $140.16 │
└─────────┴──────────────────────┴────────┴──────────┴─────────────┘
Cheapest: OCI ($61.32/month) - 50% savings vs AWSDevelopment
# Clone and install
git clone https://github.com/jasonwilbur/cloud-cost-mcp.git
cd cloud-cost-mcp
npm install
# Build
npm run build
# Test locally with Claude Code
claude mcp add cloud-cost-dev -- node /path/to/cloud-cost-mcp/dist/index.jsData freshness
This server uses a two-tier data model — it helps to know which is which:
Bundled data (
src/data/bundled/*.json) is what the comparison/calculator tools read by default, so the server works instantly with no network calls.AWS, Azure, GCP bundled data is regenerated from live upstream sources (
instances.vantage.sh+ the official Azure Retail Prices API) and auto-refreshed weekly via therefresh-dataGitHub Action. You can also regenerate locally withnpm run fetch-data.OCI bundled data is curated (vantage.sh has no OCI feed) and updated manually. For always-live OCI pricing, use the
refresh_oci_pricingtool or the dedicated oci-pricing-mcp.
Live refresh tools (
refresh_aws_ec2_pricing,refresh_azure_full_pricing,refresh_gcp_pricing,refresh_oci_pricing,refresh_aws_rds_pricing) fetch current pricing from provider APIs at call time, cached 60 minutes in-memory for the life of the process. These return fresh data to the caller but do not rewrite the bundled files — that only happens vianpm run fetch-data/ the weekly Action.
Use get_data_freshness to see the bundled timestamp and staleness for each provider.
License
Apache-2.0
Author
Jason Wilbur (jasonwilbur.com)
Related Projects
oci-pricing-mcp - Dedicated OCI pricing MCP with 25+ tools
Available Tools
31 toolscalculate_workload_costBRead-onlyIdempotent
Estimate total monthly cost for a workload across all cloud providers. Includes compute, storage, egress, and Kubernetes.
| Name | Required | Description | Default |
|---|---|---|---|
| compute | No | ||
| storage | No | ||
| egress | No | ||
| kubernetes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds value by specifying the included cost components. However, it lacks details on return format or potential constraints (e.g., missing data handling).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 14 words, front-loading the core purpose without extraneous detail. Highly efficient for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema and low parameter coverage, the description omits important contextual details such as the need to provide compute and Kubernetes inputs for meaningful estimates, and fails to clarify return type (single number vs breakdown).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description only repeats component names already evident in the schema. It does not provide additional meaning for individual parameters (e.g., units, ranges, or behavior when omitted).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool estimates total monthly cost for a workload across all cloud providers, listing included components. This distinguishes it from sibling tools like compare_compute or estimate_migration_savings which focus on specific aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not specify context or exclusion conditions, leaving the agent to infer usage without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_api_statusARead-onlyIdempotent
Check if the real-time pricing APIs (Azure, OCI, AWS) are accessible.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, covering safety, idempotency, and side effects. The description adds context about which specific APIs are checked (Azure, OCI, AWS), going beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and comprehensive annotations, the description is adequate for a simple health check tool. It specifies which APIs are checked, though it could optionally describe what 'accessible' means or the return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so schema description coverage is 100%. The baseline for 0 parameters is 4, and the description correctly does not add parameter info since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks accessibility of real-time pricing APIs for Azure, OCI, and AWS. It uses a specific verb ('check') and resource ('real-time pricing APIs'), distinguishing it from sibling tools that perform cost calculations or comparisons.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, though it is implied it should be used to verify API health before running other pricing tools. No exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_computeARead-onlyIdempotent
Compare VM/instance pricing across AWS, Azure, GCP, and OCI. Finds instances matching your vCPU and memory requirements.
| Name | Required | Description | Default |
|---|---|---|---|
| vcpus | Yes | Desired number of vCPUs | |
| memoryGB | Yes | Desired memory in GB | |
| category | No | Optional: filter by instance category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, idempotentHint=true) already indicate safe behavior. The description adds cross-provider comparison and matching logic context. No contradictions, but could detail output format or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence states the purpose, the second elaborates on what it finds. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description is mostly complete. It conveys core functionality and matching logic. Minor gap: does not specify return format or behavior when no matches found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description restates 'vCPU and memory requirements' but does not add new meaning or mention the optional 'category' parameter, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares VM/instance pricing across four cloud providers (AWS, Azure, GCP, OCI) and finds instances matching vCPU and memory requirements, distinguishing it from sibling tools like 'compare_gpu_shapes' or 'compare_storage'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clear: use this tool to compare compute pricing across providers based on specified resources. However, it does not explicitly state when not to use it or mention alternatives like 'find_cheapest_compute' or 'calculate_workload_cost', lacking exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_egressBRead-onlyIdempotent
Compare data transfer/egress costs. OCI offers 10TB/month free (100x more than others)!
| Name | Required | Description | Default |
|---|---|---|---|
| monthlyGB | Yes | Monthly outbound data in GB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint. Description adds no new behavioral details (e.g., data freshness, caching, or side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, one sentence core purpose plus a promotional sentence. Could omit promotional line, but overall minimal and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values or comparison scope. It only mentions OCI free tier but not what the tool returns or how it compares providers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear parameter description. Tool description does not add additional semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares egress costs, distinguishing it from siblings like compare_compute or compare_storage. The mention of OCI's free tier adds specific context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternative comparison tools. The purpose is implied but lacks when-not or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_gpu_shapesARead-onlyIdempotent
Compare multiple OCI GPU shapes side-by-side on specs, pricing, and price-per-GPU metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| shapes | Yes | GPU shape families to compare (e.g., ["BM.GPU.A10.4", "BM.GPU.A100-v2.8", "BM.GPU.H100.8"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds context about what is compared (specs, pricing, price-per-GPU). It does not describe error handling or limits, but the safety profile is well-covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, read-only) and the presence of annotations, the description is sufficiently complete. It clarifies the output (comparison on specs, pricing, price-per-GPU) even without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the 'shapes' parameter described in the schema. The description adds that it compares 'multiple' shapes and specifies 'OCI GPU shapes', which provides minimal additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (compare), resource (OCI GPU shapes), and scope (specs, pricing, price-per-GPU metrics). It distinguishes from sibling tools like 'recommend_gpu_shape' and 'get_gpu_shape_details' which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for comparing multiple shapes but does not explicitly state when to use this tool versus alternatives like 'recommend_gpu_shape' or 'get_gpu_shape_details'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_kubernetesARead-onlyIdempotent
Compare managed Kubernetes pricing (EKS, AKS, GKE, OKE). Shows control plane and worker node costs.
| Name | Required | Description | Default |
|---|---|---|---|
| nodeCount | Yes | Number of worker nodes | |
| nodeVcpus | Yes | vCPUs per node | |
| nodeMemoryGB | Yes | Memory per node in GB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, so the description adds context about showing control plane and worker node costs, but does not detail behavioral traits like output format or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and add a key detail (cost components) with no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides tool purpose and cost components but omits expected output format or result structure, which is notable given the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already document all three parameters fully (100% coverage). The description adds no extra parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (compare), resource (managed Kubernetes pricing), and specific providers (EKS, AKS, GKE, OKE). Distinguishes from sibling tools like compare_compute by focusing on Kubernetes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for Kubernetes pricing but does not explicitly differentiate from other comparison tools (e.g., compare_compute) or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_storageARead-onlyIdempotent
Compare object and block storage pricing across all clouds.
| Name | Required | Description | Default |
|---|---|---|---|
| sizeGB | Yes | Storage size in GB | |
| tier | No | Optional: storage tier | |
| type | No | Optional: storage type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe read operation. The description does not add further behavioral context (e.g., response format, permission requirements). Since annotations cover safety, the description adds minimal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is front-loaded with the core action and scope, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only three parameters, no output schema, and annotations providing behavioral context, the description is sufficient. It states the purpose and covers the essential functionality. A minor addition about the expected output format could improve completeness, but it is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters, so the schema already documents their meaning. The description does not add any additional semantic detail beyond what is in the schema, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('compare') and clearly states the resource ('object and block storage pricing across all clouds'). It distinguishes this tool from siblings like compare_compute or compare_egress by specifying storage type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for comparing storage pricing, but it does not provide explicit guidance on when to use it vs. alternatives (e.g., compare_compute) or when not to use it. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_migration_savingsCRead-onlyIdempotent
Calculate potential savings when migrating from one cloud provider to another.
| Name | Required | Description | Default |
|---|---|---|---|
| currentProvider | Yes | Your current cloud provider | |
| targetProvider | No | Optional: target provider (finds cheapest if not specified) | |
| compute | No | ||
| storage | No | ||
| egress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows the tool is safe and idempotent. The description adds minimal behavioral context beyond confirming the calculation nature. It does not disclose what 'savings' entails (e.g., monthly cost difference, total cost of ownership), leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no filler. It is front-loaded and conveys the core purpose efficiently. However, it could be slightly expanded to include more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters with nested objects, no output schema), the description is incomplete. It does not explain return values, required versus optional parameters, or the scope of the savings calculation (e.g., monthly vs. annual). The schema descriptions cover only 40% of parameters, and the description fails to fill the gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 40% (only 'currentProvider' and 'targetProvider' have descriptions). The description does not mention any parameters or provide additional context for the nested objects (compute, storage, egress). The parameter names are somewhat self-explanatory, but the lack of description compensation results in poor semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Calculate potential savings when migrating from one cloud provider to another.' It uses a specific verb ('calculate') and resource ('potential savings when migrating'), which distinguishes it from siblings that might only calculate costs or compare individual services. However, it does not explicitly differentiate from similar tools like 'calculate_workload_cost' or 'quick_estimate', which could overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or when not to use it. Given the presence of many sibling tools with overlapping functionality (e.g., 'compare_compute', 'quick_estimate'), this lack of usage context is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_cheapest_computeARead-onlyIdempotent
Find the cheapest cloud provider for specific compute specs.
| Name | Required | Description | Default |
|---|---|---|---|
| vcpus | Yes | Desired number of vCPUs | |
| memoryGB | Yes | Desired memory in GB | |
| category | No | Optional: filter by instance category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, so the safety profile is clear. The description adds no extra behavioral context (e.g., rate limits, pricing data freshness).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema or description of return format (e.g., price unit, providers list). For a costing tool, additional context about the result structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description does not add any additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (find), resource (cheapest cloud provider), and scope (for specific compute specs). It distinguishes from sibling tools like compare_compute or estimate_migration_savings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when or when not to use this tool, nor any mention of alternatives. The description is purely declarative without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aws_lightsail_pricingARead-onlyIdempotent
Get AWS Lightsail bundle pricing. Simplified VPS with fixed monthly pricing including storage and transfer.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region (default: us-east-1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about the pricing model ('fixed monthly pricing including storage and transfer'), which goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action, and concise with no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, clear annotations, and no output schema, the description is sufficiently complete. It clearly defines the tool's purpose and the type of pricing returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter (region). The description does not add additional parameter meaning beyond what the schema provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves AWS Lightsail bundle pricing, with a specific verb 'Get' and resource 'AWS Lightsail bundle pricing'. It distinguishes from sibling tools by highlighting 'Simplified VPS with fixed monthly pricing including storage and transfer', contrasting with other pricing tools for EC2 or compute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Lightsail pricing but does not explicitly state when to use it versus sibling tools like compare_compute or find_cheapest_compute. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_freshnessARead-onlyIdempotent
Check how recent the pricing data is for each provider. Warns if data is stale (>30 days).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the annotations: it warns if data is stale (>30 days), which is not captured by readOnlyHint or idempotentHint. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. The first sentence states the purpose, and the second adds the warning behavior. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only tool with comprehensive annotations, the description covers all necessary information: purpose, scope, and warning behavior. No output schema is needed, as the description explains the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description does not need to add parameter semantics, and schema coverage is trivially 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Check' and clearly identifies the resource 'pricing data for each provider'. It distinguishes itself from sibling tools like 'check_api_status' by focusing on data freshness and staleness warnings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking data recency but does not explicitly state when to use it over alternatives (e.g., before reading pricing data). No exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gpu_shape_detailsARead-onlyIdempotent
Get detailed specifications and pricing for a specific OCI GPU shape.
| Name | Required | Description | Default |
|---|---|---|---|
| shapeFamily | Yes | GPU shape family (e.g., "BM.GPU.H100.8", "BM.GPU.A100-v2.8", "VM.GPU.A10.1") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description adds marginal value by stating it returns specifications and pricing but does not disclose other behaviors like rate limits or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous words. Every word contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter and no output schema, the description adequately states the purpose. It could elaborate on what 'detailed specifications' includes, but current level is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the single parameter 'shapeFamily' with 100% description coverage. The description does not add extra meaning beyond the schema's examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Get' and the resource 'detailed specifications and pricing for a specific OCI GPU shape,' distinguishing it from sibling tools like 'compare_gpu_shapes' and 'list_gpu_shapes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing details for a specific GPU shape but does not explicitly state when to use this tool versus alternatives like 'compare_gpu_shapes' or 'list_gpu_shapes', nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_provider_detailsARead-onlyIdempotent
Get detailed pricing data for a specific cloud provider.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | Yes | Cloud provider | |
| category | No | Optional: filter by category |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. Description only confirms it retrieves data, adding no new behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action, no wasted words. Perfectly concise for the minimal information needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with no output schema; description vaguely hints at 'detailed pricing data.' Could be improved by mentioning what data is returned or how it relates to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with enums and descriptions (100% coverage). Description adds no extra meaning beyond 'for a specific cloud provider,' which aligns with required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'get detailed pricing data for a specific cloud provider,' using a specific verb and resource. It distinguishes from sibling tools like compare_* or list_* that serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for obtaining pricing data for a single provider, but no explicit guidance on when not to use or which alternatives (e.g., compare tools) are better suited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_storage_summaryARead-onlyIdempotent
Get storage pricing summary by tier (hot, cool, cold, archive) for all providers.
| Name | Required | Description | Default |
|---|---|---|---|
| sizeGB | Yes | Storage size in GB for cost calculation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is clear. The description adds that it returns a pricing summary by tier, but does not provide additional behavioral context such as rate limits, authentication needs, or response format. With annotations covering safety, the description adds moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly states the tool's purpose with no extraneous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one required parameter) and annotations indicating a safe read operation, the description sufficiently covers the tool's functionality. However, since there is no output schema, a hint about the structure of the pricing summary (e.g., per-provider breakdown) would improve completeness. Still, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one parameter 'sizeGB' described. The description does not add meaning beyond the schema; it only restates the parameter role. Baseline score of 3 is appropriate as the schema already adequately documents the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Get', resource 'storage pricing summary', and specifies the tiers (hot, cool, cold, archive) and scope 'for all providers'. This distinguishes it from siblings like 'compare_storage' that may focus on comparison rather than summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied (for getting a pricing summary by tier), but there is no explicit guidance on when to use this tool versus alternatives like 'compare_storage' or 'get_provider_details'. No when-not or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_aws_instance_familiesARead-onlyIdempotent
List AWS EC2 instance families with counts (e.g., General purpose: 200, Compute optimized: 150).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive. Description adds output format example, but no additional behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with purpose and example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with no parameters or output schema. Description is sufficient for an agent to understand what it does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters; schema coverage 100%. Baseline 4 applies. Example output provides helpful context for the return value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'List', resource 'AWS EC2 instance families', and output 'counts'. Example distinguishes from sibling tools like list_gcp_instance_families.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives, but tool name and context imply usage for AWS-specific family listing. Lacks guidance on when to use over other list tools or comparison tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_aws_regionsARead-onlyIdempotent
List all AWS regions available in the pricing data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that the list is limited to regions 'available in the pricing data', which gives useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is adequate. It might be slightly improved by mentioning what the output contains (e.g., region codes or names), but it is complete enough for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the description does not need to add parameter information. Baseline of 4 is appropriate as the schema covers all parameters (none).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all AWS regions available in the pricing data, using a specific verb and resource. It distinguishes from sibling tools like list_azure_regions and list_gcp_regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidelines on when to use this tool versus alternatives. The name and context of sibling tools imply it is for AWS regions, but no exclusions or when-not-to-use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_azure_categoriesARead-onlyIdempotent
List Azure VM categories with counts (e.g., generalpurpose: 400, computeoptimized: 200).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context about the output format (counts with examples) beyond the annotations, which already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The added value is moderate but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundancy, front-loaded with the verb 'List'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of parameters and the richness of annotations, the description is complete. It explains the tool's output with an example, though it could optionally mention data source or update frequency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%, so the baseline is 4. The description correctly adds nothing about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List', the resource 'Azure VM categories', and provides an example output format, distinguishing it from sibling tools like list_oci_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need Azure VM category counts) but does not explicitly state when to use versus alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_azure_regionsARead-onlyIdempotent
List all Azure regions available in the pricing data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. Description adds that regions are from 'pricing data', which is minor additional context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 9 words, front-loaded, no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with rich annotations, description is complete. Specifies data source (pricing data) and no output schema is needed for simple list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Baseline of 4 applies as description adds no param info (none needed).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all Azure regions available in the pricing data' – specific verb+resource+scope. Distinguishes from sibling tools like list_aws_regions and list_gcp_regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context signals show clear differentiation from siblings (other providers' region listers), but no explicit when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gcp_instance_familiesARead-onlyIdempotent
List GCP instance families with counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral context beyond mentioning 'with counts', which is already part of the purpose. With annotations covering the safety profile, the description provides adequate but minimal extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no wasted words. It efficiently communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations that cover safety and idempotency, the description is fairly complete. However, it does not clarify what 'counts' refers to (e.g., number of instances per family) or the broader context of pricing. Still, for a simple list tool, it is mostly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (schema coverage 100%), so the description does not need to add parameter info. Baseline is 4, and the description meets this without needing additional semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource as 'GCP instance families' with the additional detail 'with counts'. This clearly distinguishes it from sibling tools like list_aws_instance_families and list_gcp_regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The name implies it is for listing GCP instance families, but no when-not-to-use or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gcp_regionsARead-onlyIdempotent
List all GCP regions available in the pricing data with their display names.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint. Description adds context about pricing data source but no additional behavioral traits (e.g., no rate limits, pagination).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no fluff. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with zero parameters and rich annotations. Description fully covers the purpose and output scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so the description naturally adds no param info. Baseline of 4 applies; the mention of 'display names' adds value beyond a bare listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'list' and specific resource 'GCP regions' with detail 'display names'. Distinct from sibling list tools by provider.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for retrieving region display names, but no explicit guidance on when to use vs alternative list-region tools (e.g., list_aws_regions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gpu_shapesARead-onlyIdempotent
List OCI GPU shapes with pricing. Filter by GPU model (A10, A100, H100, H200, L40S, MI300X) or use case (inference, training).
| Name | Required | Description | Default |
|---|---|---|---|
| gpuModel | No | Filter by GPU model (e.g., "A100", "H100", "MI300X") | |
| useCase | No | Filter by intended use case | |
| maxPricePerHour | No | Maximum hourly price filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=true, destructiveHint=false) already indicate safe read-only behavior. The description adds that it lists shapes with pricing, but lacks details on output fields or pagination. With annotations present, the description adds moderate value but could be more transparent about return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences are front-loaded with the main action. Every word adds value with no redundancy. Efficient and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the listing action and filters but omits output format details (e.g., fields like name, price, region). Since no output schema exists, the description should compensate by describing return values. Default behavior and pagination are also missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. The description adds helpful examples of GPU model values (A10, A100, etc.) not provided in the schema, and clarifies the useCase enum. This augments the schema meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List OCI GPU shapes with pricing' using a specific verb and resource. It distinguishes from sibling tools like get_gpu_shape_details (singular detail) or recommend_gpu_shape (recommendation) by focusing on listing multiple shapes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing shapes with optional filters (GPU model, use case). However, it does not explicitly guide the agent on when to use this tool versus alternatives like compare_gpu_shapes or get_gpu_shape_details, which limits clarity for correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_oci_categoriesARead-onlyIdempotent
List all service categories available from OCI's real-time pricing API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds the source 'OCI's real-time pricing API' but does not disclose additional traits like pagination or response format. With rich annotations, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 13 words, no fluff. Front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters and no output schema. The description covers the basic purpose but could hint at output structure. Given low complexity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema coverage is 100%. Baseline for zero parameters is 4, and the description adds no further parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all service categories from OCI's real-time pricing API, specifying the verb 'list' and the resource 'service categories'. It distinguishes itself from sibling tools like list_azure_categories by explicitly naming OCI.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, context, or comparison with other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsARead-onlyIdempotent
List all available deployment presets for quick_estimate.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety and idempotency profile is clear. The description adds no additional behavioral context beyond these annotations, such as data freshness, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the essential purpose of the tool with no unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description partially explains the return value (list of presets) but does not describe the structure or fields of each preset, leaving some ambiguity about the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%. The description adds minimal context by specifying the presets are 'for quick_estimate', but this does not enhance parameter semantics since there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all deployment presets specifically for quick_estimate. It uses a specific verb ('list') and resource ('deployment presets'), distinguishing it from sibling list_* tools that list other resources like instance families or regions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_gpu_shapes or quick_estimate. The description does not mention prerequisites, context, or when it is appropriate to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_estimateARead-onlyIdempotent
Get instant cost comparison for common deployment presets including GPU workloads.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | Yes | Deployment preset name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, indicating safe, non-destructive, idempotent behavior. The description adds 'instant cost comparison', which is consistent but does not disclose additional behavioral traits beyond what annotations provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, front-loaded with the core action 'Get instant cost comparison'. No unnecessary words; every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter with an enum and no output schema. The description explains the input scope (presets) but lacks details about the output format, such as whether cost comparisons are monthly/hourly, absolute/relative, or displayed as numbers/charts. For a quick estimate tool, this is acceptable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the parameter 'preset' has a schema description 'Deployment preset name'. The tool description adds context ('common deployment presets including GPU workloads'), which hints at relevant enum values but adds only marginal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'instant cost comparison for common deployment presets', with a specific verb ('Get'), resource ('cost comparison'), and scope including GPU workloads. This distinguishes it from siblings like 'compare_compute' or 'list_presets'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for quick cost estimates of presets but does not explicitly state when to prefer this over alternatives like 'calculate_workload_cost' or 'compare_compute'. No exclusion criteria or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_gpu_shapeBRead-onlyIdempotent
Get GPU shape recommendation based on workload requirements and budget.
| Name | Required | Description | Default |
|---|---|---|---|
| workloadType | Yes | Type of AI/ML workload | |
| minGPUMemoryGB | No | Minimum GPU memory needed per GPU (e.g., 24, 40, 80) | |
| budget | No | Budget constraint (low: <$5/hr, medium: <$20/hr, high: unlimited) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is clear. The description adds no additional behavioral traits (e.g., rate limits, dependence on external data freshness). The description is consistent with annotations, so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the verb and resource. However, it is so brief that it omits important context, such as the fact that recommendations are based on the provided parameters. The sentence earns its place but could be slightly expanded for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters and no output schema, the description should provide more context about return values (e.g., does it return a single recommendation or a list?). It lacks guidance on how the recommendation is produced or what the output looks like, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all three parameters, so the schema already explains each parameter's meaning. The description does not add new semantics beyond what is in the schema. A baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get GPU shape recommendation based on workload requirements and budget.' It uses a specific verb ('Get') and resource ('GPU shape recommendation'), distinguishing it from sibling tools like 'list_gpu_shapes' which simply lists available shapes, and 'get_gpu_shape_details' which details a specific shape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions or context where other tools might be more appropriate, such as when a user needs a specific shape's details or wants to compare costs. Sibling tools like 'compare_gpu_shapes' or 'calculate_workload_cost' are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_aws_ec2_pricingARead-onlyIdempotent
Fetch real-time AWS EC2 pricing from instances.vantage.sh. Returns 1,147 instance types with on-demand, spot, and reserved pricing. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region (default: us-east-1). Use list_aws_regions to see all available. | |
| family | No | Filter by instance family (e.g., "General purpose", "Compute optimized") | |
| architecture | No | Filter by CPU architecture | |
| maxResults | No | Maximum results to return (default: 500) | |
| includeSpot | No | Include spot pricing in notes | |
| includeReserved | No | Include reserved pricing in notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds value by noting no authentication required and specifying the output scope (1,147 instance types, three pricing modes). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. The essential information is front-loaded: action, source, output characteristics, and authentication requirement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks details about the response structure (e.g., format of pricing data) since there is no output schema. While the tool is low-complexity, agents would benefit from knowing how results are presented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 6 parameters have descriptions in the schema (100% coverage). The description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches real-time AWS EC2 pricing from instances.vantage.sh, specifies the exact number of instance types (1,147), and lists pricing types (on-demand, spot, reserved). This distinguishes it from sibling refresh tools for other services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for AWS EC2 pricing but does not explicitly state when to use this tool versus alternatives like refresh_aws_rds_pricing or refresh_azure_pricing. No guidance on prerequisites or contraindications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_aws_rds_pricingARead-onlyIdempotent
Fetch real-time AWS RDS database pricing. Returns 353 instance types across multiple database engines.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region (default: us-east-1) | |
| engine | No | Database engine (default: PostgreSQL). Options: PostgreSQL, MySQL, MariaDB, Oracle, SQL Server | |
| maxResults | No | Maximum results to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds only 'real-time', which may suggest non-idempotent behavior (different results over time) but does not contradict annotations. It lacks details on rate limits, caching, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, front-loading the action. Every word adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description partially compensates by stating the number of instance types and multi-engine support. However, it lacks guidance on differentiating usage from many sibling tools and does not describe output format or structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (region, engine, maxResults) are documented in the schema. The description does not add meaning beyond the schema, but provides context about the result (353 instance types). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Fetch'), a clear resource ('AWS RDS database pricing'), and provides scope ('real-time', '353 instance types across multiple database engines'). This distinguishes it from siblings like refresh_aws_ec2_pricing or get_aws_lightsail_pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives such as refresh_aws_ec2_pricing for EC2 pricing. Usage is implied by the tool name and description, but no direct guidance or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_azure_full_pricingARead-onlyIdempotent
Fetch comprehensive Azure VM pricing from instances.vantage.sh. Returns 1,199 instance types with on-demand, spot, and Windows pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Azure region (default: us-east). Use list_azure_regions to see all available. | |
| category | No | Filter by category (e.g., "generalpurpose", "computeoptimized", "memoryoptimized") | |
| includeSpot | No | Include spot pricing in notes | |
| maxResults | No | Maximum results to return (default: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent operation. The description adds value by specifying the external data source (instances.vantage.sh) and the fixed number of instance types (1,199) with pricing details, which are not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence that efficiently conveys the tool's purpose, source, and output characteristics. No fluff; every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a fetch tool with no output schema, the description partially explains return values (count and types of pricing). It could mention structure or format, but it provides enough context for basic selection. The schema covers parameters, so the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and each parameter already has a clear description in the input schema. The tool description adds no additional meaning or context beyond what the schema provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches comprehensive Azure VM pricing from a specific source (instances.vantage.sh) and mentions the data returned (1,199 instance types, pricing types). It distinguishes from the sibling 'refresh_azure_pricing' by using 'full' and emphasizing comprehensiveness, though not explicitly contrasting them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., 'refresh_azure_pricing'). The name implies it's the full version, but without context, an agent may not know when to choose one over the other.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_azure_pricingARead-onlyIdempotent
Fetch latest Azure VM pricing from the public Azure Retail Prices API. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Azure region (default: eastus) | |
| vmSeries | No | Optional: filter by VM series (e.g., "D", "E", "F") | |
| maxResults | No | Maximum results to return (default: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds the important behavioral detail that no authentication is required, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the purpose and key behavioral note. No unnecessary information, front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three optional parameters, no output schema, and annotations cover safety. The description is sufficient for selecting and invoking the tool, though could hint at the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add additional meaning beyond what the schema provides, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches latest Azure VM pricing from a specific public API, distinguishing it from sibling tools like refresh_aws_ec2_pricing or refresh_gcp_pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is for Azure VM pricing and requires no authentication, but does not explicitly guide when to use this over alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_gcp_pricingARead-onlyIdempotent
Fetch real-time GCP Compute Engine pricing from instances.vantage.sh. Returns 287 instance types with on-demand and spot pricing across 40+ regions.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | GCP region (default: us-central1). Use list_gcp_regions to see all available. | |
| family | No | Filter by instance family (e.g., "General purpose", "Compute optimized") | |
| includeSpot | No | Include spot/preemptible pricing in notes | |
| maxResults | No | Maximum results to return (default: 300) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint, idempotentHint, and not destructive. The description adds that the data comes from a specific external source (instances.vantage.sh) and provides the scope (287 types, 40+ regions). It doesn't contradict annotations and adds useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and source, and provides key details about the output. Every sentence adds value with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read-only data fetch with no output schema. The description explains the source, coverage, and number of instance types. It could mention that the results may include a large dataset or note the default maxResults, but the schema covers that. It is largely complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having a clear description in the input schema. The tool description does not add extra meaning beyond what the schema provides, so it does not compensate beyond the baseline. The schema itself is clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches real-time GCP Compute Engine pricing from instances.vantage.sh and returns 287 instance types with on-demand and spot pricing across 40+ regions. This is a specific verb+resource combination that distinguishes it from sibling tools like refresh_aws_ec2_pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or when not to use it. For example, it doesn't suggest this tool for general GCP pricing queries versus other refresh tools for different providers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_oci_pricingARead-onlyIdempotent
Fetch latest OCI pricing from Oracle's public API. Returns 592 SKUs (562 standard + 30 BYOL) with PAY_AS_YOU_GO pricing. Automatically detects and flags BYOL (Bring Your Own License) variants. Includes summary statistics and API coverage notes. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Currency code (default: USD) | |
| category | No | Filter by service category (e.g., "Compute", "Storage") | |
| search | No | Search term for product name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and non-destructive nature. The description adds valuable behavioral context: 'No authentication required', automatic BYOL detection, inclusion of summary statistics and API coverage notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides useful context: SKU counts, pricing model, and included statistics. However, it could clarify the exact structure of the return value (list, object, etc.).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all three parameters. The tool description does not add extra detail beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches OCI pricing from Oracle's public API, with specific details on SKU count and BYOL detection. It distinguishes itself from sibling refresh tools by specifying the cloud provider and unique features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'No authentication required' but does not explicitly state when to use this tool over siblings like calculate_workload_cost or comparison tools. However, it implies use for fetching raw pricing data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
31 tool updates
v1.4.0- First observed
calculate_workload_cost - First observed
check_api_status - First observed
compare_compute - First observed
compare_egress - First observed
compare_gpu_shapes - First observed
compare_kubernetes - First observed
compare_storage - First observed
estimate_migration_savings - First observed
find_cheapest_compute - First observed
get_aws_lightsail_pricing - First observed
get_data_freshness - First observed
get_gpu_shape_details - First observed
get_provider_details - First observed
get_storage_summary - First observed
list_aws_instance_families - First observed
list_aws_regions - First observed
list_azure_categories - First observed
list_azure_regions - First observed
list_gcp_instance_families - First observed
list_gcp_regions - First observed
list_gpu_shapes - First observed
list_oci_categories - First observed
list_presets - First observed
quick_estimate - First observed
recommend_gpu_shape - First observed
refresh_aws_ec2_pricing - First observed
refresh_aws_rds_pricing - First observed
refresh_azure_full_pricing - First observed
refresh_azure_pricing - First observed
refresh_gcp_pricing - First observed
refresh_oci_pricing
TDQS
Scored across 31 tools
Each tool targets a specific combination of cloud provider and resource type (e.g., compare_compute, compare_egress, compare_storage, etc.), with no overlapping functionality. The descriptions clearly delineate their distinct purposes.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., calculate_workload_cost, list_aws_regions, refresh_oci_pricing). The prefixes (get_, list_, compare_, refresh_) are semantically clear and uniformly applied.
With 31 tools, the server exceeds the 25+ threshold considered too many for typical scope. While the breadth of cloud providers and resource types partially justifies this, many tools could be consolidated (e.g., unifying refresh_* tools or combining compare_* tools).
The tool set covers the full lifecycle of cloud cost estimation: compute, storage, egress, GPU, Kubernetes, migration savings, and data freshness. Missing aspects like specific database or network pricing are out of scope, making the surface complete for its intended domain.
Maintenance
Related MCP Connectors
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
Hosted MCP server for AWS cloud spend: service breakdowns, anomalies, savings and forecasts.
Cloudflare Workers MCP server: ai-cost-optimizer
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server for unified cost tracking and analysis across AWS, OpenAI, and Anthropic. It enables users to query expenditures, compare costs across providers, and analyze usage trends through natural language.10MIT
- AlicenseAqualityBmaintenanceCloud cost management MCP server for Azure. Ask your AI about your cloud bill.1529 npm1MIT
- AlicenseAqualityAmaintenanceMCP server that lets Claude (or any MCP-compatible client) compare on-demand compute + storage pricing across AWS, Azure, and GCP in real time.1450 PyPI1MIT
- AlicenseAqualityAmaintenanceLocal-first FinOps MCP server. Ask about your AWS, Azure, GCP, and SaaS costs in plain English. Anomaly detection, rightsizing, idle-resource cleanup, and Jira/Linear ticketing. Credentials never leave your machine.1018Apache 2.0