# io.github.michal-niedzwiedzki/visimark (npm · visimark-mcp)

MCP server for VisiMark, a document integrity layer for Markdown: checks numbers against formulas.

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

## Components

- npm · `visimark-mcp`: 96/100 (this document), [markdown](https://verifymcp.io/servers/michal-niedzwiedzki-visimark/visimark-mcp.md), [page](https://verifymcp.io/servers/michal-niedzwiedzki-visimark/visimark-mcp)

## Channel facts

- Registry: `npm`
- Package: `visimark-mcp`
- Version: `0.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-11-04.

- **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 2 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to michal-niedzwiedzki/visimark).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 18 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1234 tokens (~94/item across 13 items; 8 tools + 5 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**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "visimark_eval" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 10 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.michal-niedzwiedzki/visimark MCP server?

io.github.michal-niedzwiedzki/visimark runs locally as an npm package, launched with npx -y visimark-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 michal-niedzwiedzki-visimark -- npx -y visimark-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "michal-niedzwiedzki-visimark": {
      "command": "npx",
      "args": [
        "-y",
        "visimark-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "michal-niedzwiedzki-visimark": {
      "command": "npx",
      "args": [
        "-y",
        "visimark-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add michal-niedzwiedzki-visimark -- npx -y visimark-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add michal-niedzwiedzki-visimark --command npx --arg -y --arg visimark-mcp
```

### Hermes

```yaml
mcp_servers:
  michal-niedzwiedzki-visimark:
    command: "npx"
    args: ["-y", "visimark-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "michal-niedzwiedzki-visimark": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "visimark-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add michal-niedzwiedzki-visimark -t stdio -c npx -a -y visimark-mcp
```

### Other

```json
{
  "mcpServers": {
    "michal-niedzwiedzki-visimark": {
      "command": "npx",
      "args": [
        "-y",
        "visimark-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-10-28 (score 96, 0)

- [security] Stability: 0.97 → pass

### 2026-10-27 (score 96, +1)

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

### 2026-10-25 (score 95, +1)

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

### 2026-10-23 (score 94, +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-10-21 (score 93, +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.

### 2026-10-18 (score 92, +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-10-17 (score 91, 0)

- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.60 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional] Package version: 0.4.0 → 0.4.1

### 2026-10-16 (score 91, +1)

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

## MCP tools (8)

### `visimark_ref` (~77 tokens)

VisiMark function reference

Look up VisiMark's builtin functions: signature, arity, precision, errors and examples. Give `name` to look it up, or omit `name` for the whole reference. Reads no file.

Input parameters:

- `name` (string): A builtin's name, e.g. `SUM`. Omit for the whole reference.

### `visimark_check` (~119 tokens)

Check a VisiMark document

Verify that every computed number in a Markdown document still agrees with the formula that produced it, and report what does not. Findings are a successful result, not an error. A document given as `content` has no directory, so imports and generated artifacts cannot be verified; `skipped` names the ones that were not checked.

Input parameters:

- `content` (string): The document as text, for a draft that is not on disk. Give this or `path`, never both.
- `path` (string): Path to a Markdown document on disk.

### `visimark_explain` (~102 tokens)

Explain a VisiMark document's structure

Describe what a document declares: its sheets, input columns, computed rules, anchored scalars, derived precision and imports. Give `sheet` to narrow it.

Input parameters:

- `content` (string): The document as text, for a draft that is not on disk. Give this or `path`, never both.
- `path` (string): Path to a Markdown document on disk.
- `sheet` (string): A sheet id, without the leading `#`.

### `visimark_eval` (~167 tokens)

Evaluate a VisiMark document

Evaluate a document and return its values, its assertions and its charts. Give `get` to select a single named value. Give `scenarioPath` or `scenarioContent` to substitute parameters and see what moves — a draft scenario against a draft document, with no temp file. A false assertion is a successful result reporting problems.

Input parameters:

- `content` (string): The document as text, for a draft that is not on disk. Give this or `path`, never both.
- `get` (string): One value's qualified name, e.g. `lines.gross_total`.
- `path` (string): Path to a Markdown document on disk.
- `scenarioContent` (string): A scenario as JSON text.
- `scenarioPath` (string): Path to a scenario JSON file.

### `visimark_infer` (~110 tokens)

Propose VisiMark rules for a plain table

Derive the formulas an existing Markdown table already obeys, and propose them as `vmark` rules. Run this before hand-authoring rules for a document that already has its numbers. Returns proposals only and never writes; `visimark_infer_apply` writes them.

Input parameters:

- `content` (string): The document as text, for a draft that is not on disk. Give this or `path`, never both.
- `path` (string): Path to a Markdown document on disk.

### `visimark_fmt` (~163 tokens)

Plan a VisiMark repair

Plan the edits that would bring a document's stored numbers back into agreement with its formulas, and name the generated artifacts it would write. Nothing is written: pass the returned plan to `visimark_fmt_apply` to land it. It repairs stale computed values, anchors and generated artifacts, and nothing else — never prose, never a column with no rule, never any other finding class. A document given as `content` has no directory, so imports and generated artifacts cannot be verified; `skipped` names the ones that were not checked.

Input parameters:

- `content` (string): The document as text, for a draft that is not on disk. Give this or `path`, never both.
- `path` (string): Path to a Markdown document on disk.

### `visimark_fmt_apply` (~117 tokens)

Apply a VisiMark repair

Land the plan `visimark_fmt` returned: splice the document's computed cells and anchors, and write the generated artifacts it named. Refused if the document changed since the plan was computed, and refused entirely unless the operator started the server with `--allow-write` and the host declared a root.

Input parameters:

- `path` (string, required): The document to write. There is nothing to apply to a string.
- `plan` (object, required): The result of `visimark_fmt`, unedited apart from dropping entries you rejected.

### `visimark_infer_apply` (~121 tokens)

Apply proposed VisiMark rules

Insert the `vmark` rules `visimark_infer` proposed. Pass the plan you were given, with any proposal you rejected removed. Refused if the document changed since the plan was computed, and refused entirely unless the operator started the server with `--allow-write` and the host declared a root.

Input parameters:

- `path` (string, required): The document to write. There is nothing to apply to a string.
- `plan` (object, required): The result of `visimark_infer`, unedited apart from dropping entries you rejected.

## Diagnostics

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

## Score history

- 2026-11-04: 96
- 2026-11-03: 96
- 2026-11-02: 96
- 2026-11-01: 96
- 2026-10-31: 96
- 2026-10-30: 96
- 2026-10-29: 96
- 2026-10-28: 96
- 2026-10-27: 96
- 2026-10-26: 95
- 2026-10-25: 95
- 2026-10-24: 94
- 2026-10-23: 94
- 2026-10-22: 93
- 2026-10-21: 93
- 2026-10-20: 92
- 2026-10-19: 92
- 2026-10-18: 92
- 2026-10-17: 91
- 2026-10-16: 91
- 2026-10-15: 90
- 2026-10-14: 84
- 2026-10-13: 83
- 2026-10-12: 83
- 2026-10-06: 80
- 2026-10-04: 84
- 2026-10-03: 84
- 2026-10-02: 83
- 2026-10-01: 83
- 2026-09-30: 82

## Common questions

### What is the io.github.michal-niedzwiedzki/visimark MCP server?

io.github.michal-niedzwiedzki/visimark is an MCP server listed in the public MCP registry as io.github.michal-niedzwiedzki/visimark. MCP server for VisiMark, a document integrity layer for Markdown: checks numbers against formulas. This page covers its npm package (visimark-mcp).

### Is the io.github.michal-niedzwiedzki/visimark MCP server safe to use?

io.github.michal-niedzwiedzki/visimark scores 96 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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.michal-niedzwiedzki/visimark MCP server expose?

io.github.michal-niedzwiedzki/visimark exposes 8 tools: visimark_ref, visimark_check, visimark_explain, visimark_eval, visimark_infer, and 3 more. Their descriptions and schemas cost roughly 976 tokens of context every time the server is loaded.

### Is the io.github.michal-niedzwiedzki/visimark MCP server still maintained?

io.github.michal-niedzwiedzki/visimark is still listed as active in the MCP registry. We last reached this channel on 4 November 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.michal-niedzwiedzki/visimark MCP server under?

io.github.michal-niedzwiedzki/visimark 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/visimark-mcp
- Socket report: https://socket.dev/npm/package/visimark-mcp
- Repository: https://github.com/michal-niedzwiedzki/visimark
- Changelog RSS feed: https://verifymcp.io/servers/michal-niedzwiedzki-visimark/visimark-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/michal-niedzwiedzki-visimark/visimark-mcp.json
- HTML version of this page: https://verifymcp.io/servers/michal-niedzwiedzki-visimark/visimark-mcp
