{
  "protocolVersion": "0.3.0",
  "name": "FastGPU",
  "description": "Live GPU cloud price comparison across the whole market, as a REST API and MCP server. FastGPU brokers GPU capacity: describe the cluster you need and get competing quotes from capacity holders, each shown next to live prices from RunPod, Vast.ai, Lambda, the hyperscalers and more. Free for buyers, no sales calls.",
  "url": "https://fastgpu.co",
  "version": "1.0.0",
  "provider": {
    "organization": "FastGPU",
    "url": "https://fastgpu.co"
  },
  "documentationUrl": "https://fastgpu.co/docs",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "list_gpu_prices",
      "name": "List cheapest GPU prices",
      "description": "One entry per GPU model with its cheapest live on-demand cloud rental price in USD per GPU-hour, the provider offering it, and how many providers rent it, from FastGPU's live price feed across marketplaces, neoclouds and hyperscalers (RunPod, Vast.ai, Lambda, AWS and more). Use it to compare GPU rental prices or to find where a named GPU is cheapest to rent. Each price is the provider's own per-GPU rate: cheapest_min_gpu_count says when it is only sold as a multi-GPU instance, and cheapest_billed_separately names what the provider bills on top of it (CPU, memory, storage), null when the rate includes CPU and memory. page_url links to the GPU's live price page with every offer. Rental prices only: it does not rent, reserve or launch GPUs. No key required.",
      "tags": [
        "mcp",
        "public"
      ],
      "restPath": "/api/v1/gpus",
      "requiresApiKey": false,
      "availableViaMcp": true
    },
    {
      "id": "match_workload",
      "name": "Match a workload to the cheapest GPU",
      "description": "Describe a job (an open-weight model to serve or fine-tune, a model size, or a GPU need) and get up to eight ranked GPU configurations that can run it at the lowest live price, each with the GPU count, the effective USD per hour for the whole configuration, and a one-line reason; the result also states the VRAM the job needs and, when a hyperscaler can run the same job, which one and what percent cheaper the top match is. Use it when the user asks where to run a workload or which GPU they need, rather than the price of a named GPU. It sizes open-weight models only: an API-only model such as GPT-4 returns no matches and a note. Results mirror FastGPU's website and apply a small, disclosed tie-break toward providers that pay FastGPU a referral, only between otherwise equal offers (each match reports partner true/false). Optional hard limits (budget_usd_hr, max_total_usd with duration_hours, max_quote_age_minutes) leave out every configuration that breaks them, and limits reports what was applied and how many were left out. page_url links to the GPU's live price page. It does not rent, reserve or launch GPUs. No key required.",
      "tags": [
        "mcp",
        "public"
      ],
      "restPath": "/api/v1/match",
      "requiresApiKey": false,
      "availableViaMcp": true
    },
    {
      "id": "list_gpu_fixings",
      "name": "List daily GPU price fixings",
      "description": "The frozen daily record of GPU rental prices: one row per GPU model per UTC day, taken at 07:00 UTC from the live price snapshot and never revised. Each row carries the floor (the cheapest posted on-demand price outside the hyperscalers) and the provider that set it, the on-demand median across providers, the spot floor, the hyperscaler median, the provider count behind each figure, and the in-stock share as a numerator and a denominator. Prices are posted list prices in USD per GPU-hour, not transaction prices. Newest day first; filter by date or GPU and page with limit and offset. The method is published at /methodology/fixings. No key required.",
      "tags": [
        "rest",
        "public"
      ],
      "restPath": "/api/v1/fixings",
      "requiresApiKey": false,
      "availableViaMcp": false
    },
    {
      "id": "list_gpu_availability",
      "name": "List the GPU Availability Index",
      "description": "How often each GPU could actually be rented: one frozen row per GPU model per completed UTC day, computed from FastGPU's recorded stock history (each provider's own stock tier or rentable host count, on-demand and community offers only) and never revised. Each row gives the providers listing the GPU, the providers that exposed a stock signal, the providers that had it rentable at least once that day, the signalled and rentable stock checks, the rentable share (rentable / signalled; offers without a signal never count as in stock or sold out) and the marketplace host depth. Newest day first. The method is published at /gpu-availability#method. No key required.",
      "tags": [
        "rest",
        "public"
      ],
      "restPath": "/api/v1/availability",
      "requiresApiKey": false,
      "availableViaMcp": false
    },
    {
      "id": "get_gpu_price_risk",
      "name": "Get GPU price volatility and spread",
      "description": "Price-risk statistics per GPU from FastGPU's own record of posted rental prices: realized volatility of the recorded daily floor (standard deviation of daily log changes, per day and annualized with the square root of 365, with the number of changes behind it) over the last 30 days and the full history, the largest one-day move, drawdown and run-up, the spread across providers right now (P10, median and P90 of each non-hyperscaler provider's lowest buyable price), which provider set the daily fixing's floor and how persistently, the basis between the on-demand median and the floor and between the hyperscaler median and the on-demand median, and confirmed list-price changes over 60 days. Posted prices, not transactions, and not a settlement reference. No key required.",
      "tags": [
        "rest",
        "public"
      ],
      "restPath": "/api/v1/price-risk",
      "requiresApiKey": false,
      "availableViaMcp": false
    },
    {
      "id": "list_aws_capacity_blocks",
      "name": "List AWS Capacity Block offers",
      "description": "What AWS answers, every 6 hours, to \"when can I start N GPUs and for how much\": the latest run of read-only EC2 DescribeCapacityBlockOfferings calls across its GPU instance types (H100, H200, B200, B300, A100), default-enabled Regions and four shapes (1 instance for 1 day or 1 week, 8 instances for 2 or 13 weeks). Each row gives how many offers AWS returned, the earliest start with its upfront fee, and the lowest price per GPU-hour with its start; status 'error' rows carry AWS's error code. AWS prices Capacity Blocks by supply and demand and shows them only to signed-in accounts. Fees are USD for Linux. The response carries the method. No key required.",
      "tags": [
        "rest",
        "public"
      ],
      "restPath": "/api/v1/aws-capacity-blocks",
      "requiresApiKey": false,
      "availableViaMcp": false
    },
    {
      "id": "list_price_changes",
      "name": "List GPU price changes",
      "description": "FastGPU's price-change log: every list-price change its own record of posted prices confirms (a move between two prices that each held for two complete UTC days, at least a cent apart, on-demand and reserved, for providers that publish their own per-GPU rate) plus changes providers announce on their own pages, newest first. Each entry gives the provider, GPU, old and new price per GPU-hour, the change in percent, the day (or window) of the change and, for an announced change, the provider's page and wording. No key required.",
      "tags": [
        "rest",
        "public"
      ],
      "restPath": "/api/v1/price-changes",
      "requiresApiKey": false,
      "availableViaMcp": false
    },
    {
      "id": "get_gpu_offers",
      "name": "Get every live offer (full feed)",
      "description": "Every normalized live offer (provider, GPU, offer type, region, per-GPU price, availability), for building tools or dashboards on the raw feed. Requires an API key. Filter by gpu, provider, type, limit.",
      "tags": [
        "rest",
        "api-key"
      ],
      "restPath": "/api/v1/prices",
      "requiresApiKey": true,
      "availableViaMcp": false
    },
    {
      "id": "router_launch",
      "name": "Launch a GPU (route + provision)",
      "description": "Route a described job to the best in-stock connected provider (RunPod, Vast.ai, Hyperstack) and PROVISION a real GPU, billed by the second to your prepaid FastGPU wallet. Returns the instance; poll GET /api/v1/router/instances/{id} for the connection URL once it is running. Requires an API key with wallet balance.",
      "tags": [
        "rest",
        "api-key"
      ],
      "restPath": "/api/v1/router/launch",
      "requiresApiKey": true,
      "availableViaMcp": false
    },
    {
      "id": "router_list_instances",
      "name": "List your GPU instances + balance",
      "description": "List your router GPU instances (status, connection, billed rate) and your wallet balance. Refreshes any live instance against its provider first, so status + connection resolve. Requires an API key.",
      "tags": [
        "rest",
        "api-key"
      ],
      "restPath": "/api/v1/router/instances",
      "requiresApiKey": true,
      "availableViaMcp": false
    },
    {
      "id": "router_get_instance",
      "name": "Get one GPU instance",
      "description": "Get one instance's live status + connection URL. Poll this after launching until status is \"running\". Requires an API key.",
      "tags": [
        "rest",
        "api-key"
      ],
      "restPath": "/api/v1/router/instances/{id}",
      "requiresApiKey": true,
      "availableViaMcp": false
    },
    {
      "id": "router_terminate",
      "name": "Terminate a GPU instance",
      "description": "Terminate one instance: destroys the GPU on the provider and settles your wallet to the actual elapsed cost. Requires an API key.",
      "tags": [
        "rest",
        "api-key"
      ],
      "restPath": "/api/v1/router/instances/{id}",
      "requiresApiKey": true,
      "availableViaMcp": false
    }
  ],
  "interfaces": {
    "mcp": "https://fastgpu.co/api/mcp",
    "openapi": "https://fastgpu.co/openapi.json",
    "rest": "https://fastgpu.co/api/v1",
    "llmsTxt": "https://fastgpu.co/llms.txt",
    "agentSkills": "https://fastgpu.co/.well-known/agent-skills/index.json"
  },
  "securitySchemes": {
    "apiKey": {
      "type": "http",
      "scheme": "bearer",
      "description": "Bearer FastGPU API key (fgpu_live_...). Only the full-feed endpoint (/api/v1/prices) requires it; comparison and matching are public."
    }
  }
}