Skip to main content
Glama

billing_quote

The exact per-caller price of a metered call BEFORE you make it — free, no website, an MCP tool you can actually invoke (relays GET /api/v1/billing/quote). path = the API path the call would hit — e.g. "/api/v1/relationships" (the relationships tool), "/api/v1/look.from" (look_from), "/api/v1/map.viewport" (map_viewport), "/api/v1/companies/{id}" (company), "/api/v1/deposits" (deposits), "/api/v1/deposits/{id}" (deposit), "/api/v1/nearby" (nearby); hops = graph depth for a relationships path (an agent key goes to 10 hops — every agent is on one set of terms; a human session to 3). Priced for YOU. Read joules_all_in — the TRUE debit (base joules + rail_fee_joules, the 0.5% rail surcharge); fund that, not the base. Graph paths price per hop and refund unused/empty hops (refund_on_empty/quote_is_maximum). Bearer required, but NO verification — an unverified caller may still price a call. For "/api/v1/site.reconstruction" pass the site (lat + lng, or entity_type + id; optional radius_m, as_of): the quote returns the tier that site gets (decided now, before any charge) and THAT tier's price — without a site it lists both tier prices.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
latNo
lngNo
hopsNo
pathYes
as_ofNo
radius_mNo
entity_typeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pegNo
usdNo
hopsNo
pathNo
tierNosite.reconstruction: the model tier this site gets (lidar_2m | dem_30m), decided before any charge
joulesNoBASE price, before the rail surcharge
query_typeNo
billed_hopsNo
pricing_tierNo
rate_per_hopNo
joules_all_inNoTHE TRUE DEBIT — fund this, not `joules`
pricing_modelNo
rail_fee_joulesNothe ~0.5% rail surcharge, rounded up
refund_on_emptyNo
quote_is_maximumNo
partial_refund_noteNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "As Of"
      +}
    • addedInput schema / properties / entity_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Entity Type"
      +}
    • addedInput schema / properties / id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Id"
      +}
    • addedInput schema / properties / lat
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Lat"
      +}
    • addedInput schema / properties / lng
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Lng"
      +}
    • addedInput schema / properties / radius_m
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Radius M"
      +}
    • addedOutput schema / properties / tier
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "site.reconstruction: the model tier this site gets (lidar_2m | dem_30m), decided before any charge",
      +  "title": "Tier"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "billing_quote — covers BOTH backend shapes (pricing_model 'per_hop' carries billed_hops /\nrate_per_hop / refund_on_empty / quote_is_maximum; 'flat_query_type' omits them). All optional,\nso neither shape errors.",
      +  "properties": {
      +    "billed_hops": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Billed Hops"
      +    },
      +    "hops": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Hops"
      +    },
      +    "joules": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "BASE price, before the rail surcharge",
      +      "title": "Joules"
      +    },
      +    "joules_all_in": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "THE TRUE DEBIT — fund this, not `joules`",
      +      "title": "Joules All In"
      +    },
      +    "partial_refund_note": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Partial Refund Note"
      +    },
      +    "path": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Path"
      +    },
      +    "peg": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Peg"
      +    },
      +    "pricing_model": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Pricing Model"
      +    },
      +    "pricing_tier": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Pricing Tier"
      +    },
      +    "query_type": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Query Type"
      +    },
      +    "quote_is_maximum": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Quote Is Maximum"
      +    },
      +    "rail_fee_joules": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "the ~0.5% rail surcharge, rounded up",
      +      "title": "Rail Fee Joules"
      +    },
      +    "rate_per_hop": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Rate Per Hop"
      +    },
      +    "refund_on_empty": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Refund On Empty"
      +    },
      +    "usd": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Usd"
      +    }
      +  },
      +  "title": "QuoteOut",
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden and does so well: free to invoke, bearer required but unverified callers allowed, the 0.5% rail surcharge baked into joules_all_in, per-hop pricing with refund_on_empty/quote_is_maximum, hop limits by key type (agent 10, human 3), and tier selection before any charge for site.reconstruction.

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-loads the core value proposition (exact price before the call, free, invocable) and then packs parameter guidance densely. It is long and slightly run-on with heavy parentheticals, but nearly every clause conveys actionable information rather than filler.

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?

For an 8-param, 1-required pricing tool with no annotations, this is complete: it covers auth behavior, billing semantics, refund behavior, per-path parameter meaning, and the site.reconstruction special case. Return values are not belabored since an output schema exists.

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

Parameters5/5

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

Schema description coverage is 0% and there are 8 parameters, so the description must compensate — and it does: path is defined with concrete examples mapped to sibling tools, hops is defined as graph depth with key-dependent caps, and lat/lng/entity_type/radius_m/as_of are explained for the site.reconstruction case.

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+resource with scope: 'the exact per-caller price of a metered call BEFORE you make it.' It also names the underlying route (GET /api/v1/billing/quote) and ties itself to per-call pricing, which distinguishes it from sibling quote tools like market_quote and balance_proof.

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

Usage Guidelines4/5

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

Clearly signals when to use it: before making a metered call, and to fund joules_all_in rather than the base joules. It also notes bearer is required but no verification is needed, so an unverified caller may still price a call. It stops short of naming an explicit alternative/fallback sibling, so not a 5.

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.

Resources