# Textavia MCP (npm · @textavia/mcp)

Local-first MCP server for text, JSON, Base64, CSV, regex, and developer utilities.

- Trust score: 54/100 (low)
- Change this week: +36
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

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

## Channel facts

- Registry: `npm`
- Package: `@textavia/mcp`
- Version: `0.1.2`
- 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-04.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (131 of 135), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 17 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 43/100
  - AI-judged instruction clarity (poor).
  - Tool/resource definitions use about 7411 tokens (~45/item across 163 items; 163 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add catorch-textavia-mcp -- npx -y @textavia/mcp
```

### Codex

```bash
codex mcp add catorch-textavia-mcp -- npx -y @textavia/mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add catorch-textavia-mcp --command npx --arg -y --arg @textavia/mcp
```

### Hermes

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

### Other

```json
{
  "mcpServers": {
    "catorch-textavia-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@textavia/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-04 (score 54, +3)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [functional improvement] Stability: unverified → 0.30

### 2026-08-02 (score 51, +38)

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

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

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified

### 2026-07-31 (score 18, −1)

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

### 2026-07-30 (score 19, +1)

- [functional improvement] Dependency health: unverified → partial

### 2026-07-28 (score 18, −17)

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

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

First indexed and scored.

## MCP tools (163)

### `textavia.case_alternating` (~47 tokens)

case.alternating

Alternate letter case. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_camel` (~47 tokens)

case.camel

Convert to camelCase. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_capitalized` (~53 tokens)

case.capitalized

Capitalize the first character, keep the rest. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_dot` (~46 tokens)

case.dot

Convert to dot.case. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_inverse` (~49 tokens)

case.inverse

Invert the case of every letter. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_kebab` (~48 tokens)

case.kebab

Convert to kebab-case. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_lower` (~46 tokens)

case.lower

Convert text to lowercase. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_pascal` (~47 tokens)

case.pascal

Convert to PascalCase. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_screaming_snake` (~55 tokens)

case.screaming-snake

Convert to SCREAMING_SNAKE_CASE. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_sentence` (~48 tokens)

case.sentence

Capitalize the first character only. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_slug` (~47 tokens)

case.slug

Convert to a URL slug. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_snake` (~47 tokens)

case.snake

Convert to snake_case. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_title` (~50 tokens)

case.title

Capitalize the first letter of each word. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.case_upper` (~46 tokens)

case.upper

Convert text to uppercase. Supports stdin, positional text, and file input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_caesar` (~49 tokens)

cipher.caesar

Shifts A-Z letters by --shift positions. Default shift is 3.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_morse_decode` (~43 tokens)

cipher.morse.decode

Decodes Morse words separated by slash characters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_morse_encode` (~43 tokens)

cipher.morse.encode

Encodes alphanumeric text to Morse code.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_nato_decode` (~43 tokens)

cipher.nato.decode

Converts NATO phonetic words back to letters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_nato_encode` (~44 tokens)

cipher.nato.encode

Converts A-Z letters to NATO phonetic words.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cipher_rot13` (~41 tokens)

cipher.rot13

Applies the reversible ROT13 substitution cipher.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_clean` (~48 tokens)

data.csv.clean

Parses CSV, trims every cell, drops fully empty rows, and writes deterministic CSV.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_dedupe` (~43 tokens)

data.csv.dedupe

Removes duplicate CSV rows while preserving the first occurrence.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_select` (~44 tokens)

data.csv.select

Selects columns by header name from a simple delimited table.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_sort` (~45 tokens)

data.csv.sort

Sorts CSV rows by a header column, preserving the header row.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_to_json` (~48 tokens)

data.csv.to-json

Converts a CSV file with a unique header row into an array of JSON objects.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_to_markdown_table` (~52 tokens)

data.csv.to-markdown-table

Converts CSV rows into a GitHub-flavored Markdown table using the first row as headers.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_to_tsv` (~45 tokens)

data.csv.to-tsv

Converts simple delimited rows from comma-separated to tab-separated.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.csv_validate` (~46 tokens)

data.csv.validate

Checks whether every CSV row has the same column count for a simple delimiter.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.html_escape` (~51 tokens)

data.html.escape

Escapes ampersands, angle brackets, quotes, and apostrophes for HTML text nodes.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.html_strip` (~43 tokens)

data.html.strip

Removes HTML tags and script/style blocks while preserving text content.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.html_to_markdown` (~47 tokens)

data.html.to-markdown

Converts common HTML block and inline tags to Markdown and strips unsupported tags.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.html_unescape` (~45 tokens)

data.html.unescape

Unescapes the named entities emitted by Textavia HTML escape.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_to_csv` (~47 tokens)

data.json.to-csv

Converts a JSON object or array of objects to deterministic CSV with stable headers.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_to_markdown_table` (~51 tokens)

data.json.to-markdown-table

Converts a JSON object or array of objects to a GitHub-flavored Markdown table.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_to_yaml` (~45 tokens)

data.json.to-yaml

Serializes JSON-compatible data to Textavia’s deterministic YAML subset.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.markdown_strip` (~41 tokens)

data.markdown.strip

Removes common Markdown markup while preserving readable text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.markdown_table_create` (~49 tokens)

data.markdown.table-create

Creates a GitHub-flavored Markdown table from JSON object rows or CSV rows.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.markdown_table_to_csv` (~47 tokens)

data.markdown.table-to-csv

Parses a GitHub-flavored Markdown table and emits deterministic CSV.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.markdown_table_to_json` (~50 tokens)

data.markdown.table-to-json

Parses a GitHub-flavored Markdown table and emits JSON objects keyed by header.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.markdown_to_html` (~44 tokens)

data.markdown.to-html

Converts a conservative Markdown subset to HTML without network access.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.toml_format` (~45 tokens)

data.toml.format

Parses simple TOML and re-emits keys in sorted order.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.toml_to_json` (~42 tokens)

data.toml.to-json

Converts simple key/value TOML to JSON.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.toml_to_yaml` (~44 tokens)

data.toml.to-yaml

Converts simple TOML to a JSON-compatible YAML subset.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.toml_validate` (~46 tokens)

data.toml.validate

Validates simple key/value TOML used by Textavia conversion tools.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.xml_format` (~47 tokens)

data.xml.format

Tokenizes XML tags and text, then writes a consistently indented XML document.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.xml_to_json` (~46 tokens)

data.xml.to-json

Converts XML elements, text, and attributes to a deterministic JSON object.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.xml_validate` (~44 tokens)

data.xml.validate

Checks whether XML-like input has balanced tags using a conservative scanner.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.yaml_format` (~44 tokens)

data.yaml.format

Parses the built-in YAML subset and re-emits deterministic YAML.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.yaml_to_json` (~45 tokens)

data.yaml.to-json

Parses Textavia’s deterministic YAML subset and returns JSON-compatible data.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.yaml_to_toml` (~45 tokens)

data.yaml.to-toml

Converts the built-in YAML subset to simple TOML.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.yaml_validate` (~44 tokens)

data.yaml.validate

Validates YAML accepted by the built-in YAML to JSON converter.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.color_contrast` (~52 tokens)

dev.color.contrast

Accepts two hex colors and reports contrast ratio plus WCAG AA/AAA pass booleans.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.color_convert` (~46 tokens)

dev.color.convert

Converts a 6-digit hex color to RGB and CSS rgb() output.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cron_explain` (~45 tokens)

dev.cron.explain

Explains standard five-field cron expressions using UTC field ranges.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.cron_next` (~45 tokens)

dev.cron.next

Computes upcoming UTC run times for a standard five-field cron expression.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_file` (~50 tokens)

dev.hash.file

Convenience wrapper around the hash tools. Defaults to SHA256 and reads files byte-safely.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_md5` (~49 tokens)

dev.hash.md5

Hashes text, stdin, or a streaming file to a MD5 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_sha1` (~49 tokens)

dev.hash.sha1

Hashes text, stdin, or a streaming file to a SHA1 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_sha224` (~49 tokens)

dev.hash.sha224

Hashes text, stdin, or a streaming file to a SHA224 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_sha256` (~49 tokens)

dev.hash.sha256

Hashes text, stdin, or a streaming file to a SHA256 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_sha384` (~49 tokens)

dev.hash.sha384

Hashes text, stdin, or a streaming file to a SHA384 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hash_sha512` (~49 tokens)

dev.hash.sha512

Hashes text, stdin, or a streaming file to a SHA512 hex digest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_format` (~47 tokens)

dev.json.format

Parses and reformats JSON with configurable indentation. Supports --write and --backup.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_minify` (~43 tokens)

dev.json.minify

Parses and re-emits compact JSON with no whitespace.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_query` (~47 tokens)

dev.json.query

Queries a JSON value with a simple dot path. Arrays use numeric path segments.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_repair` (~43 tokens)

dev.json.repair

Attempts conservative repairs such as removing trailing commas before parsing.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_sort_keys` (~45 tokens)

dev.json.sort-keys

Parses JSON and re-emits it with recursively sorted object keys.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_stringify` (~41 tokens)

dev.json.stringify

Converts raw text into a JSON string literal.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_to_toml` (~48 tokens)

dev.json.to-toml

Converts a flat JSON object with scalar or array values to TOML.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_to_types` (~44 tokens)

dev.json.to-types

Generates a basic TypeScript interface from a representative JSON object.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_unstringify` (~43 tokens)

dev.json.unstringify

Parses a JSON string literal and outputs raw text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.json_validate` (~43 tokens)

dev.json.validate

Reports whether JSON is valid and includes parse diagnostics on failure.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.jwt_decode` (~43 tokens)

dev.jwt.decode

Decodes JWT header and payload locally. Signature not verified.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.dev_qr` (~51 tokens)

dev.qr

Generates a standards-compliant QR code SVG for the input text. No network access is used.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.regex_explain` (~44 tokens)

dev.regex.explain

Provides a concise structural summary of a JavaScript regular expression.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.regex_test` (~49 tokens)

dev.regex.test

Evaluates a JavaScript regex in a worker thread so catastrophic backtracking can be terminated.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.timestamp_from_date` (~43 tokens)

dev.timestamp.from-date

Parses a date string and returns the Unix epoch value.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.timestamp_now` (~41 tokens)

dev.timestamp.now

Returns the current ISO time and Unix epoch value.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.timestamp_parse` (~47 tokens)

dev.timestamp.parse

Parses an ISO 8601 string or Unix number into ISO and Unix forms.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.timestamp_to_date` (~45 tokens)

dev.timestamp.to-date

Converts a Unix epoch value to an ISO and local date string.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.utm_build` (~58 tokens)

dev.utm.build

Adds utm_source, utm_medium, utm_campaign, utm_term, and utm_content to a base URL.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_basic_auth_decode` (~52 tokens)

encoding.base64.basic-auth-decode

Decodes a Basic base64 user:password value. Decoded only; not verified.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_css_data_uri` (~48 tokens)

encoding.base64.css-data-uri

Encodes text or file bytes as a data URL wrapped for CSS.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_data_url` (~53 tokens)

encoding.base64.data-url

Encodes bytes to a data URL or decodes a data URL to bytes (use --decode).

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_data_url_to_file` (~51 tokens)

encoding.base64.data-url-to-file

Returns decoded bytes from a data URL; use --out to write the file.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_decode` (~53 tokens)

encoding.base64.decode

Decodes a Base64 string to UTF-8 text by default, or raw bytes with --bytes.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_detect` (~44 tokens)

encoding.base64.detect

Uses a conservative local heuristic to detect Base64-looking text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_encode` (~54 tokens)

encoding.base64.encode

Encodes UTF-8 text or raw bytes to a Base64 string. File input is read as bytes.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_from_hex` (~42 tokens)

encoding.base64.from-hex

Converts a hexadecimal byte string to Base64.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_gzip_check` (~46 tokens)

encoding.base64.gzip-check

Decodes Base64 locally and checks for a gzip payload.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_gzip_decode` (~50 tokens)

encoding.base64.gzip-decode

Utility companion for gzip-check; decodes and gunzips Base64 input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_gzip_encode` (~47 tokens)

encoding.base64.gzip-encode

Compresses UTF-8 text with gzip and emits Base64.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_normalize` (~45 tokens)

encoding.base64.normalize

Normalizes whitespace, URL-safe alphabet variants, and padding.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_repair` (~52 tokens)

encoding.base64.repair

Repairs common copy/paste issues such as whitespace, missing padding, and URL-safe alphabet characters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_to_ascii` (~42 tokens)

encoding.base64.to-ascii

Decodes Base64 bytes using ASCII encoding.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_to_hex` (~44 tokens)

encoding.base64.to-hex

Decodes Base64 bytes and prints a hexadecimal string.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.base64_validate` (~43 tokens)

encoding.base64.validate

Reports whether the input is well-formed Base64.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.binary_decode` (~46 tokens)

encoding.binary.decode

Decodes whitespace-separated 8-bit binary groups into UTF-8 text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.binary_encode` (~47 tokens)

encoding.binary.encode

Encodes UTF-8 text or file bytes into 8-bit binary groups.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hex_decode` (~50 tokens)

encoding.hex.decode

Decodes a hex string to UTF-8 text by default, or bytes with --bytes.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.hex_encode` (~45 tokens)

encoding.hex.encode

Encodes UTF-8 text or file bytes to a hex string.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.roman_from_number` (~48 tokens)

encoding.roman.from-number

Converts integers from 1 to 3999 into canonical Roman numerals.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.roman_to_number` (~46 tokens)

encoding.roman.to-number

Parses canonical Roman numerals from I to MMMCMXCIX.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.url_decode` (~42 tokens)

encoding.url.decode

Decodes a URL-encoded component or full URL.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.url_encode` (~44 tokens)

encoding.url.encode

Encodes text for use in a URL component or full URL.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.utf8_decode` (~45 tokens)

encoding.utf8.decode

Decodes space-separated UTF-8 hex bytes into text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.utf8_encode` (~45 tokens)

encoding.utf8.encode

Encodes text to space-separated UTF-8 hex bytes.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_compare` (~55 tokens)

lines.compare

Compares --file (list A) against --other (list B) and reports items unique to each and shared.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_count` (~36 tokens)

lines.count

Reports the line count.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_duplicates` (~41 tokens)

lines.duplicates

Reports each duplicate line once. Requires full input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_intersect` (~48 tokens)

lines.intersect

Computes line intersection. Use --other or separate blocks with a line containing "---".

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_remove_duplicates` (~43 tokens)

lines.remove-duplicates

Alias for unique that removes duplicate lines, preserving order.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_remove_empty` (~40 tokens)

lines.remove-empty

Drops lines that are empty after trimming.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_reverse` (~40 tokens)

lines.reverse

Reverses the order of input lines.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_shuffle` (~39 tokens)

lines.shuffle

Randomly shuffles input lines locally.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_sort` (~46 tokens)

lines.sort

Sorts lines with optional direction, numeric, and case-insensitive flags.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_subtract` (~49 tokens)

lines.subtract

Computes A minus B. Use --other or separate blocks with a line containing "---".

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_trim` (~39 tokens)

lines.trim

Trims surrounding whitespace from each line.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_union` (~50 tokens)

lines.union

Computes a first-seen union. Use --other or separate blocks with a line containing "---".

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lines_unique` (~45 tokens)

lines.unique

Removes duplicate lines, preserving first-seen order. Requires full input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lorem_paragraphs` (~40 tokens)

lorem.paragraphs

Generates placeholder lorem ipsum paragraphs.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lorem_sentences` (~39 tokens)

lorem.sentences

Generates placeholder lorem ipsum sentences.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.lorem_words` (~38 tokens)

lorem.words

Generates placeholder lorem ipsum words.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.numbers_sort` (~42 tokens)

numbers.sort

Parses whitespace/comma-separated numbers and sorts them.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.numbers_stats` (~46 tokens)

numbers.stats

Reports count, min, max, sum, mean, and median.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_boolean` (~39 tokens)

random.boolean

Outputs true or false with equal probability.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_choice` (~44 tokens)

random.choice

Chooses one or more random non-empty lines from the input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_date` (~42 tokens)

random.date

Generates random ISO dates between --from and --to.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_float` (~40 tokens)

random.float

Alias-style float generator for decimal random values.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_integer` (~41 tokens)

random.integer

Generates random integers between --min and --max.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_ip` (~37 tokens)

random.ip

Generates random IPv4 addresses.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_letter` (~36 tokens)

random.letter

Generates random lowercase letters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_month` (~36 tokens)

random.month

Picks random month names.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_number` (~43 tokens)

random.number

Generates random floating point numbers between --min and --max.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_password` (~41 tokens)

random.password

Generates a secure password with configurable pools and length.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.random_uuid` (~45 tokens)

random.uuid

Generates RFC 4122 v4 UUIDs using node:crypto.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_alternating_case` (~44 tokens)

text.alternating-case

Alternates casing across letters in the input text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_capitalize` (~43 tokens)

text.capitalize

Capitalizes each word for a readable capitalized style.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_clean` (~44 tokens)

text.clean

Collapses runs of whitespace into single spaces and trims the result.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_diff` (~52 tokens)

text.diff

Reports added, removed, and unchanged lines. Use --other or separate blocks with a line containing "---".

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_duplicate_words` (~43 tokens)

text.duplicate-words

Reports case-insensitive words that appear more than once.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_frequency` (~41 tokens)

text.frequency

Produces a case-insensitive word frequency map.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_inverse_case` (~39 tokens)

text.inverse-case

Swaps uppercase and lowercase letters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_lower` (~45 tokens)

text.lower

Lowercases all characters. Supports stdin, positional text, and files.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_normalize_whitespace` (~46 tokens)

text.normalize-whitespace

Collapses repeated whitespace into single spaces and trims the result.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_plain` (~39 tokens)

text.plain

Removes markup tags and collapses whitespace.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_privacy_scrub` (~72 tokens)

text.privacy-scrub

Replaces emails, phone numbers, IPs, URLs, JWTs, basic auth, common API keys, and credit-card-like numbers with placeholders. Heuristic; review output before sharing.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_remove_chars` (~43 tokens)

text.remove-chars

Removes every character listed in --chars from the input.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_remove_formatting` (~47 tokens)

text.remove-formatting

Removes zero-width characters, BOM, and non-printable control characters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_remove_line_breaks` (~46 tokens)

text.remove-line-breaks

Converts multi-line text into a single line with normalized spacing.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_repeat` (~44 tokens)

text.repeat

Repeats the input --count times with an optional separator.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_replace` (~42 tokens)

text.replace

Replaces every occurrence of --search with --replacement.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_reverse` (~47 tokens)

text.reverse

Reverses text by grapheme cluster so emoji and combining marks are preserved.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_sentence_case` (~43 tokens)

text.sentence-case

Capitalizes the first character and lowercases the rest.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_sentence_count` (~42 tokens)

text.sentence-count

Counts sentences using the same heuristic as text stats.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_stats` (~41 tokens)

text.stats

Computes counts and byte size for the input text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_syllables` (~44 tokens)

text.syllables

Estimates syllable count using a heuristic vowel-group rule.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_title_case` (~38 tokens)

text.title-case

Title-cases the text.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.text_upper` (~36 tokens)

text.upper

Uppercases all characters.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.unicode_inspect` (~49 tokens)

unicode.inspect

Reports each code point with its value, hex, name, and combining status.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.unicode_normalize` (~51 tokens)

unicode.normalize

Normalizes text to NFC, NFD, NFKC, or NFKD.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.words_sort` (~42 tokens)

words.sort

Splits input into words and sorts them alphabetically.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

### `textavia.words_unique` (~45 tokens)

words.unique

Splits input into words and preserves the first occurrence of each word.

Input parameters:

- `file` (string)
- `input` (string)
- `options` (object)

## Diagnostics

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

## Score history

- 2026-08-04: 54
- 2026-08-03: 51
- 2026-08-02: 51
- 2026-08-01: 13
- 2026-07-31: 18
- 2026-07-30: 19
- 2026-07-28: 18
- 2026-07-27: 35

## Links

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