Blackout

ai.thrain由 thrain.ai 發布v1.3.0更新於 Oct 24, 2026

Permanent local PDF redaction: text is removed and verified gone, not covered. No uploads.

已驗證STDIO僅桌面檔案與儲存安全與監控

概覽

AI 產生的概覽

一個本機 MCP 伺服器,透過真正刪除文字並驗證其已消失來永久遮蔽 PDF,檔案不會上傳。

可以做什麼
對 PDF 進行遮蔽:可自動辨識社會安全號碼、電子郵件、電話號碼和信用卡號,也可依自訂詞彙或手繪方框標記,並匯出文字已被真正刪除而非遮蓋的扁平化副本。檢查 PDF,確認遮蔽後不再殘留可擷取的文字。兩個工具都會對剛寫出的檔案重新擷取文字,若仍有文字層就報錯,不會回傳該文件。
適用情境
當助理需要產出真正完成遮蔽的 PDF 時使用,例如在分享含個人資料的申報表或表單之前,而只畫一個黑色矩形並不足夠,因為底層文字仍可被選取。
執行需求
透過 npm 套件 @thrain/blackout-mcp 以 stdio 作為本機程序執行。未宣告任何帳號、API 金鑰、環境變數或請求標頭,伺服器不發出網路請求。
安裝前請注意
遮蔽會重寫 PDF:匯出的檔案經過點陣化,原始文字層被丟棄,因此輸出不再可搜尋或複製,應保留來源檔案。這些工具會將新檔案寫入磁碟。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Blackout,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Blackout]

Blackout

True PDF redaction, entirely in your browser.
blackout.thrain.ai


Blackout finds Social Security numbers, emails, phone numbers and card numbers in a PDF, lets you search custom terms or draw boxes by hand, and exports a flattened PDF where the redacted text is actually gone — not hidden under a rectangle.

It runs in three places, all on the same engine: the browser app, a CLI, and an MCP server.

bash
npx @thrain/blackout redact filing.pdf --detect ssn,email --out clean.pdf

How it works

  1. Nothing leaves your device. Rendering (pdf.js), detection, and export (pdf-lib) all run client-side. Load the page, go offline, it still works.
  2. Redaction is real. Export rasterizes each page and burns the boxes into the pixels, then rebuilds the PDF from those images. The original text layer is discarded — copy-paste and text extraction recover nothing.

Develop

bash
npm installnpm installnpm run dev         # local dev servernpm run build       # type-check + production build to dist/npm run build:agent # type-check + bundle the CLI and MCP server to packages/
npm run smoke              # headless browser end-to-end testnpm run smoke:cli          # CLI end-to-end testnpm run smoke:mcp          # MCP server end-to-end testnpm run smoke:agent-dist   # the same two, against the built bundles
node scripts/make-test-pdf.mjs out.pdf 12           # fixture with fake PIInode scripts/test-worker.mjs                        # license worker testsnode scripts/visual-check.mjs [test.pdf] [outdir]   # screenshot spot-check

The browser smoke script needs a Chrome/Chromium binary; set CHROME_BIN if yours isn't in the default Playwright cache location. Every smoke test makes the same central assertion — that the exported PDF contains zero extractable text — because that assertion is the entire product, and it has to hold on every path that ships, not just the one that is easy to check.

Architecture

  • Engine (src/pdf/) — detection, mark ordering, and the rasterise-and-burn export. Platform-agnostic: its only contact with the outside world is src/pdf/platform.ts, which supplies a canvas. src/platform/browser.ts backs it with a DOM canvas, src/platform/node.ts with Skia. There is exactly one redaction implementation, so the browser and the CLI cannot drift.
  • Site — static React app, deployed to GitHub Pages by .github/workflows/deploy.yml on every push to main.
  • CLI and MCP server (src/agent/) — thin non-interactive wrappers over the engine, bundled into packages/blackout and packages/blackout-mcp.
  • License worker (worker/) — a Cloudflare Worker that verifies Stripe checkout sessions and mints signed license tokens; the app verifies them with an embedded public key. Deployed by .github/workflows/deploy-worker.yml.

For agents

An agent asked to redact a PDF will otherwise write a script that draws a black rectangle over text that stays selectable underneath. Two form factors exist so that "redact this PDF" can resolve to a tool that does it correctly:

Both verify their own output before returning: they re-extract text from the file they just wrote and fail rather than hand back a document that still has a text layer. Neither makes a network call, including the licence check — so nothing leaves the machine at all.

License

Apache-2.0 © Thrain LLC. The "Blackout" name and logo are trademarks of Thrain LLC (see NOTICE) — fork freely, but ship your fork under your own name.

來源:README.md,提交 1324a22

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分