# io.github.solsolettidev/nats-trail (npm · @nats-trail/mcp)

Read-only NATS and JetStream observability: trace a request across streams, rank what is broken.

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

## Components

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

## Channel facts

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

- **Supply Chain Security**: 98/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.
  - 31 of 96 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to solsolettidev/nats-trail).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 36 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (fair).
  - Tool/resource definitions use about 1943 tokens (~69/item across 28 items; 28 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 85/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 54% 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 28 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 28 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.solsolettidev/nats-trail MCP server?

io.github.solsolettidev/nats-trail runs locally as an npm package, launched with npx -y @nats-trail/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 solsolettidev-nats-trail -- npx -y @nats-trail/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "solsolettidev-nats-trail": {
      "command": "npx",
      "args": [
        "-y",
        "@nats-trail/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "solsolettidev-nats-trail": {
      "command": "npx",
      "args": [
        "-y",
        "@nats-trail/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add solsolettidev-nats-trail -- npx -y @nats-trail/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add solsolettidev-nats-trail --command npx --arg -y --arg @nats-trail/mcp
```

### Hermes

```yaml
mcp_servers:
  solsolettidev-nats-trail:
    command: "npx"
    args: ["-y", "@nats-trail/mcp"]
```

### Netclaw

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

### Vellum

```bash
assistant mcp add solsolettidev-nats-trail -t stdio -c npx -a -y @nats-trail/mcp
```

### Other

```json
{
  "mcpServers": {
    "solsolettidev-nats-trail": {
      "command": "npx",
      "args": [
        "-y",
        "@nats-trail/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-21 (score 91, +1)

- [security] Stability: 0.97 → pass

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

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

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

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

### 2026-09-15 (score 88, −3)

- [functional] Stability: pass → 0.80

### 2026-09-14 (score 91, +1)

- [security] Stability: 0.97 → pass

### 2026-09-12 (score 90, +1)

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

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

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

### 2026-09-07 (score 88, +1)

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

## MCP tools (28)

### `natstrail.list_contexts` (~29 tokens)

List sanitized configured contexts.

Input parameters:

- `limit` (integer, required): Required maximum number of results.

### `natstrail.get_connection_status` (~31 tokens)

Get the current bridge connection state.

Input parameters:

- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_audit` (~31 tokens)

List recent Integration API audit entries.

Input parameters:

- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_filters` (~28 tokens)

List saved reusable filters.

Input parameters:

- `limit` (integer, required): Required maximum number of results.

### `natstrail.run_filter` (~81 tokens)

Run a saved filter by id or name.

Input parameters:

- `contextId` (string, required)
- `cursor` (string): Resume cursor from a previous nextCursor.
- `filter` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).

### `natstrail.list_streams` (~40 tokens)

List JetStream streams for a context.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.get_stream_info` (~44 tokens)

Get one stream summary.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `stream` (string, required)

### `natstrail.list_consumers` (~45 tokens)

List consumers for a stream.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `stream` (string, required)

### `natstrail.search_messages` (~137 tokens)

Search bounded NATS/JetStream messages.

Input parameters:

- `contextId` (string, required)
- `correlationId` (string)
- `cursor` (string): Resume cursor from a previous nextCursor.
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `requestId` (string)
- `stream` (string, required)
- `subject` (string)
- `text` (string)
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.trace_by_key` (~134 tokens)

Trace messages by any configured correlation key. Prefer this over the request_id and correlation_id shortcuts: which identifiers exist is configuration, not a fixed list.

Input parameters:

- `contextId` (string, required)
- `fromTs` (integer): Window start in epoch milliseconds.
- `key` (string, required): Name of a configured correlation key, e.g. trace_id.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `toTs` (integer): Window end in epoch milliseconds.
- `value` (string, required)

### `natstrail.list_correlation_keys` (~48 tokens)

List the correlation keys in force for a context and where they came from.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.suggest_correlation_keys` (~101 tokens)

Propose correlation keys from real traffic: fields that are near-unique per message and appear on more than one subject.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `sample` (integer): Messages to sample per subject (default 20).
- `stream` (string)

### `natstrail.trace_by_request_id` (~93 tokens)

Trace messages by request_id.

Input parameters:

- `contextId` (string, required)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `requestId` (string, required)
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.trace_by_correlation_id` (~94 tokens)

Trace messages by correlation_id.

Input parameters:

- `contextId` (string, required)
- `correlationId` (string, required)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.search_dlq` (~90 tokens)

Search dead-letter messages.

Input parameters:

- `contextId` (string, required)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `subject` (string)
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.enrich_sentry` (~107 tokens)

Collect trace and DLQ context for a Sentry issue.

Input parameters:

- `contextId` (string, required)
- `correlationId` (string)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `requestId` (string)
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.get_message_detail` (~54 tokens)

Get a single message detail by locator.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `seq` (integer, required)
- `stream` (string, required)

### `natstrail.list_kv_buckets` (~42 tokens)

List JetStream Key/Value buckets.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_kv_keys` (~51 tokens)

List live keys and current values in a KV bucket.

Input parameters:

- `bucket` (string, required)
- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.get_kv_history` (~59 tokens)

Get the revision history of one KV key, including deletes.

Input parameters:

- `bucket` (string, required)
- `contextId` (string, required)
- `key` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_object_buckets` (~40 tokens)

List JetStream Object Store buckets.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_objects` (~47 tokens)

List object metadata in an Object Store bucket.

Input parameters:

- `bucket` (string, required)
- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.get_server_health` (~45 tokens)

Server version, uptime, traffic, memory and JetStream totals.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.list_server_connections` (~41 tokens)

List client connections with traffic and idle time.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

### `natstrail.discover_subjects` (~108 tokens)

Discover which subjects carry traffic and what shape their payloads have. Use this first when the topology is unknown.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `sample` (integer): Messages to sample per subject for shape inference (default 10).
- `stream` (string)
- `subject` (string)

### `natstrail.reconstruct_flow` (~120 tokens)

Reconstruct the causal chain for one request_id or correlation_id: ordered steps, elapsed time between them, and which step failed.

Input parameters:

- `contextId` (string, required)
- `correlationId` (string)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `requestId` (string)
- `toTs` (integer): Window end in epoch milliseconds.

### `natstrail.enrich_incident` (~146 tokens)

Flat, destination-agnostic context for one incident: the reconstructed flow, related dead letters, current health findings and a one-sentence summary.

Input parameters:

- `contextId` (string, required)
- `correlationId` (string)
- `fromTs` (integer): Window start in epoch milliseconds.
- `limit` (integer, required): Required maximum number of results.
- `maxScan` (integer): Maximum messages scanned before returning a cursor (default 10000).
- `requestId` (string)
- `toTs` (integer): Window end in epoch milliseconds.
- `uiBaseUrl` (string): Base URL used to build a deep link back into the Trace tab.

### `natstrail.get_health_summary` (~57 tokens)

What looks broken right now: consumers falling behind, redeliveries, dead letters and slow consumers, ranked worst first.

Input parameters:

- `contextId` (string, required)
- `limit` (integer, required): Required maximum number of results.

## Diagnostics

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

## Score history

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

## Common questions

### What is the io.github.solsolettidev/nats-trail MCP server?

io.github.solsolettidev/nats-trail is an MCP server listed in the public MCP registry as io.github.solsolettidev/nats-trail. Read-only NATS and JetStream observability: trace a request across streams, rank what is broken. This page covers its npm package (@nats-trail/mcp).

### Is the io.github.solsolettidev/nats-trail MCP server safe to use?

io.github.solsolettidev/nats-trail 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.solsolettidev/nats-trail MCP server expose?

io.github.solsolettidev/nats-trail exposes 28 tools: natstrail.list_contexts, natstrail.get_connection_status, natstrail.list_audit, natstrail.list_filters, natstrail.run_filter, and 23 more. Their descriptions and schemas cost roughly 1,943 tokens of context every time the server is loaded.

### Is the io.github.solsolettidev/nats-trail MCP server still maintained?

io.github.solsolettidev/nats-trail 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.solsolettidev/nats-trail MCP server under?

io.github.solsolettidev/nats-trail declares the Apache-2.0 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/@nats-trail/mcp
- Socket report: https://socket.dev/npm/package/@nats-trail/mcp
- Repository: https://github.com/solsolettidev/nats-trail
- Changelog RSS feed: https://verifymcp.io/servers/solsolettidev-nats-trail/nats-trail-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/solsolettidev-nats-trail/nats-trail-mcp.json
- HTML version of this page: https://verifymcp.io/servers/solsolettidev-nats-trail/nats-trail-mcp
