MCP server for FLOPS public compute indices — catalog, search, price, verify. Works with Claude, Cursor, Windsurf, or any MCP host.
Five tools with complete schemas and descriptions. Naming is clear and verb-based (list_, get_, verify, search_). Descriptions are detailed (100-250 chars) and explain WHEN to use each tool. All parameters have types and descriptions. Output schemas are documented in descriptions. Security is strong: input validation against regex, percent-encoding to prevent path traversal, no secrets in params. Main gaps: no error handling guidance (what to do if index not found?), no pagination despite list_indices potentially returning many items, and no tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only.
Resolve a FLOPS index to its source-opaque PUBLIC payload (the public citation contract). Returns {index_id, value, unit, as_of, data_tier, confidence, verify_url, citation_url, permalink}. Prefer this when you intend to CITE the value. Also exposed as the MCP resource flops://index/<INDEX_ID>.
Fetch the current published value for a FLOPS compute price index. Returns the published envelope as-is: {index_id, value, unit, as_of, delayed, data_tier, confidence, change_24h, disclaimer, methodology_url, verify_url, citation_url, permalink, upgrade} -- the 14-field envelope. Values are delayed and indicative. Use get_index for the reduced, citation-only payload.
List all public FLOPS compute-price indices. Returns {count, indices[]} where each row is {index_id, family, value, unit, as_of, confidence, change_24h, delayed}. Use this to discover available indices before calling get_index or verify. No auth required.
Resolve a free-text query to canonical FLOPS index slugs. Use when you don't know the exact slug — e.g. 'H100 spot' returns matching catalog entries.
Check a FLOPS index value against the published index. Pass `value` with a number you are about to cite (or already hold) and the response tells you whether it is right: `verified` true/false, `expected` (what you submitted), `actual_value` (what FLOPS publishes) and `delta_pct`. Omit `value` to simply look up the current published value — then `verified` is null, which means 'not checked', NOT 'correct'. Note: without an API key you are checked against the public value, which is rounded to 2 decimals and delayed onto a 6-hour grid, so a full-precision real-time number will not match anonymously.
No tool annotations despite all tools being read-only and idempotent. Missing readOnlyHint and idempotentHint in tool definitions.
list_indices lacks pagination parameters (limit, offset/cursor). Description does not mention result limits or how many indices are returned.
No error recovery guidance in tool descriptions. E.g., verify does not explain what to do if index_id is invalid; get_index does not suggest alternatives if index not found.
get_price and get_index return overlapping payloads (14 fields vs 9 fields). Descriptions do not clearly explain when to use each, LLMs may pick wrong tool.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
search_indices limit parameter has no minimum constraint documented (only max 50). LLM could pass limit=0 or negative values.