FLOPS · Onboarding (Engineering)

Overview For finance teams For engineering teams

Wire FLOPS into your agent, pipeline, or dashboard

Settlement-grade GPU compute price data via a 9-tool MCP server, an auth-free REST surface, and a stdlib-only Python SDK. Receipts are SHA-256 + content-addressed — every response is verifiable end-to-end without trusting the server.

1 MCP — Claude Code · Cursor · Windsurf · ChatGPT desktop 3 min

The agent path. flopsindex-mcp v0.4.0 on PyPI exposes 10 tools over MCP — every published value is one tool call away. Hosted alternative at https://app.flopsindex.com/mcp.

Install

pip install flopsindex-mcp

Wire to your host

// ~/.config/claude-code/mcp.json  (or Cursor settings)
{
  "mcpServers": {
    "flopsindex": {
      "command": "flopsindex-mcp",
      "env": { "FLOPS_API_KEY": "your-key" }
    }
  }
}

Tool surface

toolwhat it does
pricecurrent value for a slug
tstime-series in a range
searchNL-to-slug resolver
catalogfull index list, partner-gated
methodologyversion + math for a slug
recomputereceipt + replay link
spreadtwo legs · z-score · pct-rank
compute_marginspark-spread per SKU × region
verifyverify a receipt hash
gpu_capexreference street price per SKU
F4 ASK AGENT button: the dashboard's Spreads panel has a button that copies the matching spread tool-call payload to clipboard. Paste into Claude/Cursor and the agent answers off the same canonical source.
2 REST — public surface, no signup 2 min

Track-D public surface — auth-free LIVE indices for prototyping, llms.txt discovery, and agent.json contract.

The five public endpoints

GET /v1/price/{slug}           current value
GET /v1/ts/{slug}?range=7d     time-series
GET /v1/search?q=H100          NL-to-slug
GET /v1/methodology/{slug}     methodology surface
GET /v1/audit/recompute/{rid}  receipt verifier

Example response

$ curl https://app.flopsindex.com/v1/price/FLOPS-H100-OD
{
  "slug": "FLOPS-H100-OD",
  "value": 6.155,
  "tier": "LIVE",
  "confidence": "HIGH",
  "unit": "USD/GPU-hr",
  "as_of": "2026-05-18T13:00:00Z",
  "methodology_version": "flops-h100-od@v0.9",
  "observations_hash": "sha256:f7c2…b91a",
  "k_anon": 5,
  "num_sources": 7
}
3 REST — partner tier (X-FLOPS-Api-Key) 2 min

Full catalog, history, custom indices, spreads, compute-margin, recompute audit substrate. Send X-FLOPS-Api-Key: $KEY.

The endpoints engineers reach for

GET  /v1/catalog
GET  /v1/indices/{id}/values?range=30d
GET  /v1/derived/spread?a_gpu_model=H100&a_index_type=on_demand&...
GET  /v1/derived/compute-margin?sku=h100_sxm5®ion=us_west
GET  /v1/refdata/gpu-capex/{sku}             # 3-tier cascade: T2 federal > T1 ebay × 1.15 > T3 seed
GET  /v1/refdata/gpu-capex/{sku}/observations # raw rows behind the LIVE primary (IOSCO 17 drill-down)
GET  /v1/refdata/gpu-capex/{sku}/secondary    # eBay completed-listings credible bounds
POST /v1/me/keys/sub                  # mint agent sub-key
GET  /v1/audit/recompute/{run_id}     # IOSCO replay receipt

Idempotency

Non-GET endpoints accept Idempotency-Key: <uuid>. Replay within 24h returns the cached response; outside that window the key is fresh. Safe for agent retries.

4 Python SDK — zero deps, stdlib only 2 min
pip install flopsindex

from flopsindex import FlopsClient
c = FlopsClient(api_key="...")        # or use $FLOPS_API_KEY

c.price("FLOPS-H100-OD")              # public
c.ts("FLOPS-H100-OD", range="30d")    # public
c.catalog()                           # partner
c.spread("H100", "on_demand", "B200", "on_demand", range="30d")
c.compute_margin(sku="h100_sxm5", region="us_west")
c.verify(run_id="...")                # receipt replay

Excel / Sheets cells

Same data, formula syntax. See the finance onboarding for the cell catalog.

? Common questions — engineering
How do I get an API key?
Pilot partners: your operator created the account via /admin. Otherwise email team@flopsindex.com with your use case — turnaround is typically same-day.
What does a receipt verifier actually do?
GET /v1/audit/recompute/{run_id} replays the published value from canonical inputs and returns {"status": "green|yellow|red", "expected": x, "computed": y, "delta_bps": z}. Green ≤1bp / Yellow ≤50bp / Red >50bp. The Recompute Audit panel on F13 GOVRN renders the daily run.
Are the public endpoints rate-limited?
Yes — IP-bucket on public surface (~100 req/min/IP), token-bucket per X-FLOPS-Api-Key for partner tier. 429 responses carry Retry-After. Hammer-respect is documented in /.well-known/agent.json.
Sub-keys for agent fanout — how do they work?
POST /v1/me/keys/sub mints a child key with label + ttl_hours. Use one sub-key per agent so revocation has a narrow blast radius. DELETE /v1/me/keys/sub/{id} revokes immediately.
Where's the OpenAPI spec?
/openapi.json serves the full schema. Each router lives in src/delivery/*_router.py; the methodology surface is under /v1/methodology/*.
How does the methodology version work for replays?
Every published value carries a methodology version pin (e.g. flci-h100@v0.9). The recompute job replays using that version's math even if the current version has advanced. Methodology versions are immutable.

Ready to wire it up?

Email us OpenAPI spec flopsindex-mcp · PyPI