Skip to main content
Glama

corpusAI Cloud Pricing

Daily spot history

spot_daily
Read-onlyIdempotent

Paid (0.05 USDC per call). Full daily history for one instance type, all eras stitched. One row per UTC day from the earliest data for the type to now. Rows dated before the type's first raw event come from the legacy history (source = pauley: measured 2022-05 to 2024-01 AWS, open/high/low/close present on days the price moved; titans: daily average only, 2024 to 2026). Rows from direct_from on are time-weighted, zone-collapsed bars from the raw event store (source = direct, same method as /spot/hourly; avg equals the public dashboard value). open/high/low/close are null where the source only has an average.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoEnd of the window (exclusive), ISO 8601 UTC. Default: now.
fromNoStart of the window (inclusive), ISO 8601 UTC. Default: the earliest row for the type.
regionYesRegion slug as listed by /catalog (for example `us-east-1` for AWS, `us-central1` for GCP, `us-east` for Azure). Azure slugs map to `eastus`, `westus2`, `westeurope`. Example: us-east-1
instanceYesInstance / machine / SKU type name exactly as listed by /instances (for example `c5.large`, `n2-standard-4`, `D2s_v5`). Example: c5.large
providerYesCloud provider. One of `aws`, `gcp`, `azure`.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNo
barsNo
fromNo
countNo
zonesNoZone series collapsed in the `direct` rows.
regionNo
instanceNo
providerNo
direct_fromNoFirst day served from the raw event store; earlier rows are legacy history. Null for a type with legacy history only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": true,
      +  "properties": {
      +    "bars": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "avg": {
      +            "description": "Time-weighted (or, for titans, sampled) daily average, USD per hour. Equals the public dashboard value.",
      +            "type": "number"
      +          },
      +          "close": {
      +            "description": "Price at the end of the day; null when unavailable.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "date": {
      +            "description": "UTC day.",
      +            "type": "string"
      +          },
      +          "dur": {
      +            "description": "Seconds of the day covered by known prices (`direct` rows only).",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "high": {
      +            "description": "Highest price of the day, any zone; null when unavailable.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "low": {
      +            "description": "Lowest price of the day, any zone; null when unavailable.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "open": {
      +            "description": "Price at the start of the day (median across zones for `direct`); null when the source only has an average.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "source": {
      +            "description": "Where a row comes from; see `sources` in /catalog for the legend and standing of each.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "date",
      +          "avg",
      +          "source"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "count": {
      +      "type": "number"
      +    },
      +    "direct_from": {
      +      "description": "First day served from the raw event store; earlier rows are legacy history. Null for a type with legacy history only.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "from": {
      +      "type": "string"
      +    },
      +    "instance": {
      +      "type": "string"
      +    },
      +    "provider": {
      +      "type": "string"
      +    },
      +    "region": {
      +      "type": "string"
      +    },
      +    "to": {
      +      "type": "string"
      +    },
      +    "zones": {
      +      "description": "Zone series collapsed in the `direct` rows.",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, but the description adds substantial non-structured behavior: a paid per-call cost, data provenance per era (`source` = pauley/titans/direct), which fields are null when the source only has an average, and that `avg` equals the public dashboard value. This is exactly the kind of context annotations cannot carry.

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 price, then the window/schema semantics. Dense but well organized. The era-by-era detail is arguably heavier than needed for tool selection, though it earns its place for interpreting nullable OHLC values.

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 a good schema and an output schema present, the description need not explain return shapes. It covers cost, granularity, provenance, and null handling, leaving no material gap for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents from/to/region/instance/provider with examples and defaults. The description adds provenance semantics for the rows returned but no additional parameter syntax, format, or constraint detail beyond what the schema supplies.

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?

States a specific verb (retrieve), resource (spot daily history), and scope (one instance type, all eras stitched, one row per UTC day). An agent can distinguish it from spot_hourly/spot_monthly/spot_latest purely on the stated granularity and coverage.

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 context (full daily history, all eras stitched) and discloses a per-call fee (0.05 USDC), which helps an agent decide whether to call it. However, it never explicitly says when to prefer this over spot_monthly, spot_hourly, or spot_latest, nor does it state prerequisites for the provider/region/instance trio.

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.