Skip to main content
Glama

Compare Cloud Compute Pricing

compare-compute-pricing
Read-only

Compare cloud compute instance pricing across AWS, Azure, GCP, DigitalOcean, OCI, OVH, and Alibaba. Filter by region, provider, vCPUs, memory, category, processor, or use case. All prices are Linux on-demand list prices in USD. Not every price column is live: provenance.priceTypes says which of each provider's price columns come from a live API, which are static constants, and which are unavailable, and provenance.staticPriceColumns lists the non-live ones outright; a savings-plan or reserved rate that appears there is a static estimate, not a live quote. Prices are returned as the catalogue serves them and dated by provenance.

Input Schema

NameRequiredDescriptionDefault
limitNoMax instances to return (default: 20)
regionNoPricing region: us-east, us-west, europe, asia-pacific. Default: us-east
sortByNoSort by: price, vcpus, memory, pricePerVCPU. Default: price
useCaseNoUse case. Must be one of these exactly (case-insensitive): Web App, Database, HPC, ML & AI, Dev/Test, Big Data. Any other string returns zero matches rather than an error.
categoryNoInstance category. Must be one of these exactly (case-insensitive): General Purpose, Compute Optimized, Memory Optimized, Storage Optimized, GPU / Accelerated, Burstable. Any other string returns zero matches rather than an error.
maxVCPUsNoMaximum number of vCPUs
minVCPUsNoMinimum number of vCPUs
providerNoCloud provider. Must be one of these exactly (case-insensitive): AWS, Azure, GCP, DigitalOcean, OCI, OVH, Alibaba. Any other string returns zero matches rather than an error.
maxMemoryNoMaximum memory in GiB
minMemoryNoMinimum memory in GiB
processorNoProcessor. Matched by exact equality (case-insensitive), so a partial value like 'H100' returns nothing. Known values: Intel, AMD, Graviton, Ampere, NVIDIA A100, NVIDIA H100, NVIDIA L4, NVIDIA T4, NVIDIA V100, NVIDIA Other.

Output Schema

NameRequiredDescriptionDefault
errorNo
sourceYes
instancesYes
provenanceNo
catalogSizeYes
matchingCountYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Instance category: General Purpose, Compute Optimized, Memory Optimized, Storage Optimized, GPU / Accelerated, Burstable"New value: +"Instance category. Must be one of these exactly (case-insensitive): General Purpose, Compute Optimized, Memory Optimized, Storage Optimized, GPU / Accelerated, Burstable. Any other string returns zero matches rather than an error."
    • changedInput schema / properties / processor / description
      Previous value: -"Processor filter: Intel, AMD, Graviton, Ampere, NVIDIA A100, NVIDIA H100, etc."New value: +"Processor. Matched by exact equality (case-insensitive), so a partial value like 'H100' returns nothing. Known values: Intel, AMD, Graviton, Ampere, NVIDIA A100, NVIDIA H100, NVIDIA L4, NVIDIA T4, NVIDIA V100, NVIDIA Other."
    • changedInput schema / properties / provider / description
      Previous value: -"Cloud provider: AWS, Azure, GCP, DigitalOcean, OCI, OVH, Alibaba"New value: +"Cloud provider. Must be one of these exactly (case-insensitive): AWS, Azure, GCP, DigitalOcean, OCI, OVH, Alibaba. Any other string returns zero matches rather than an error."
    • changedInput schema / properties / useCase / description
      Previous value: -"Use case filter: Web App, Database, HPC, ML & AI, Dev/Test, Big Data"New value: +"Use case. Must be one of these exactly (case-insensitive): Web App, Database, HPC, ML & AI, Dev/Test, Big Data. Any other string returns zero matches rather than an error."
  2. Changed5 schema fields changed
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Pricing region: us-east, us-west, europe, asia-pacific. Default: us-east",
      +  "enum": [
      +    "us-east",
      +    "us-west",
      +    "europe",
      +    "asia-pacific"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "catalogTotal": {
      +      "type": "number"
      +    },
      +    "catalogueIsSubset": {
      +      "type": "boolean"
      +    },
      +    "dataAsOf": {
      +      "type": "string"
      +    },
      +    "fallbackReason": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "notice": {
      +      "type": "string"
      +    },
      +    "priceTypes": {
      +      "additionalProperties": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "region": {
      +      "type": "string"
      +    },
      +    "servedFromCacheAgeMs": {
      +      "type": "number"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "sourceRegions": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "sources": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "staticPriceColumns": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "tier": {
      +      "type": "number"
      +    },
      +    "unappliedFilters": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "unavailablePriceColumns": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "upstreamErrors": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "upstreamSchemaVersion": {
      +      "type": "string"
      +    },
      +    "upstreamTimestamp": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tier",
      +    "source",
      +    "label",
      +    "region",
      +    "staticPriceColumns",
      +    "unavailablePriceColumns"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "instances",
      -  "matchingCount",
      -  "catalogSize"
      -]New value: +[
      +  "instances",
      +  "matchingCount",
      +  "catalogSize",
      +  "source"
      +]
  3. Changed5 schema fields changed
    • removedInput schema / properties / region
      Removed value: -{
      -  "description": "Pricing region: us-east, us-west, europe, asia-pacific. Default: us-east",
      -  "enum": [
      -    "us-east",
      -    "us-west",
      -    "europe",
      -    "asia-pacific"
      -  ],
      -  "type": "string"
      -}
    • changedOutput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / properties / provenance
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "catalogTotal": {
      -      "type": "number"
      -    },
      -    "catalogueIsSubset": {
      -      "type": "boolean"
      -    },
      -    "dataAsOf": {
      -      "type": "string"
      -    },
      -    "fallbackReason": {
      -      "type": "string"
      -    },
      -    "label": {
      -      "type": "string"
      -    },
      -    "notice": {
      -      "type": "string"
      -    },
      -    "priceTypes": {
      -      "additionalProperties": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      },
      -      "propertyNames": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    "region": {
      -      "type": "string"
      -    },
      -    "servedFromCacheAgeMs": {
      -      "type": "number"
      -    },
      -    "source": {
      -      "type": "string"
      -    },
      -    "sourceRegions": {
      -      "additionalProperties": {
      -        "type": "string"
      -      },
      -      "propertyNames": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    "sources": {
      -      "additionalProperties": {
      -        "type": "string"
      -      },
      -      "propertyNames": {
      -        "type": "string"
      -      },
      -      "type": "object"
      -    },
      -    "staticPriceColumns": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "tier": {
      -      "type": "number"
      -    },
      -    "unappliedFilters": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "unavailablePriceColumns": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "upstreamErrors": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "upstreamSchemaVersion": {
      -      "type": "string"
      -    },
      -    "upstreamTimestamp": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "tier",
      -    "source",
      -    "label",
      -    "region",
      -    "staticPriceColumns",
      -    "unavailablePriceColumns"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / source
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "instances",
      -  "matchingCount",
      -  "catalogSize",
      -  "source"
      -]New value: +[
      +  "instances",
      +  "matchingCount",
      +  "catalogSize"
      +]
  4. Changed5 schema fields changed
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Pricing region: us-east, us-west, europe, asia-pacific. Default: us-east",
      +  "enum": [
      +    "us-east",
      +    "us-west",
      +    "europe",
      +    "asia-pacific"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "catalogTotal": {
      +      "type": "number"
      +    },
      +    "catalogueIsSubset": {
      +      "type": "boolean"
      +    },
      +    "dataAsOf": {
      +      "type": "string"
      +    },
      +    "fallbackReason": {
      +      "type": "string"
      +    },
      +    "label": {
      +      "type": "string"
      +    },
      +    "notice": {
      +      "type": "string"
      +    },
      +    "priceTypes": {
      +      "additionalProperties": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "region": {
      +      "type": "string"
      +    },
      +    "servedFromCacheAgeMs": {
      +      "type": "number"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "sourceRegions": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "sources": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "staticPriceColumns": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "tier": {
      +      "type": "number"
      +    },
      +    "unappliedFilters": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "unavailablePriceColumns": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "upstreamErrors": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "upstreamSchemaVersion": {
      +      "type": "string"
      +    },
      +    "upstreamTimestamp": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tier",
      +    "source",
      +    "label",
      +    "region",
      +    "staticPriceColumns",
      +    "unavailablePriceColumns"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / source
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "instances",
      -  "matchingCount",
      -  "catalogSize"
      -]New value: +[
      +  "instances",
      +  "matchingCount",
      +  "catalogSize",
      +  "source"
      +]
  5. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, not destructive, openWorld), and the description goes well beyond them: it discloses that prices are Linux on-demand list prices in USD. Most valuably, it warns that some price columns are not live and points to provenance.priceTypes/staticPriceColumns, flagging that savings-plan or reserved rates shown there are static estimates, not live quotes. This is exactly the kind of caveat that prevents an agent from misreporting data.

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

Conciseness4/5

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

Front-loaded with purpose and provider list, then filters, then a critical price-semantics caveat. Information-dense with no wasted preamble, though the provenance clause is long and slightly hard to parse in one pass.

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

Completeness5/5

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

With annotations, a 100%-covered schema, and an output schema present, the description supplies the remaining context an agent needs, chiefly the price provenance caveat. Nothing essential to correct interpretation is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all 11 parameters thoroughly, including enum values and the zero-match behavior for invalid strings. The description adds little per-parameter meaning beyond the cross-cutting price-type context, so baseline 3 is appropriate.

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

Purpose5/5

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

Names a specific verb (Compare) and resource (cloud compute instance pricing) and enumerates the seven providers covered. It is clearly distinct from its LLM-oriented siblings, so an agent can route here for infrastructure pricing without ambiguity.

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

Usage Guidelines3/5

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

The description implies usage by listing the filters (region, provider, vCPUs, memory, category, processor, use case) an agent would apply, but never states when to prefer this over alternatives or any exclusions. This is inferred rather than explicit guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.