# io.github.Davmunrey/trazum (npm · @trazum/mcp)

Trazum as an MCP server: let an agent price and budget its own prompts before it sends them.

- Trust score: 91/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

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

## Channel facts

- Registry: `npm`
- Package: `@trazum/mcp`
- Version: `2.4.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-09-21.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 1 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Davmunrey/Trazum).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2042 tokens (~291/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.Davmunrey/trazum MCP server?

io.github.Davmunrey/trazum runs locally as an npm package, launched with npx -y @trazum/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add davmunrey-trazum -- npx -y @trazum/mcp
```

### Cursor

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

### VS Code

```json
{
  "servers": {
    "davmunrey-trazum": {
      "command": "npx",
      "args": [
        "-y",
        "@trazum/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add davmunrey-trazum -- npx -y @trazum/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add davmunrey-trazum --command npx --arg -y --arg @trazum/mcp
```

### Hermes

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

### Netclaw

```json
{
  "McpServers": {
    "davmunrey-trazum": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@trazum/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add davmunrey-trazum -t stdio -c npx -a -y @trazum/mcp
```

### Other

```json
{
  "mcpServers": {
    "davmunrey-trazum": {
      "command": "npx",
      "args": [
        "-y",
        "@trazum/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-09-20 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 90, +51)

- [security improvement] Injection markers: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.80
- [functional improvement] Dependency health: unverified → 1.00

### 2026-09-18 (score 39, −50)

- [security regression] Stability: 0.73 → unverified
- [security regression] Known CVEs: pass → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Dependency health: 1.00 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 2.4.0 → 2.4.1

### 2026-09-15 (score 89, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-13 (score 88, +38)

- [security improvement] Injection markers: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.60
- [functional improvement] MCP protocol: unverified → pass

### 2026-09-12 (score 50, −37)

- [security regression] Stability: 0.53 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] Package version: 2.3.0 → 2.4.0

### 2026-09-11 (score 87, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-09 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (7)

### `spend_guard` (~643 tokens)

May I spend this? — with the cheaper way if not

Call this before making a model call, when a budget exists and you do not know whether this call fits inside it. Answers yes, no, or cannot-tell. Where the numbers come from: the ceilings are in trazum.config.json in the working directory (spend.maxUsd, spend.monthlyUsd, the limits block), and the spend so far is in the usage log the host already writes. Read both yourself and pass the figures: this server never opens a file. Without a ceiling somebody set the answer is cannot-tell, never a yes nobody measured. A refusal carries the cheaper ways to make the same call (a smaller model the prompt still fits in, a batch window), each priced for this call and each naming what it assumes. The budget consumed is measured from real billed usage you pass in; the cost of your call is an estimate of something that has not happened, and the answer keeps the two apart and says which the verdict rests on. Nothing is called and nothing is spent to produce this answer.

Input parameters:

- `batchEligible` (boolean): Whether this work can wait for a batch window. Only you know that, so batch alternatives are offered only when you say so.
- `consumedUsd` (number): Measured spend so far, in dollars — from a bill, never a guess. Omit it and the answer is cannot-tell rather than a yes nobody measured.
- `inputTokens` (integer, required): Input tokens the call would send, including anything cached.
- `label` (string): The workload this call belongs to, for the per-label ceiling.
- `limitUsd` (number): The budget this is judged against. Omit it and the answer is cannot-tell: this tool reports a position against a policy a human set, and never invents one.
- `limits` (object): The limits policy from trazum.config.json — {"dayUsd": n, "sessionUsd": n, "byLabel": {"name": n}}, positive dollars. Judged by the same function the gateway and trazum serve use, so the three doors…
- `model` (string, required): Model id the call would go to. Call list_models for what is known.
- `outputTokens` (integer): Output tokens you expect back. Left at zero, the answer prices input only and says so by carrying the figure you gave.
- `position` (object): Measured spend per scope, from your own usage log — never a guess. A scope you omit is unmeasured and its ceiling answers cannot-tell, not "under".
- `session` (string): The conversation this call belongs to, for the per-session ceiling. Used to judge and never echoed back.
- `waive` (array): The waive list from trazum.config.json — [{"gate": "limits.sessionUsd", "reason": "...", "until": "YYYY-MM-DD"}]. A waived ceiling still reports its measurement, but a crossed one answers yes with th…

### `check_prompt` (~145 tokens)

Check a prompt against a token budget

Answers whether a prompt fits a maximum, and if not, whether optimising it would. maxTokens comes from the budgets block of trazum.config.json, matched against the prompt's path; read it yourself, since this server never opens a file. Without a budget somebody set there is nothing to check and this is not the tool to call. Offline and free: no model is called.

Input parameters:

- `level` (string): safe leaves meaning untouched; aggressive also rewords, and wants reading
- `maxTokens` (integer, required): The budget. Required: a check with no maximum is not a check.
- `prompt` (string, required): The prompt text itself. This server never reads files.

### `optimize_prompt` (~133 tokens)

Optimise a prompt and price the difference

Applies Trazum's deterministic rules to a prompt and returns the shorter text, the token counts either side, what the difference is worth per month, and any advisories. Offline and free: no model is called.

Input parameters:

- `avgOutputTokens` (integer)
- `callsPerMonth` (integer): Used only to scale the figures
- `level` (string): safe leaves meaning untouched; aggressive also rewords, and wants reading
- `model` (string): Model id used for pricing. Call list_models for what is known.
- `prompt` (string, required): The prompt text itself. This server never reads files.

### `profile_usage` (~555 tokens)

Where the money went, from a usage log

Reads a usage log — one JSON object per line, each with a "model" and the "usage" object the API returned — and says where the money went: the spend split, per label and per model, whether caching paid for itself, and which levers would actually move the bill. These are the provider's own billed token counts, not estimates. Pass the log text itself: this server never reads files. Add "label", "session" and "ts" fields to the records to unlock the per-workload findings, conversation growth, the period the log covers, and whether the cache TTL fits how fast the turns arrive; the session key is grouped by and never shown.

Input parameters:

- `label` (string): Profile only the calls carrying this label — the drill-down once the full report named a suspect. A label matching nothing is an error naming the labels that exist.
- `log` (string, required): The usage log text, one JSON object per line. Never a file path.
- `previous_log` (string): A previous usage log to compare against, as text — never a file path. Positive means the bill grew. Drivers of the change are named per label and per model, appeared and vanished workloads included;…
- `pricing_overlay` (string): The same JSON document a --pricing overlay file holds, passed as text — never a file path. Adds models the bundled catalogue does not know and overrides prices for ones it does; every figure in the r…
- `since` (string): Profile only calls at or after this moment: a UTC day (2026-08-14) or a full ISO 8601 timestamp. Calls with no "ts" cannot be placed and are excluded, counted out loud — never dropped silently.
- `until` (string): Profile only calls up to this moment; a bare date includes that whole UTC day. A window matching nothing is an error naming what the log does cover.
- `what_if` (string): Price these exact calls on another model id. The same token counts at a different rate card — multiplication, not advice: it says nothing about whether that model could do the work. Calls larger than…

### `position` (~216 tokens)

Where the month stands, measured — no forecast

States the month's measured position against every ceiling you pass: monthly budget, per-day limit, per-label limits. Measured from the log text alone, priced record by record, with the denominator on every figure — days measured against days elapsed. The distance line is division on the past, labelled as such, and absent under the seven-day floor, on an over, and on a zero rate: this tool never forecasts. Ceilings the log cannot measure are named with the reason instead of skipped. Pass the log text itself: this server never reads files, and session keys are never shown.

Input parameters:

- `limits` (object): The limits policy from trazum.config.json — {"dayUsd": n, "sessionUsd": n, "byLabel": {"name": n}}. Validated like the config file itself.
- `log` (string, required): The usage log text, one JSON object per line. Never a file path.
- `monthlyUsd` (number): The calendar-month budget, in dollars — spend.monthlyUsd from the config.

### `list_models` (~31 tokens)

Models Trazum can price, and their rates

Input and output price per million tokens, context window and cacheable minimum, for every model in the bundled catalogue.

### `prompt_writer` (~253 tokens)

Interviews you, then writes the prompt

Asks what a good prompt needs and assembles one from your answers. Call it with the answers you have; it returns the next question worth asking, what is still missing, and the prompt once the required answers are in. Nothing is generated — the questions are fixed and the words in the prompt are yours, so the same answers always produce the same text. An answer of null is a decline, which is an answer: it is recorded and the follow-up it would have opened is not asked. The draft carries what it costs (estimated, and it says so), whether it fits a budget you state, and what trazum optimize can still recover from it — which should be nothing. It does not claim the prompt is good: that is a judgement about text nobody has run.

Input parameters:

- `answers` (object, required): What you know so far, keyed by question id. Start with {} to be asked the first one. A value of null declines that question. Unknown ids are refused rather than ignored.
- `avgOutputTokens` (integer): Output tokens you expect back per call, for the same estimate.
- `callsPerMonth` (integer): Calls per month, for the cost estimate. Nothing is priced without it.

## Diagnostics

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

## Score history

- 2026-09-21: 91
- 2026-09-20: 91
- 2026-09-19: 90
- 2026-09-18: 39
- 2026-09-17: 89
- 2026-09-16: 89
- 2026-09-15: 89
- 2026-09-14: 88
- 2026-09-13: 88
- 2026-09-12: 50
- 2026-09-11: 87
- 2026-09-10: 86
- 2026-09-09: 86
- 2026-09-08: 85
- 2026-09-07: 85
- 2026-09-06: 84
- 2026-09-05: 84
- 2026-09-04: 83
- 2026-09-03: 83
- 2026-09-02: 82
- 2026-09-01: 82
- 2026-08-31: 39
- 2026-08-30: 81
- 2026-08-29: 81
- 2026-08-28: 80
- 2026-08-27: 80
- 2026-08-26: 79

## Common questions

### What is the io.github.Davmunrey/trazum MCP server?

io.github.Davmunrey/trazum is an MCP server listed in the public MCP registry as io.github.Davmunrey/trazum. Trazum as an MCP server: let an agent price and budget its own prompts before it sends them. This page covers its npm package (@trazum/mcp).

### Is the io.github.Davmunrey/trazum MCP server safe to use?

io.github.Davmunrey/trazum scores 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.Davmunrey/trazum MCP server expose?

io.github.Davmunrey/trazum exposes 7 tools: spend_guard, check_prompt, optimize_prompt, profile_usage, position, and 2 more. Their descriptions and schemas cost roughly 1,976 tokens of context every time the server is loaded.

### Is the io.github.Davmunrey/trazum MCP server still maintained?

io.github.Davmunrey/trazum is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.Davmunrey/trazum MCP server under?

io.github.Davmunrey/trazum declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

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