← MCP servers · manavmishra

ZeroSlop

CAUTIONgrade C · trust 79/100

Open-source Agent Skill that scores AI-sounding writing 0–100, edits it with your assistant.

agent skillsai editorai slopai writinganti slopclaude codeclaude skillcodex

Overview

From the repository's own README, as read at the audited commit.

<p align="center">  <a href="https://zero-slop.ai">    <picture>      <source media="(prefers-color-scheme: dark)" srcset="assets/logo/zero-slop-logo-reversed.svg">      <img src="assets/logo/zero-slop-logo-primary.svg" width="360" alt="Zero Slop">    </picture>  </a></p>      Zero Slop is installed about 1,600 times a week on npm.<p align="center"><strong>Find AI-sounding tells and slop in your writing.</strong></p><p align="center">  Zero Slop finds slop- stock phrasing, mechanical rhythm, vague claims, and canned formatting in writing.<br>  Your existing AI assistant edits the draft; local checks guard its names, numbers, links, quotations, code, tables, and paths.</p><p align="center">  <a href="https://zero-slop.ai/try/"><strong>Try it in your browser</strong></a>  ·  <a href="#install">Install the skill</a>  ·  <a href="#evidence-and-limits">See the evidence</a>  ·  <a href="https://github.com/manavmishra/ZeroSlop/releases/latest">Latest release</a>  ·  <a href="https://zero-slop.ai/brand/">Brand assets</a></p><p align="center">  <a href="https://github.com/manavmishra/ZeroSlop/actions/workflows/validate.yml"><img alt="Validate" src="https://github.com/manavmishra/ZeroSlop/actions/workflows/validate.yml/badge.svg"></a>  <img alt="Version 2.12.1" src="https://img.shields.io/badge/version-2.12.1-72528F?color=C15732">  <a href="https://www.npmjs.com/package/zero-slop"><img alt="npm version" src="https://img.shields.io/npm/v/zero-slop?color=C15732"></a>  <a href="https://www.npmjs.com/package/zero-slop"><img alt="npm downloads" src="https://img.shields.io/npm/dm/zero-slop?color=17634F"></a>  <a href="https://github.com/manavmishra/ZeroSlop/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/manavmishra/ZeroSlop?style=flat&color=C15732"></a>  <a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-141412"></a>  <a href="https://hol.org/registry/plugins/manav-mishra%2Fzero-slop"><img alt="Listed in the HOL plug

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add zero-slop-site --env GH_TOKEN=${GH_TOKEN} --env GITHUB_TOKEN=${GITHUB_TOKEN} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "zero-slop-site": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "GH_TOKEN": "${GH_TOKEN}",
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

Exposed tools (2) 2 read · 0 write · 0 destructive

ToolRiskDescription
WritingreadOne draft, the same checked result as MCP.
deslopread

Details

Source
manavmishra/ZeroSlop
npm
zero-slop-site@0.1.0
PyPI
zero-slop
Transports
streamable-http
Credentials it reads
GH_TOKENGITHUB_TOKEN
License
MIT
Stars
118 · pushed 0d ago

Trust audit

Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)WARN
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (3 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
none-found

Findings (25)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
growth/verify-demo-player.mjs:12
await page.goto(`http://127.0.0.1:${server.address().port}/`);
MEDIUMObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
assets/Zero-Slop-One-Pager.pdf:37
Gb"0;JH,ZM!5fq/l<W?K<<3("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
MEDIUMPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
SKILL.md:280
sentence skeleton. When the input contains three or more related drafts, run:
MEDIUMPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
skills/zero-slop/SKILL.md:280
sentence skeleton. When the input contains three or more related drafts, run:
LOWInventory / provenance · inv.binary · CWE-1104
website/public/demo-384.avif
demo-384.avif
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
website/public/demo-750.avif
demo-750.avif
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
website/public/demo.avif
demo.avif
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.codexignore
.codexignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-hooks.yaml
.pre-commit-hooks.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
growth/check-motion.py:353
git_blob = hashlib.sha1(f"blob {len(gif_bytes)}\0".encode() + gif_bytes).hexdigest()
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
growth/export-shell-media.mjs:14
const blob = createHash('sha1').update(`blob ${bytes.length}\0`).update(bytes).digest('hex');
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.github/workflows/validate.yml:268
run: node ../../.github/scripts/audit-npm.mjs
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
.github/workflows/validate.yml:284
run: node ../../.github/scripts/audit-npm.mjs
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
distribution/homebrew/prepare-formula.mjs:8
export const VERSION = JSON.parse(await readFile(new URL("../../package.json", import.meta.url), "utf8")).version;
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
integrations/api-examples/samples.test.mjs:10
import { result } from "../../tests/fixtures/mcp-transport.mjs";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
mcp/gateway/src/pipeline.test.ts:10
const rescueScript = fileURLToPath(new URL("../../../scripts/rescue.py", import.meta.url));
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
integrations/api-examples/samples.test.mjs:96
const endpoint = `http://127.0.0.1:${server.address().port}/v1/deslop`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
mcp/scripts/e2e_rest.test.mjs:35
return `http://127.0.0.1:${server.address().port}`;
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
mcp/scripts/e2e_rest.test.mjs:47
assert.equal(validateBaseUrl("http://127.0.0.1:9999"), "http://127.0.0.1:9999");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/test_all.py:2940
for href in ("https://localhost/zero-slop.zip", "https://127.0.0.1/zero-slop.zip",
LOWPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
dist/zero-slop-single-file.md:306
sentence skeleton. When the input contains three or more related drafts, run:
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/rest-api.md:37
Access is free, without an API key. REST and MCP share capacity and usage limits,
Why it matters. asks the agent to read credentials
LOWPrompt injection · prompt.credential_read · CWE-94, CWE-1427
growth/console-dev-emails.md:109
everything. Make sure MCP access and API keys are actually available on Free,
Why it matters. asks the agent to read credentials
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
DISTRIBUTION.md:77
repository-dispatch endpoint. The scheduled sync works without that token.
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
mcp/README.md:259
7. Read `GET https://mcp.zero-slop.ai/internal/counters` with the report token
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine

Gates applied: no_behavioural_pass.

Audited 2026-09-13 · audit v0.4.0 · source sha 4f6d6a421bf1 · full audit: observations/trust-audit/mcp-server/manavmishra__zeroslop.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-134f6d6a421bf1CAUTIONC79first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the ZeroSlop MCP server?

Open-source Agent Skill that scores AI-sounding writing 0–100, edits it with your assistant.

What tools does ZeroSlop expose?

2 in total: 2 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is ZeroSlop safe to connect to an agent?

With care. The audit graded it C (79/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does ZeroSlop need?

It reads GH_TOKEN and GITHUB_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does ZeroSlop run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as zero-slop-site at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (4f6d6a421bf1), read on 2026-09-13. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-13 · job trust-audit-2026-09-13