Back to Directory/Media & Images

io.github.cassilup/filewash

Privacy-first file tools for AI agents — PDF & image ops, metadata scrubbing, background removal.

Media & ImagesJavaScriptv0.1.0

filewash — privacy-first file tools for AI agents

The file-processing layer for agents and apps that can't send files to a third party. Compress, convert, resize, merge/split PDFs, strip metadata, and remove backgrounds — exposed as an MCP server, a metered REST API, and an npm SDK. Zero-retention by default: files are processed in memory and never stored or logged.

Built from filewash.app's client-side WASM tools. Same logic, now callable by your agents.

Why this exists

Every other file-tools API and MCP server is a wrapper around an upload-to-server service. That's a non-starter for legal, healthcare, finance, and any GDPR-bound workflow — and it's a liability when you're piping documents into an LLM. filewash is the one built around not keeping your files, with two tools nobody else ships as an MCP: background removal and metadata scrubbing.

MCP server (Claude Desktop, Cursor, Claude Code)

// claude_desktop_config.json  →  mcpServers
{
  "filewash": { "command": "node", "args": ["/path/to/filewash-api/src/mcp/server.js"] }
}

Your agent now has 11 tools. Ask it: "strip the location metadata from these photos before I upload them" or "merge these contracts and rotate the scanned pages."

REST API

# discover
curl https://api.filewash.app/v1/tools

# strip EXIF/GPS from a photo (returns the cleaned image)
curl -X POST https://api.filewash.app/v1/tools/image_strip_metadata \
  -H "Authorization: Bearer $FILEWASH_KEY" \
  -F 'files=@photo.jpg' -o clean.jpg

# merge PDFs
curl -X POST https://api.filewash.app/v1/tools/pdf_merge \
  -H "Authorization: Bearer $FILEWASH_KEY" \
  -F 'files=@a.pdf' -F 'files=@b.pdf' -o merged.pdf

Every response carries X-Filewash-Meta (operation result) and X-Filewash-Quota-Remaining.

Tools

ToolCategoryWhat it does
pdf_mergepdfMerge PDFs into one
pdf_splitpdfExtract specific pages
pdf_rotatepdfRotate pages by 90°
pdf_strip_metadataprivacyRemove author/title/producer/dates
image_compressimageLossy re-encode at a target quality
image_convertimagejpeg ↔ png ↔ webp ↔ avif
image_resizeimageResize (never upscales)
image_strip_metadataprivacyStrip EXIF/GPS/ICC/XMP
image_remove_backgroundimageRemove background → transparent PNG (local AI model, no upload)
image_watermarkimageTile a text watermark
qr_generategenerateQR code PNG from text/URL

Pricing (planned)

PlanPriceQuotaRetention
Free$0100 ops/moin-memory
Pro~$19/mo10,000 ops/moin-memory
Business~$99/mounlimitedzero-retention guarantee + audit log + BAA

Run locally

npm install
npm run test:engine   # 10 tools, end-to-end, no browser
npm run mcp           # stdio MCP server
npm run rest          # REST API on :8787  (try key "demo")

Privacy

No file is written to disk by the REST API; the MCP server writes output only to the path you pass. No file contents are logged. The Business tier adds a contractual zero-retention guarantee and audit logging.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @fixpixel/filewash-api

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-cassilup-filewash": {
      "command": "npx",
      "args": [
        "-y",
        "@fixpixel/filewash-api"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@fixpixel/filewash-apinpm

Compatible MCP Clients

io.github.cassilup/filewash works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More