Privacy-first file tools for AI agents — PDF & image ops, metadata scrubbing, background removal.
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.
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.
// 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."
# 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.
| Tool | Category | What it does |
|---|---|---|
pdf_merge | Merge PDFs into one | |
pdf_split | Extract specific pages | |
pdf_rotate | Rotate pages by 90° | |
pdf_strip_metadata | privacy | Remove author/title/producer/dates |
image_compress | image | Lossy re-encode at a target quality |
image_convert | image | jpeg ↔ png ↔ webp ↔ avif |
image_resize | image | Resize (never upscales) |
image_strip_metadata | privacy | Strip EXIF/GPS/ICC/XMP |
image_remove_background | image | Remove background → transparent PNG (local AI model, no upload) |
image_watermark | image | Tile a text watermark |
qr_generate | generate | QR code PNG from text/URL |
| Plan | Price | Quota | Retention |
|---|---|---|---|
| Free | $0 | 100 ops/mo | in-memory |
| Pro | ~$19/mo | 10,000 ops/mo | in-memory |
| Business | ~$99/mo | unlimited | zero-retention guarantee + audit log + BAA |
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")
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.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @fixpixel/filewash-apiMerge 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.
{
"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@fixpixel/filewash-apinpmio.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.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..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.