# io.github.veldica/publishready (npm · @veldica/publishready-mcp)

PublishReady: Deterministic writing control with local-first metrics and AI prose audits.

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

## Components

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

## Channel facts

- Registry: `npm`
- Package: `@veldica/publishready-mcp`
- Version: `1.0.5`
- 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**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (105 of 106), 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 (105 of 106), 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 veldica/publishready-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 96 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 82/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).
  - Tool/resource definitions use about 1344 tokens (~51/item across 26 items; 16 tools + 10 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 98% 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.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add veldica-publishready -- npx -y @veldica/publishready-mcp
```

### Codex

```bash
codex mcp add veldica-publishready -- npx -y @veldica/publishready-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add veldica-publishready --command npx --arg -y --arg @veldica/publishready-mcp
```

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "veldica-publishready": {
      "command": "npx",
      "args": [
        "-y",
        "@veldica/publishready-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-02 (score 77, +51)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: veldica/publishready-mcp
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Schema quality: unverified → good
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 26, +21)

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

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

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

### 2026-07-30 (score 8, −45)

- [security regression] Malware scan: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

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

First indexed and scored.

## MCP tools (16)

### `analyze_text` (~81 tokens)

Analyze Text

Return a deterministic writing analysis. MUST be used as the first step in most revision workflows to establish a baseline. After analysis, call suggest_revision_levers for optimization advice.

Input parameters:

- `options` (object): Optional flags for expanding the structured response.
- `text` (string, required): English prose or markdown-ish content to analyze. Blank input is accepted and returns zeroed metrics.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `analyze_against_targets` (~84 tokens)

Analyze Against Targets

Check text against an explicit target profile. Use this before rewriting. After producing a revision, call compare_text_versions with the same targets to verify movement.

Input parameters:

- `options` (object): Optional flags for expanding the structured response.
- `targets` (object, required): Numeric constraints to check against the analyzed text.
- `text` (string, required): English prose or markdown-ish content to evaluate.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `audit_ai_sounding_prose` (~135 tokens)

Audit AI-Sounding Prose

Run the Veldica AI marker inventory directly. Returns marker density, weighted score, style band, categories, exact matches, tracked phrases, and supporting writing metrics. Use this when text feels generic, over-polished, formulaic, or AI-like.

Input parameters:

- `include_formula_breakdown` (boolean): Include readability formula detail objects in the response.
- `include_matches` (boolean): Include individual marker matches with line/column positions.
- `text` (string, required): English prose or markdown-ish content to audit.
- `track_words` (array): Optional extra words or phrases to count alongside the built-in AI marker catalog.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `suggest_revision_levers` (~87 tokens)

Suggest Revision Levers

Rank deterministic revision levers. Use this before rewriting to identify high-impact changes. After revision, MUST call compare_text_versions to verify style improved without factual loss.

Input parameters:

- `options` (object): Optional ranking output flags.
- `targets` (object): Optional numeric targets that should influence lever ranking.
- `text` (string, required): English prose or markdown-ish content to analyze for ranked revision leverage.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `analyze_against_template` (~86 tokens)

Analyze Against Template

Check text against a built-in template. Use this before revising. After revision, call compare_text_versions with the same template_id to verify alignment.

Input parameters:

- `options` (object): Optional flags for expanding the structured response.
- `template_id` (string, required): ID of the built-in template to check against.
- `text` (string, required): English prose or markdown-ish content to evaluate.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `list_templates` (~85 tokens)

List Templates

Return a list of available writing templates with their metadata.

Input parameters:

- `audience` (string): Case-insensitive substring filter for template audience.
- `family` (string): Filter templates by family.
- `query` (string): Case-insensitive search across ID, name, description, audience, and use case.
- `use_case` (string): Case-insensitive substring filter for template use case.

Output parameters:

- `count` (integer)
- `templates` (array)

### `get_template` (~35 tokens)

Get Template

Return the full details of a specific template including its numeric targets.

Input parameters:

- `template_id` (string, required): ID of the template to retrieve.

Output parameters:

- `audience` (string)
- `description` (string)
- `family` (string)
- `hard_fails` (object): Target failures that should usually block publication for this profile.
- `id` (string)
- `name` (string)
- `revision_priorities` (array): Ordered deterministic levers to try first when the template does not fit.
- `signal_interpretations` (object): Template-specific explanations for the most important metrics.
- `soft_preferences` (object): Signals that shape the intended feel but may be traded off deliberately.
- `targets` (object): Nested numeric target profile for deterministic writing checks.
- `tradeoffs` (array): Known style tradeoffs users should consider before optimizing mechanically.
- `use_case` (string)

### `interpret_targets` (~37 tokens)

Interpret Targets

Explain the human implications, likely audience, and tradeoffs of a set of numeric targets.

Input parameters:

- `targets` (object, required): Numeric targets to interpret.

Output parameters:

- `coherence_warnings` (array)
- `implications` (array)
- `likely_audience` (array)
- `likely_use_cases` (array)
- `nearest_templates` (array)
- `style_implications` (array)
- `tradeoffs` (array)

### `summarize_writing_profile` (~34 tokens)

Summarize Writing Profile

Generate a fingerprint profile from a text sample.

Input parameters:

- `text` (string, required): English prose to summarize into a writing profile.

Output parameters:

- `nearest_templates` (array)
- `notable_traits` (object)
- `profile` (object)
- `summary` (string)

### `build_reference_profile` (~51 tokens)

Build Reference Profile

Generate a Fingerprint Profile from one or more high-quality reference texts.

Input parameters:

- `profile_name` (string): Optional name for the reference profile.
- `texts` (array, required): One or more reference texts to aggregate.

Output parameters:

- `consensus_grade` (number)
- `counts` (object)
- `fiction_metrics` (object)
- `lexical_metrics` (object)
- `name` (string)
- `paragraph_metrics` (object)
- `profile_id` (string)
- `readability_band` (string)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `source_count` (integer)
- `source_sha256` (string)
- `summary` (string)
- `timestamp` (string): Stable content-derived timestamp used to keep profile outputs deterministic.

### `compare_to_reference` (~59 tokens)

Compare to Reference

Compare current text against a specific Fingerprint Profile.

Input parameters:

- `candidate_text` (string, required): The text to evaluate.
- `reference_profile` (object): Previously built reference profile to compare against.
- `reference_text` (string): Reference text to compare against.

Output parameters:

- `alignment_score` (number)
- `candidate_summary` (string)
- `largest_differences` (array)
- `metrics` (object)
- `recommended_next` (object)
- `reference_name` (string)
- `reference_summary` (string)
- `reference_targets` (object): Nested numeric target profile for deterministic writing checks.
- `revision_levers` (array)
- `strongest_similarities` (array)

### `compare_profiles` (~42 tokens)

Compare Profiles

Compare two writing profiles, explicit target profiles, or templates.

Input parameters:

- `profile_a` (required): First profile or template ID.
- `profile_b` (required): Second profile or template ID.

Output parameters:

- `alignment_score` (number)
- `largest_differences` (array)
- `profile_a_name` (string|null)
- `profile_b_name` (string|null)
- `strongest_similarities` (array)

### `find_reference_drift` (~63 tokens)

Find Reference Drift

Detect if current writing samples are drifting away from a reference profile.

Input parameters:

- `candidate_text` (string, required): The text to evaluate for drift.
- `reference_profile` (object): Reference profile to compare against.
- `reference_text` (string): Reference text to compare against.

Output parameters:

- `alignment_score` (number)
- `changing_traits` (array)
- `drift_detected` (boolean)
- `drift_points` (array)
- `impact_areas` (array)
- `recommended_next` (object)
- `reference_targets` (object): Nested numeric target profile for deterministic writing checks.
- `stable_traits` (array)
- `summary` (string)

### `compare_text_versions` (~128 tokens)

Compare Text Versions

Compare original and revised drafts. MUST be called after any revision to verify mechanical improvement and factual integrity. It returns a 'quality_gate' which acts as a final decision object.

Input parameters:

- `original_text` (string, required): The original draft.
- `reference_profile` (object): Optional reusable reference profile to compare both versions against.
- `reference_text` (string): Optional reference sample to compare both versions against.
- `revised_text` (string, required): The revised draft.
- `targets` (object): Optional numeric target profile to compare movement against.
- `template_id` (string): Optional template to check improvement against.

Output parameters:

- `comparison` (object)
- `content_integrity` (object)
- `improvements` (array)
- `metrics_delta` (object)
- `movement` (string)
- `quality_gate` (object)
- `recommended_next` (object)
- `reference_alignment`
- `regressions` (array)
- `stable_traits` (array)
- `summary` (string)
- `target_fit`
- `template_fit`

### `find_hotspots` (~74 tokens)

Find Hotspots

Locate specific sentences or paragraphs for surgical revision. Each hotspot includes a 'hotspot_id' and 'revision_instruction'. After editing, MUST call compare_text_versions to verify the fix.

Input parameters:

- `template_id` (string): Optional template to influence hotspot detection.
- `text` (string, required): Text to analyze for structural or lexical hotspots.

Output parameters:

- `ai_analysis` (object)
- `consensus_grade` (number)
- `consensus_sources` (array)
- `counts` (object)
- `details` (object)
- `excluded_formulas` (array)
- `fiction_metrics` (object)
- `fit` (object)
- `formulas` (array)
- `interpretations` (object)
- `lexical_metrics` (object)
- `metadata` (object)
- `paragraph_metrics` (object)
- `readability_band` (string)
- `recommended_next` (object)
- `revision_levers` (array)
- `scannability_metrics` (object)
- `sentence_metrics` (object)
- `summary`
- `targets`: Nested numeric target profile for deterministic writing checks.
- `template_info` (object)
- `violations` (array)
- `word_tracking_metrics` (object)

### `plan_revision_workflow` (~92 tokens)

Plan Revision Workflow

Generate a step-by-step tool-call sequence for a specific revision task (e.g., fact-preserving revision, template alignment). Use this when you are unsure which tool to call next.

Input parameters:

- `reference_text` (string): Reference text for reference_match.
- `task` (string, required)
- `template_id` (string): Template ID for template_revision.
- `text` (string, required): The text to be revised.

Output parameters:

- `acceptance_gate` (object)
- `initial_tool` (string)
- `reason` (string)
- `steps` (array)

## Diagnostics

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

## Score history

- 2026-08-03: 77
- 2026-08-02: 77
- 2026-08-01: 26
- 2026-07-31: 5
- 2026-07-30: 8
- 2026-07-28: 53
- 2026-07-27: 53

## Links

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