# Compute Finance Oracle (npm · @compute-finance/mcp)

Live AI compute pricing oracle — real-time LLM model prices across providers

- Trust score: 76/100 (medium)
- Change this week: +33
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@compute-finance/mcp`: 76/100 (this document), [markdown](https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp.md), [page](https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp)

## Channel facts

- Registry: `npm`
- Package: `@compute-finance/mcp`
- Version: `0.8.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to compute-finance/mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3094 tokens (~147/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 86/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 58% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add compute-finance-mcp -- npx -y @compute-finance/mcp
```

### Codex

```bash
codex mcp add compute-finance-mcp -- npx -y @compute-finance/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "compute-finance-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@compute-finance/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add compute-finance-mcp --command npx --arg -y --arg @compute-finance/mcp
```

### Hermes

```yaml
mcp_servers:
  compute-finance-mcp:
    command: "npx"
    args: ["-y", "@compute-finance/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "compute-finance-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@compute-finance/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 76, +31)

- [functional regression] Schema quality: 130 → 147
- [functional improvement] Stability: unverified → 0.30
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100

### 2026-08-03 (score 45, −31)

- [security regression] Stability: 0.23 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] Package version: 0.7.0 → 0.8.0

### 2026-08-02 (score 76, +58)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] The attested source repository moved: compute-finance/mcp
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-08-01 (score 18, +13)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 5, −20)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 25, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 43)

First indexed and scored.

## MCP tools (21)

### `data_get_basket` (~149 tokens)

All models in the oracle basket — provider, family (e.g. openai.gpt, anthropic.claude, google.gemini, xai.grok), base_* USD and wei prices per million tokens (the provider list price), billed_* prices (what compute.finance charges), and per-component cache pricing (cachedInput, cacheWrite5m, cacheWrite1h) with provider attribution, priced on the same base. `routing_fee_rate` ships once at the top level; billed_* is null when the oracle does not publish it. Compare models on base_*; budget on billed_*. Source: Oracle API. For a single model, use data_get_price instead.

### `data_get_price` (~218 tokens)

Price for a single oracle-tracked model — basket members and catalog-only entries on identical terms. Returns base_input/base_output USD per million tokens (the provider list price), `routing_fee_rate`, and billed_* = base × (1 + routing_fee_rate) — what compute.finance charges. Wei prices are populated for basket members and null otherwise. Per-component cache pricing (cachedInput, cacheWrite5m, cacheWrite1h) is on the base basis. Compare models on base_*: two models with the same provider price return the same numbers regardless of basket membership. `price_source` ('oracle-basket' | 'oracle-catalog') names the serving endpoint only and does not change the pricing basis. Errors with 'Model not tracked by oracle' for unknown keys. Source: Oracle API (/v1/oracle/resolve + /v1/oracle/basket). Accepts canonical names like 'claude-opus-4.7' or 'gpt-5.5'.

Input parameters:

- `model` (string, required): Model name

### `data_get_scu` (~121 tokens)

Current Standard Compute Unit (SCU) — value plus the methodology-versioned `breakdown` discriminated union listing every family representative with USD-per-million-token prices and blended cost. Also carries `computeIndex`: the inverse purchasing-power view (baseline / scuUsd) × 100, anchored at 100 at the first confirmed revision. The response carries methodologyVersion; see data_get_methodology for the formula in force. For the breakdown alone, use data_get_breakdown; for the baseline denominator, use data_get_baseline. Source: Oracle API.

### `data_get_breakdown` (~103 tokens)

Per-family blended-cost breakdown of the SCU — methodology-versioned discriminated union (keyed by methodologyVersion) with one entry per family representative (family, modelKey, inputPriceUsdPerMillion, outputPriceUsdPerMillion, blendedCostUsd). Source: Oracle API (/v1/oracle/scu.breakdown). Use to attribute SCU contributions to specific model families. For the full SCU response with reference workload, use data_get_scu instead.

### `data_get_cpi` (~83 tokens)

Full Compute Price Index — raw oracle response with provider, family, integration flag, raw and marked-up prices, scuUsd, basket version, last-updated timestamp. Source: Oracle API. Use data_get_basket for a cleaner view focused on pricing; use this for the complete index data. For the per-family blended-cost breakdown, use data_get_breakdown.

### `data_get_reconstitutions` (~72 tokens)

Historical basket changes — model swaps with date, basket version, models added/removed, SCU before/after. Source: Oracle API. Sorted most recent first. Use the optional limit parameter to cap results.

Input parameters:

- `limit` (number): Max events to return (most recent first). Defaults to all.

### `data_get_methodology` (~64 tokens)

Methodology changelog — every registered methodology version with its formula summary, family rule, reference workload, and spec reference, plus activeVersion (the version in force now). Source: Oracle API. Use to interpret SCU values and to pin integrations to a methodology version.

### `data_get_history` (~234 tokens)

SCU index time series — date-range history of Standard Compute Unit values with optional bucketing granularity. Source: Oracle API (/v1/oracle/history). Each point carries scuUsd, methodologyVersion, revisionVersion, metadataHash, and computeIndex when populated. per-revision emits one point per revision; daily and weekly buckets carry the last revision's value forward across empty buckets (step-function close). Defaults to per-revision over the full range. For a single point at a specific timestamp, fetch the individual revision via data_get_cpi.

Input parameters:

- `from` (string): ISO 8601 start of range (inclusive). Defaults to genesis.
- `granularity` (string): Bucketing granularity. per-revision emits one point per revision; daily/weekly buckets carry the last revision's value forward across empty buckets (step-function close). Defaults to per-revision.
- `limit` (number): Max points (cap 10000). Oldest are dropped first when capped; the response sets truncated: true.
- `to` (string): ISO 8601 end of range (inclusive). Defaults to now.

### `data_get_model_price_history` (~254 tokens)

Per-model input/output USD price time series — date-range history for a single model that has appeared in at least one confirmed SCU basket. Source: Oracle API (/v1/oracle/models/{model}/price-history). Each point carries input/output USD per million tokens plus revisionVersion, methodologyVersion and metadataHash. Catchup revisions whose manifest is unavailable are surfaced in unavailableRevisions. Same granularity (per-revision/daily/weekly) and limit semantics as data_get_history. Models that have never appeared in any confirmed revision return an error.

Input parameters:

- `from` (string): ISO 8601 start of range (inclusive). Defaults to genesis.
- `granularity` (string): Bucketing granularity. per-revision emits one point per revision the model appeared in; daily/weekly carry forward. Defaults to per-revision.
- `limit` (number): Max points (cap 10000). Oldest are dropped first when capped.
- `model` (string, required): Model pricing key (e.g. 'gpt-5.5'). Models that have never appeared in any confirmed revision return an error.
- `to` (string): ISO 8601 end of range (inclusive). Defaults to now.

### `data_get_catalog` (~101 tokens)

Full catalog of tracked models — every model with a recorded price, including non-index entries. Source: Oracle API (/v1/oracle/catalog). Each entry carries modelKey, displayName, provider, family, indexMember flag (true if current family representative in the latest confirmed revision), currentPrice with input/output USD per million tokens and observedAt timestamp, and per-component cache/reasoning blocks. For basket-only display, use data_get_basket instead.

### `data_get_model_price_at` (~192 tokens)

Per-model input/output USD price effective at a specific timestamp. Source: Oracle API (/v1/oracle/models/{model}/price-at). Response is a discriminated union by source: 'manifest' when the model is the family representative in the revision active at that date (cross-links revisionVersion, methodologyVersion, metadataHash, family for verification), or 'providerCost' when only catalog pricing exists (step-function fallback). observedAt reflects when the price was recorded. Returns an error for malformed or future dates, untracked models, or dates preceding all available data.

Input parameters:

- `date` (string, required): ISO 8601 timestamp (e.g. '2026-06-15T12:00:00Z'). Must not be in the future.
- `model` (string, required): Model pricing key (e.g. 'gpt-5.5'). Returns the price effective at the requested timestamp.

### `data_get_baseline` (~123 tokens)

Frozen SCU denominator for the inverse computeIndex purchasing-power view: the SCU of the first confirmed revision (methodologyVersion 1), captured set-once and never changes. Source: Oracle API (/v1/oracle/baseline). The published computeIndex on /v1/oracle/scu, /v1/oracle/latest and each /v1/oracle/history point equals (baseline.scuUsd / point.scuUsd) × 100 — 100 at genesis, rises as compute gets cheaper. Returns null until the first revision is confirmed.

### `data_get_scu_at` (~219 tokens)

SCU value active at a specific timestamp via step function — no interpolation. Source: Oracle API (/v1/oracle/scu-at). Resolves the latest confirmed revision with publishedAt ≤ date and returns its scuUsd, scuUsd18, computeIndex, revisionVersion, methodologyVersion, publishedAt, and metadataHash. Monotonicity is non-strict — when two confirmed revisions share publishedAt the highest revisionVersion wins. computeIndex is derived as (baseline.scuUsd / scuUsd) × 100, the same formula as data_get_scu and each data_get_history point. Returns null when the date precedes the genesis revision; errors on malformed or future dates. Use data_get_history for a bucketed series; use data_get_scu_at for a single-point lookup.

Input parameters:

- `date` (string, required): ISO 8601 timestamp (e.g. '2026-06-15T12:00:00Z'). Must not be in the future. Returns null when the timestamp precedes the genesis revision.

### `compute_estimate` (~223 tokens)

Nominal USD cost for any oracle-tracked model given input/output token counts (no cache discounts) — basket members and catalog-only models on identical terms. Returns `base_usd_cost` (provider list price), `routing_fee_usd` and `billed_usd_cost` (what compute.finance charges), plus the `routing_fee_rate` they derive from. Compare models on base_usd_cost; budget on billed_usd_cost. `price_source` ('oracle-basket' | 'oracle-catalog') names the serving endpoint only and does not change the pricing basis, so two models with the same provider price return the same cost. Errors with 'Model not tracked by oracle' for unknown keys. Source: Oracle API (/v1/oracle/resolve + /v1/oracle/basket). For cache-aware cost, use analyze_session on a real transcript. Accepts canonical names like 'claude-sonnet-4.6'.

Input parameters:

- `input_tokens` (number, required)
- `model` (string, required)
- `output_tokens` (number, required)

### `compute_compare` (~168 tokens)

Rank all basket models by nominal cost for a workload. Source: Oracle API. Each row carries `base_usd_cost` (provider list price), `routing_fee_usd` and `billed_usd_cost` (what compute.finance charges); ranking is by base_usd_cost, and since the routing fee is one global rate the order is identical on either basis. Returns the sorted list plus a grouping by family (e.g. openai.gpt, anthropic.claude). Covers basket members only — for a catalog-only model use compute_estimate, whose numbers are on the same basis. Use to answer 'which model is cheapest?' or 'how much would this cost on a different model?'.

Input parameters:

- `input_tokens` (number, required)
- `output_tokens` (number, required)

### `render_session_report` (~114 tokens)

Pre-formatted session cost report for cf-session-management skill. Source: local Claude Code transcript + Oracle API. Reads the transcript, prices it, logs to history, returns a `text` string. Header carries the canonical Prompts · Inferences · Tool calls triplet (user prompts, assistant replies, tool_use blocks — three distinct counters). Print verbatim — do not reformat or interpret. Omit session_id for the most recent session.

Input parameters:

- `cwd` (string)
- `session_id` (string)

### `render_consumption_report` (~146 tokens)

Pre-formatted per-inference breakdown for cf-session-consumption skill. Source: local Claude Code transcript + Oracle API. Bar chart, tool aggregates, mechanical facts; one row per assistant reply (Innn). Header carries the canonical Prompts · Inferences · Tool calls triplet — same numbers as render_session_report and render_active_sessions. Print the `text` field verbatim. Pass full=true to show every inference instead of top-10/last-5.

Input parameters:

- `cwd` (string)
- `full` (boolean): If true, show every inference (no top-10/last-5 truncation). Default false.
- `session_id` (string)

### `render_active_sessions` (~115 tokens)

Pre-formatted table of recent Claude Code sessions across all projects — per-session Prompts · Inferences · Tool calls, tokens, and effective/nominal cost. Source: local Claude Code transcripts + Oracle API. Print the `text` field verbatim. Defaults to last 24h, top 10.

Input parameters:

- `cwd` (string): Limit to sessions from this working directory.
- `hours` (number): Look-back window in hours (default 24).
- `limit` (number): Max rows (default 10).

### `analyze_session` (~207 tokens)

Raw JSON session analysis — token totals, effective/nominal cost with cache breakdown, counterfactual across all basket models, profile classification. `current_model_cost` is on the base (provider list) basis, stated in `current_model_cost_basis`; `counterfactual_nominal` rows carry `base_usd_cost` and `billed_usd_cost`, so the session and the counterfactual are directly comparable on base. `usage.prompts` counts user messages, `usage.inferences` counts assistant replies, `usage.tool_calls` counts tool_use blocks. `current_model_cost.effective_usd` is `null` when the oracle has not published cache pricing for the model; `nominal_usd` stays populated as an upper-bound. Source: local Claude Code transcript + Oracle API. For pre-formatted output use render_session_report. Omit session_id for the most recent session.

Input parameters:

- `cwd` (string)
- `session_id` (string)

### `analyze_inferences` (~125 tokens)

Raw JSON per-inference breakdown — token counts, tool usage, effective/nominal cost, cache hit ratio, duration per inference. One row per assistant reply. `inferences[].effective_usd` is `null` when the oracle has not published cache pricing for the model; `nominal_usd` stays populated as an upper-bound. Source: local Claude Code transcript + Oracle API. For pre-formatted output use render_consumption_report. Omit session_id for the most recent session.

Input parameters:

- `cwd` (string)
- `session_id` (string)

### `telemetry_get_history` (~63 tokens)

Aggregate stats across logged sessions (deduped, last-wins). Source: local ~/.compute-finance/ storage + Oracle API. Sample size, cumulative effective vs nominal cost, per-profile medians, insights (cache dominance). Insights require at least 5 sessions.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp#diagnostics

## Score history

- 2026-08-04: 76
- 2026-08-03: 45
- 2026-08-02: 76
- 2026-08-01: 18
- 2026-07-31: 5
- 2026-07-30: 25
- 2026-07-28: 43
- 2026-07-27: 43

## Links

- npm package: https://www.npmjs.com/package/@compute-finance/mcp
- Socket report: https://socket.dev/npm/package/@compute-finance/mcp
- Repository: https://github.com/compute-finance/mcp
- Website: https://compute.finance/
- Changelog RSS feed: https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/compute-finance-mcp/compute-finance-mcp
