
Redactpdf
io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 3, 2026
Permanently redact SSNs, cards, emails, phones and custom terms from local PDFs, verified gone.
Overview
Redactpdf's local MCP server; no sign-in required; STDIO.
No AI overview yet: these facts come from the registry entry and the server itself.
Installation
In SourceWeft
- Open Redactpdf in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
redactpdf
Sharing a PDF usually means trusting that whatever you blacked out on screen is actually gone. Often it is not: the text is still sitting in the file, ready to be copied out. redactpdf takes the opposite approach. It looks for sensitive text in a local PDF's text layer, writes a copy in which every matched character has been physically replaced, and then re-reads its own output to prove that nothing it was asked to remove can still be extracted. If the proof fails, you get an error instead of a file.
Four kinds of sensitive text are detected. Social Security
numbers must satisfy the SSA's own validity rules (area
001-899 except 666, group 01-99, serial 0001-9999), so
random digit groups in that shape are not flagged.
Payment-card numbers are digit runs of 13 to 19 digits,
allowing single spaces or dashes between digits, and must
pass the Luhn check. Email addresses and North-American
phone numbers — (ddd) ddd-dddd, ddd-ddd-dddd,
ddd.ddd.dddd, or ddd ddd dddd, with an optional +1
prefix — round out the built-in categories. On top of
those, terms lets you name literal strings of your own,
matched case-insensitively and counted under their own
key. Omit detect to run all four categories.
Detection runs per extracted string — the string operands
of Tj and TJ show operators, in plain or FlateDecode
content streams — so a match that is split across two
string operands is not seen. That is a stated limitation
of the text-layer model this tool uses, not a silent one.
check_pdf reports what would be removed without writing
anything. redact_pdf writes the redacted copy — the
input file is never modified — replacing each matched
character with # while preserving string lengths, then
verifies the result. Documents run to 10 pages free; past
that, both tools ask for a licence. The licence check in
this build is a format check — a token of 16 to 512
characters from [A-Za-z0-9_-] plus . separators counts
as well-formed, supplied via the license argument or
the BLACKOUT_LICENSE environment variable — and the
over-limit error distinguishes a missing licence
(LICENSE_REQUIRED) from a malformed one
(LICENSE_INVALID). Encrypted PDFs, PDFs built on xref
or object streams, and malformed files are reported as
unsupported rather than passed over in silence.
Both tools answer with a one-line summary, a blank line,
and a fenced JSON block carrying path, outputPath
(null for check_pdf), pages, counts,
extractableChars — for check_pdf, the characters that
fall inside a detected match in the input; for a
successful redact_pdf, 0 by construction — and
licenseState.
CLI
redact_pdf writes <input>-redacted.pdf (the input
path with its .pdf suffix replaced) unless
output_path says otherwise; the output may not be the
input itself, and an existing output is only replaced
when overwrite is true.
Exit codes: 0 on success, 1 on a runtime error (the
tool's error text is printed), 2 on a usage error.
MCP server
MCP client config:
Tools
check_pdf— Report what would be redacted from a local PDF — per-category match counts — without writing anything.path(string, required) — absolute path to a PDF on this machinedetect(string array, optional) — any ofssn,card,email,phone; omit for allterms(string array, optional) — literal strings to match, case-insensitive
redact_pdf— Write a redacted copy of a local PDF with detected sensitive text permanently removed and verified gone. Never modifies the input.path(string, required) — absolute path to a PDF on this machineoutput_path(string, optional) — defaults to<input>-redacted.pdf; must not be the inputdetect(string array, optional) — any ofssn,card,email,phone; omit for allterms(string array, optional) — literal strings to match, case-insensitiveoverwrite(boolean, optional, default false) — allow replacing an existing outputlicense(string, optional) — Pro licence token; falls back toBLACKOUT_LICENSE
Docker
Development
License
MIT — Copyright (c) 2026 Rene Turcios
Source: README.md at commit 76cbe72
Tools
0Version history
1- v0.1.0LatestNov 3, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts