# io.github.sachinuppal/modelcostsaver (npm · @workswarm/modelcostsaver)

Offline MCP: predict LLM call cost and pick the cheapest capable model. No keys, no network.

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

## Components

- npm · `@workswarm/modelcostsaver`: 68/100 (this document), [markdown](https://verifymcp.io/servers/sachinuppal-modelcostsaver/workswarm-modelcostsaver.md), [page](https://verifymcp.io/servers/sachinuppal-modelcostsaver/workswarm-modelcostsaver)

## Channel facts

- Registry: `npm`
- Package: `@workswarm/modelcostsaver`
- Version: `0.1.1`
- 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-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), 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 (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 40 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1395 tokens (~174/item across 8 items; 7 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 92% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add sachinuppal-modelcostsaver -- npx -y @workswarm/modelcostsaver
```

### Codex

```bash
codex mcp add sachinuppal-modelcostsaver -- npx -y @workswarm/modelcostsaver
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add sachinuppal-modelcostsaver --command npx --arg -y --arg @workswarm/modelcostsaver
```

### Hermes

```yaml
mcp_servers:
  sachinuppal-modelcostsaver:
    command: "npx"
    args: ["-y", "@workswarm/modelcostsaver"]
```

### Other

```json
{
  "mcpServers": {
    "sachinuppal-modelcostsaver": {
      "command": "npx",
      "args": [
        "-y",
        "@workswarm/modelcostsaver"
      ]
    }
  }
}
```

## 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-03 (score 68, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 65, +60)

- [security regression] Provenance: unverified → fail
- [security improvement] Malware scan: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] License: unverified → pass
- [functional] Licence: Apache-2.0

### 2026-08-01 (score 5, −20)

- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-31 (score 25, −8)

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

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

- [security regression] Malware scan: pass → unverified

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

First indexed and scored.

## MCP tools (7)

### `estimate_cost` (~152 tokens)

Estimate cost

Estimate the cost of a single LLM call for one model from known or estimated token counts. Offline, no keys.

Input parameters:

- `charsPerToken` (number): Override the chars-per-token heuristic divisor.
- `expectedOutputText` (string): Expected output text; estimated if outputTokens is absent.
- `inputText` (string): Prompt text; estimated to tokens if inputTokens is absent.
- `inputTokens` (integer): Exact input tokens; optional if inputText is given.
- `model` (string, required): Model alias or full id, e.g. "sonnet" or "claude-sonnet-4-6".
- `outputTokens` (integer): Exact output tokens; defaults to the model output cap.

Output parameters:

- `asOf` (string)
- `breakdown` (object)
- `catalogVersion` (string)
- `cost` (object)
- `inputTokens` (number)
- `model` (string)
- `outputTokens` (number)
- `pricing` (object)
- `provider` (string)
- `tier` (string)
- `tokensWereEstimated` (boolean)

### `predict_cost` (~197 tokens)

Predict cost

Forecast the cost of a prompt across candidate models before the call. Returns a cheapest-first ranking with assumptions. Offline.

Input parameters:

- `candidates` (array): Candidate models (alias or id); defaults to all chat-capable.
- `charsPerToken` (number)
- `contextTokens` (integer): Known context tokens already loaded.
- `expectedOutputTokens` (integer): Exact output tokens; else inferred from taskClass/model.
- `includeLocal` (boolean)
- `inputTokens` (integer): Exact input tokens (skips prompt estimation).
- `prompt` (string): The prompt to forecast; estimated to tokens if inputTokens absent.
- `providers` (array): Axis 1: provider availability allowlist (spec 5.4).
- `target` (string): Axis 2: "self" (default) applies the client scope; "code" considers all providers.
- `taskClass` (string): Drives the default output cap.

Output parameters:

- `asOf` (string)
- `catalogVersion` (string)
- `cheaperIfAvailable` (object)
- `cheapest`
- `forecasts` (array)
- `notes` (array)
- `providerScope` (array)
- `scopeSource` (string)

### `select_optimal_model` (~189 tokens)

Select optimal model

Pick the single cheapest model that meets the task tier, capabilities, and budget, with full reasoning and a fallbackChain. Offline.

Input parameters:

- `estimatedInputTokens` (integer, required): Estimated input tokens for the forecast.
- `estimatedOutputTokens` (integer, required): Estimated output tokens for the forecast.
- `includeLocal` (boolean)
- `maxCostUsd` (number): Budget ceiling for the predicted call cost.
- `providers` (array): Axis 1: provider availability allowlist (spec 5.4).
- `requiredCapabilities` (array): Capabilities the model must support.
- `target` (string): Axis 2: "self" (default) applies the client scope; "code" considers all providers.
- `task` (string): Free-text task; used for the tier heuristic when taskClass is absent.
- `taskClass` (string): Explicit task class; overrides the heuristic.

Output parameters:

- `asOf` (string)
- `budgetExceeded` (boolean)
- `catalogVersion` (string)
- `cheaperIfAvailable` (object)
- `fallbackChain` (array)
- `providerScope` (array)
- `reasoning` (array)
- `rejected` (array)
- `runnerUp` (object)
- `scopeSource` (string)
- `selected`
- `shortfallUsd` (number)

### `compare_models` (~120 tokens)

Compare models

Compare models side by side for a fixed token shape, cheapest first, with the multiple of the cheapest. Offline.

Input parameters:

- `inputTokens` (integer, required): Input tokens for the comparison.
- `models` (array, required): Models to compare (alias or id).
- `outputTokens` (integer, required): Output tokens for the comparison.
- `providers` (array): Axis 1: provider availability allowlist (spec 5.4).
- `target` (string): Axis 2: "self" (default) applies the client scope; "code" considers all providers.

Output parameters:

- `asOf` (string)
- `catalogVersion` (string)
- `cheaperIfAvailable` (object)
- `cheapest`
- `mostCapable`
- `providerScope` (array)
- `rows` (array)
- `scopeSource` (string)
- `unknownModels` (array)

### `list_models` (~102 tokens)

List models / pricing

Return the model catalog with pricing, optionally filtered. capabilities are arrays. Offline.

Input parameters:

- `capability` (string): Require a capability.
- `includeLocal` (boolean): Include local / self-hosted $0 models (off by default).
- `maxInputPerMillion` (number): Only models at or below this input price per 1M tokens.
- `provider` (string): Filter to a single provider.
- `tier` (string): Filter to a single tier.

Output parameters:

- `asOf` (string)
- `catalogVersion` (string)
- `count` (number)
- `models` (array)
- `source` (string)

### `get_pricing` (~103 tokens)

List models / pricing

Return the model catalog with pricing, optionally filtered. capabilities are arrays. Offline.

Input parameters:

- `capability` (string): Require a capability.
- `includeLocal` (boolean): Include local / self-hosted $0 models (off by default).
- `maxInputPerMillion` (number): Only models at or below this input price per 1M tokens.
- `provider` (string): Filter to a single provider.
- `tier` (string): Filter to a single tier.

Output parameters:

- `asOf` (string)
- `catalogVersion` (string)
- `count` (number)
- `models` (array)
- `source` (string)

### `optimize_request` (~172 tokens)

Optimize request

Check whether a cheaper capable model exists for a call you plan to make, and report the savings. Offline.

Input parameters:

- `crossProvider` (boolean): Consider other providers too (may need a different API key). Default false.
- `currentModel` (string, required): The model you plan to call (alias or id).
- `includeLocal` (boolean)
- `inputTokens` (integer, required): Input tokens for the call.
- `outputTokens` (integer, required): Output tokens for the call.
- `providers` (array): Axis 1: provider availability allowlist (spec 5.4).
- `target` (string): Axis 2: "self" (default) applies the client scope; "code" considers all providers.
- `taskClass` (string): Task class; sets the tier the recommendation must still meet.

Output parameters:

- `alreadyOptimal` (boolean)
- `asOf` (string)
- `catalogVersion` (string)
- `current`
- `providerScope` (array)
- `reasoning` (array)
- `recommended`
- `savingsPct` (number)
- `savingsUsd` (number)
- `scopeSource` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/sachinuppal-modelcostsaver/workswarm-modelcostsaver#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 65
- 2026-08-01: 5
- 2026-07-31: 25
- 2026-07-30: 33
- 2026-07-28: 51
- 2026-07-27: 51

## Links

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