Skip to main content
Glama

Lantern Works GPU Prices: daily GPU rental price comparison

optimize_stack

Read-only

Cheapest suitable stack among tracked providers for monthly needs (set the quantities you need, rest 0).

scrape_pages: pages/month without JS rendering. scrape_pages_js: pages/month needing JS rendering. proxy_gb: residential proxy GB/month. emails_sent: transactional emails/month. search_queries: search API queries/month. gpu_hours: GPU-hours/month (1 GPU), optionally gpu_model e.g. 'H100', 'A100', 'RTX 4090'. Each line has the chosen plan, monthly_cost_usd, calc, vendor quote, source_url, checked_at and assumptions, plus alternatives. A vendor price that isn't published is 'unknown' (never estimated). manual_signup_only=true means a human must sign up (never automate it); exclude_manual_signup=true drops those plans. Same data as https://thelanternworks.com/api/v1/stack-pricing.json and /tools/stack-optimizer/.

Input Schema

NameRequiredDescriptionDefault
modeNofull
proxy_gbNo
gpu_hoursNo
gpu_modelNo
emails_sentNo
scrape_pagesNo
search_queriesNo
scrape_pages_jsNo
exclude_manual_signupNo

Output Schema

NameRequiredDescriptionDefault
okYes
modeNo
errorNo
linesNo
quote_idNo
issued_atNo
quote_basisNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedOutput schema / properties / lines / items / properties / alternatives / items / properties / availability
      Added value: +{
      +  "properties": {
      +    "checked_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "in_stock": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / alternatives / items / properties / availability_note
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / alternatives / items / properties / in_stock
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / availability_note
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / choice / properties / availability
      Added value: +{
      +  "properties": {
      +    "checked_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "in_stock": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / choice / properties / availability_note
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / lines / items / properties / choice / properties / in_stock
      Added value: +{
      +  "type": [
      +    "boolean",
      +    "null"
      +  ]
      +}
  2. Changed6 schema fields changed
    • changedOutput schema / else / required
      Previous value: -[
      -  "ok",
      -  "mode",
      -  "lines",
      -  "total_monthly_usd",
      -  "total_is_complete"
      -]New value: +[
      +  "ok",
      +  "mode",
      +  "lines",
      +  "total_monthly_usd",
      +  "total_is_complete",
      +  "quote_id",
      +  "issued_at"
      +]
    • changedOutput schema / properties / error / properties / code / enum
      Previous value: -[
      -  "invalid_argument",
      -  "invalid_cursor",
      -  "not_found",
      -  "feed_unavailable",
      -  "feed_invalid",
      -  "upstream_unavailable",
      -  "internal_error"
      -]New value: +[
      +  "invalid_argument",
      +  "invalid_cursor",
      +  "cursor_expired",
      +  "not_found",
      +  "feed_unavailable",
      +  "feed_invalid",
      +  "upstream_unavailable",
      +  "internal_error"
      +]
    • addedOutput schema / properties / issued_at
      Added value: +{
      +  "format": "date-time",
      +  "type": "string"
      +}
    • addedOutput schema / properties / lines / items / properties
      Added value: +{
      +  "alternatives": {
      +    "items": {
      +      "properties": {
      +        "rate_id": {
      +          "pattern": "^r_[0-9a-f]{12}$",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "rate_id"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  "choice": {
      +    "properties": {
      +      "rate_id": {
      +        "pattern": "^r_[0-9a-f]{12}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "rate_id"
      +    ],
      +    "type": [
      +      "object",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / quote_basis
      Added value: +{
      +  "type": "object"
      +}
    • addedOutput schema / properties / quote_id
      Added value: +{
      +  "pattern": "^q_[0-9a-f]{20}$",
      +  "type": "string"
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations cover the read-only and open-world profile, and the description adds genuinely non-obvious behavior: unpublished vendor prices return 'unknown' rather than being estimated, manual_signup_only=true plans must never be automated, and results carry source_url/checked_at/assumptions. That is real policy disclosure beyond the annotations; only the 'mode' behavior is left opaque.

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?

Purpose and the key usage rule are front-loaded in the first sentence, then a compact per-parameter glossary. Dense but every line adds information; the trailing API/URL reference is marginal but short.

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 an output schema present, the description needn't detail return values, yet it still names the key result fields and the 'unknown' fallback. Combined with unit definitions for 8 of 9 params and the manual-signup policy, an agent has enough to call it correctly; only 'mode' is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description carries the burden and mostly does: it defines units and meaning for scrape_pages, scrape_pages_js, proxy_gb, emails_sent, search_queries, gpu_hours, gpu_model (with example values) and exclude_manual_signup. The 'mode' parameter is never explained, which is the one real gap.

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

Purpose4/5

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

States a specific outcome (cheapest suitable stack), the resource domain (tracked providers) and the cost basis (monthly needs). It does not differentiate itself from the very close sibling optimize_agent_stack, nor from compare_gpu_prices/estimate_job_cost, so an agent must guess which optimizer to call.

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?

'set the quantities you need, rest 0' gives a concrete calling convention, which is useful. But there is no when-to-use/when-not guidance and no mention of the sibling optimize_agent_stack or the comparison tools, leaving selection between near-duplicate tools to inference.

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.