abox-tools
abox.tools is an offline local file-processing MCP server plus opt-in live-session controls, exposing 73 tools.
Images: compress, resize, convert, create ICO, rasterize SVG, compose layouts, trace, stack, redact, inspect/remove/edit metadata, embed as data URIs, generate/read QR codes and barcodes, and inspect/split/create GIFs; also HEIC/AVIF conversion.
PDFs: split, merge, select/reorder/rotate pages, convert images to PDF, compress, watermark, extract tables to CSV, protect/unlock, redact, scan document photos, make ID photos, and render business/height previews.
Audio/video: extract, edit, and trim audio; inspect, trim, join, rotate, remux, compress, crop, frame-grab, reverse, time-lapse, and bake-rotate videos; create videos from images; convert GIF to MP4 and video to GIF.
Text/data/code: format/convert JSON, XML, YAML, HTML, CSS, Markdown, and XML/JSON; Base64 encode/decode; diff text files; calculate checksums; format code.
Other utilities: inspect DICOM, extract receipt OCR, generate passwords into local files, and report capabilities.
Live sessions: open opt-in visible companion windows for text/file sharing, camera, walkie-talkie, and voice on-call; check status; stop sessions.
Operational limits: requires absolute local paths, writes new outputs without overwriting, keeps file contents out of tool results, and some media/document operations require a local browser or native codecs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@abox-tools Compress /Users/sam/photo.jpg below 500 KB to /Users/sam/photo-small.jpg"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
abox.tools for agents
Published by Abox Technologies. Compress, resize and convert images; create ICO icons, rasterize SVGs and compose image layouts; compress, watermark, merge, split, reorder and rotate PDF pages; extract PDF tables to CSV; turn images into PDFs; format JSON and XML; convert YAML and JSON; compare text files; encode or decode Base64; embed images as data URIs; generate QR codes and barcodes; inspect or remove image metadata; and calculate file checksums with the existing abox.tools code. An agent supplies local paths and receives output paths and short JSON results. Offline file processing keeps bytes on your computer and out of tool responses.
It also processes GIFs, admitted audio and supported video timelines; straightens document photos; prepares custom ID photos and local previews; extracts receipt fields with bundled OCR; inspects and renders a restricted DICOM subset; protects and unlocks PDFs; redacts explicit image/PDF regions; and generates passwords into local files. Codec and rendering operations expose documented subsets.
The public v0.11.0 release provides 66 offline file operations, six opt-in live controls and one capabilities tool: 72 operations and 73 MCP tools. Native and universal packages passed checks on all four target platforms. See tool coverage and concrete unsupported paths for the source engines reused by this adapter and the limits of each route.
Version 0.11.0 adds six live-session controls: a separate opt-in visible companion for text/files, camera video and voice. Opening a window starts no network or capture. The person clicks Start/Connect and handles permissions and pairing there. Live mode uses the existing abox.tools pairing service and direct encrypted WebRTC; the service sees negotiation metadata and keeps seven-day Cloudflare metadata logs. There is no relay, discovery or recording. Read the live-session boundary. The actual SHA-verified public Windows cache passed all 72 operations/73 tools and all eight passive companion roles, with no capability absences or unrequested pairing/capture. Public Gemini installation and the 15-file shared-skill copy also passed. Real pairing-service and public-website interoperability checks used temporary files and generated media in two isolated browsers on one computer. Physical devices, native camera permission and desktop-client installation remain unverified. See v0.11.0 publication evidence.
Historically, version 0.10.0 added HEIC/AVIF, flattened PDF redaction, sound extraction and admitted H.264 video processing. It also expands audio and DICOM codec support. Publication and the Registry readback were verified on 28 October 2026. The default Python installer downloaded and checksum-verified the public Windows package. That actual cache passed all 66 file operations and 67 MCP tools with its bundled runtime, without capability absences or a local rebuild. Public Gemini CLI installation and the shared skill's 14-file project installation also passed. The skill check validated the installer contract offline; actual adapter installation was proved separately by the public Python download and full MCP smoke. See the v0.10.0 publication evidence.
Historically, the public v0.9.0 Windows download passed all 55 file operations and 56 MCP tools using its bundled runtime. Public Gemini CLI installation and the shared skill's ten-file installation were also checked. See publication evidence, including the historical v0.8.0 receipts.
Download the latest release.
Listed in the Official MCP Registry
as io.github.A-Box-of-Tools/abox-tools. New tagged releases update the Registry
automatically after their downloads pass verification.
Release bundles include Node.js, production dependencies, pinned processing code, and the shared skill. You do not need to install Node or npm, or type setup commands. Image rendering/conversion, GIF creation/extraction, decoded audio, receipt OCR, document scans, local previews, PDF raster redaction and video decoding/encoding need an installed Edge, Chrome or Chromium. PDF page/security operations, metadata operations, checksums, container inspection, audio/video packet copying and text processing run without one. QR codes and barcodes default to SVG without a browser; PNG output uses the installed local browser. A native H.264 encoder is required for new MP4 encoding.
Install in Codex
Download the matching .zip from the release's Assets:
Release label | Computer |
| Windows with an Intel or AMD 64-bit processor |
| Mac with Apple silicon |
| Mac with an Intel processor |
| Linux with an Intel or AMD 64-bit processor |
Extract the entire ZIP to a permanent folder. For example, a 0.11.0 Windows bundle extracts as
abox-tools-0.11.0-windows-x64. Keep this folder in place because the local marketplace uses it for plugin refresh.Open
START-HERE.htmlinside the extracted folder. This page works offline. Select Install in Codex, allow your browser to open the desktop app, then select Install on the plugin's detail page.Start a new local chat and ask for one of the operations below.
You need the desktop app installed with its codex:// link handler available.
The button opens the app's supported local-plugin detail link; the app handles
installation. See the official OpenAI deep-link documentation.
If your browser blocks the link, use Install in Codex.cmd on Windows or
Install in Codex.command on macOS. Linux includes Install in Codex.sh for
file managers that support executing shell scripts. These launchers open the
same detail page and may briefly show a terminal; no commands need to be typed.
Related MCP server: pdf-agent-toolkit-mcp
Install the tools in Claude Desktop
Download the universal.mcpb from the same release, open it with Claude Desktop,
and follow its installation prompts. One file supports Windows x64, Linux x64,
and both Apple silicon and Intel Macs. It includes the runtimes and processing
dependencies. Smaller platform-specific MCPBs are also available. This installs
the MCP tools; the shared agent skill is part of the Codex ZIP.
If opening the file does not show an installer, go to Settings → Desktop app →
Manage beside Extensions, then Advanced settings → Install Extension… and
select the .mcpb. See Claude's desktop extension instructions.
Bundle format and MCP execution are checked in CI on all four platforms. The
0.2.1 universal bundle was installed and enabled in Claude Desktop on Windows,
where the app reported its local MCP server Running. The macOS desktop interface
has not been checked. Download and install a new bundle when updating; custom
MCPB files do not update automatically.
Version 0.3.0 corrects the publisher to Abox Technologies. If your desktop host shows both the earlier publisher entry and the new one, disable the older entry to avoid duplicate tools.
Install in Gemini CLI
With Gemini CLI installed, run:
gemini extensions install https://github.com/A-Box-of-Tools/abox-tools-pluginGemini selects the matching prebuilt archive from the latest GitHub Release. The extension includes its runtime, dependencies and shared skill. Review the installation prompt and allow its local MCP server. See the Gemini extension release guide.
Install tools in Cursor
Extract the matching native ZIP, open START-HERE.html, and select Install
tools in Cursor. Cursor shows the local server configuration before adding it.
Keep the extracted folder in place. This adds the MCP tools; the shared skill
can be installed separately. The repository's Cursor plugin route needs Node
and a one-time adapter setup; see Cursor installation.
Install tools in VS Code
Extract the matching native ZIP, open START-HERE.html, and select Install
tools in VS Code. Review the local server configuration in VS Code and keep
the extracted folder in place. The button uses the bundled runtime; Node, npm
and a VSIX are not required. This installs MCP tools. Install the shared skill
separately if your agent supports it. See the
official MCP installation-link documentation.
Install the shared skill through skills.sh
For agents supported by the skills CLI (Node 22.20+):
npx skills add A-Box-of-Tools/abox-tools-plugin --skill abox-local-filesThen ask the agent to set up the abox.tools local adapter. The skill includes a Python 3.9+ setup script that downloads the matching packaged release, verifies its checksum and installs the bundled runtime. It does not require cloning or building this project. See standalone setup. The skills.sh listing is public. Public v0.11.0 Gemini installation and skill copying were verified; a Gemini gallery listing is unconfirmed.
Ask the agent
“Compress this photo below 500 KB and save a new copy.”
“Resize this photo to fit within 1200 by 800 pixels.”
“Convert this PNG to WebP.”
“Merge these PDFs in this order.”
“Split this PDF into one file per page.”
“Extract pages 1–3 and 4–6 as two PDFs.”
“Make one PDF containing pages 3, 1–2, and another copy of page 3.”
“Rotate pages 2–4 clockwise by 90 degrees.”
“Put these photos into one PDF, in this order.”
“Check whether this image contains EXIF or XMP metadata.”
“Remove location and other image metadata, keeping its orientation and colors.”
“Calculate SHA-256 checksums for these files.”
“Compress this scanned PDF for screen reading.”
“Add a diagonal DRAFT watermark to every PDF page.”
“Make an ICO with 16, 32, 48 and 256 pixel versions of this logo.”
“Export this SVG as a transparent PNG, 1200 pixels wide.”
“Arrange these photos into a two-column grid with transparent gaps.”
“Extract the tables on pages 2–4 into a CSV I can review.”
“Format this JSON without changing large numbers or key order.”
“Decode this Base64 file into a new binary file.”
“Convert this YAML configuration into JSON.”
“Format this XML while preserving mixed text.”
“Compare these two files and save a unified patch.”
“Generate a QR code from the exact text in this local payload file.”
“Make a Code 128 barcode from this local payload file.”
“Embed this image as a CSS custom property without changing its bytes.”
“Inspect the frame timings of this GIF without decoding its pictures.”
“Extract GIF frames 1, 5 and 10 as composited PNGs.”
“Trace this black-and-white logo into a single-color SVG.”
“Average these aligned, opaque images into a new PNG.”
“Black out the exact regions in my local JSON file and save a new PNG.”
“Generate two six-word passphrases into a new local file without showing them.”
All input and output paths must be absolute. Existing outputs are never overwritten. Image compression accepts an exact byte target; a result reports whether the target was met.
MCP tool | Required arguments | Useful options |
| none | Lists formats, limits, and defaults. |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2–32 PDFs in input order; |
|
| Ordered terms such as |
|
| Clockwise 90, 180, or 270; |
|
| One image per page; |
|
| Read-only metadata inventory; does not return private tag values |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ordered |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| UTF-8 payload |
|
| UTF-8 payload |
|
|
|
|
|
| Header-only timing, rectangles and budgets; optional zero-based |
|
|
|
|
| Single-color shape trace; |
| ordered |
|
|
| Local JSON with expected decoded dimensions and integer rectangles; permanent opaque black fill |
|
| Optional local JSON |
The six new tools' settings and JSON configuration examples are documented in the shared skill reference.
Operations added in v0.9.0
These routes extend the earlier v0.8.0 operation set. Their full settings, local
JSON shapes and review requirements are in the shared skill's
media and document reference.
Use capabilities to check what your installed release exposes.
MCP operation | CLI command | Result and important boundary |
|
| One QR/barcode payload in a new local JSON report; never opens links or returns the payload |
|
| Ordered still images to GIF with timing, palette and loop controls |
|
| AES-256/AES-128 PDF security; exact passwords come from local files; viewer permission flags are advisory |
|
| Supplied-password decryption to a new PDF; no password guessing |
|
| Reverse, speed/pitch, gain or normalize an admitted PCM16/Float32 WAV |
|
| Ordered kept ranges or cuts in WAV; configurable fades; encoded samples verified |
|
| MP4/MOV sample tables and technical headers without decoding |
|
| Copy admitted time ranges; hidden boundary packets can remain, so this is not redaction |
|
| Copy compatible MP4/MOV clips into a new MP4 without re-encoding |
|
| Copy video packets with a clockwise display matrix; viewers must honor orientation |
|
| Copy supported H.264/AAC MP4/MOV packets into MP4; no transcoding fallback |
|
| Explicit local corner coordinates to cleaned PNG/PDF; no edge detection or OCR |
|
| Custom rules and explicit landmarks to JPEG photo, print sheet and report; no official approval |
|
| Illustrative local SVG/PNG; does not access or publish a real listing |
|
| Locally configured silhouettes, names and measurements to SVG/PNG |
|
| Bundled English OCR to local JSON/CSV; every suggested field needs review |
|
| Technical headers without patient values for flat PS3.10 native/single-frame RLE files |
|
| One technical PNG preview; burned-in identifiers remain possible |
|
| Still images to silent H.264 MP4 with verified frames/timing |
|
| One GIF cycle to silent H.264 MP4, with a solid background for transparency |
|
| Explicit tag changes from local JSON; compressed picture and other metadata retained |
|
| Format HTML/CSS/YAML or minify supported HTML/CSS; preserves active markup, not a sanitizer |
|
| Explicit lossy XML↔JSON mapping; verifies source mapping rather than semantic round-trip |
|
| Small Markdown dialect to standalone passive HTML with CSP; links never opened |
In v0.9.0, audio inputs are simple mono/stereo PCM16/Float32 WAV. Version 0.10.0
expands the admitted codecs as described below. MP4 creation is limited
to 60 seconds, 1800 frames and a 2,073,600-pixel output, and needs a supported
installed browser encoder. Receipt OCR includes
its worker, WebAssembly and English data; no processing asset is downloaded.
These are operation-specific bounds, not a universal process-memory guarantee.
EXIF edits use a separate local edits_path with bounded set/remove
instructions; see metadata editing.
Editing retains the thumbnail and other metadata and does not anonymize an image.
See additional text formatting
for exact HTML/CSS/YAML options, XML/JSON mapping losses and the passive Markdown
dialect. Formatting existing HTML keeps its active content; it is distinct from
the Markdown renderer's escaped, restricted output.
Operations added in v0.10.0
These additions are included in the public v0.10.0 release. Always check
the installed adapter's capabilities before choosing a new operation.
MCP operation | CLI command | Result and important boundary |
|
| Admitted HEVC still photos/grids to a new image directory; bundled offline codec and predecode coded/reference budgets |
|
| One reduced-header AV1 still photo to JPEG/PNG/WebP; animation and unsupported geometry refused |
|
| Explicit local point-coordinate masks to a fresh lossless image-only PDF; all pages flattened, no source objects copied |
|
| Admitted sound to WAV, or exact AAC packet extraction from MP4/M4A/MOV to M4A without decoding video |
|
| Re-encode admitted H.264 toward a byte target; report |
|
| Exact displayed-image coordinates from local JSON to a re-encoded MP4 |
|
| Frame at or before the requested time to a lossless PNG; every output pixel checked |
|
| Re-encode reversed frames; silent by default, optional bounded AAC reversal/re-encoding |
|
| Faster silent MP4 with explicit frame selection, rate and size |
|
| Sampled video range to a bounded palette GIF; sound omitted |
|
| Apply source orientation and an additional quarter turn to re-encoded pixels; identity output display matrix |
Audio editing/trimming also accepts bounded MP3 Layer III, AAC-LC ADTS and an ordinary unedited MP4/M4A/MOV AAC-LC track. Compressed WAV output needs a native packet decoder; the adapter never falls back to unbounded whole-file decoding. Check actual decoded duration because priming/padding can reduce sample counts. See audio codecs and extraction.
DICOM now also admits a strict single-frame JPEG Lossless Process 14 subset, with complete entropy admission and independent stored-sample checks. It remains a technical preview and can retain burned-in identifiers. See DICOM details.
Use exact user-provided geometry for PDF redaction; the adapter does not find sensitive regions or erase the original. Searchable text, signatures and interactive PDF features are lost. For image conversion, read HEIC/AVIF limits, including 8-bit SDR output and metadata omission. No route downloads a codec while processing a file.
The seven new video processing routes admit stable progressive 8-bit 4:2:0 H.264 before native decoding; this is not arbitrary codec support. Generated MP4 frames are decoded and checked for shape, timing and count, while copied AAC packets are compared exactly. Lossy encoding, color conversion and final-frame timing can change. Matrix-only video rotation remains available separately without decoding or re-encoding.
Operations added in v0.11.0
These controls open a separate visible browser and keep private content and pairing secrets outside agent context. The person starts/connects and approves capture/peers there. They require a graphical desktop and directly reachable devices; host-candidate connections can require the same network. File operations remain offline. These controls are included in the verified public v0.11.0 release; historical v0.10.0 receipts remain above.
MCP operation | CLI command | Explicit role and important boundary |
|
|
|
|
|
|
|
| Microphone-granted |
|
|
|
|
| Safe counts/state/expiry for this adapter process; no invitations, received text or media |
|
| Close one companion and release devices/transports; unfinished saves removed and completed saves retained |
At most four windows run together. ttl_minutes defaults to 30 and ranges from
1 to 120. Share attachments are at most 16 files, 128 MiB each and 256 MiB
combined; text is at most 50,000 characters and 200,000 UTF-8 bytes. Peers' names
never select filesystem paths: explicit receive saves use generated .bin or
.txt names with exclusive writes. The synthetic loopback-looking address has
no actual HTTP listener or file server. See live settings and CLI lifetime,
Privacy and Security.
For PDF protection, pass open_password_file/owner_password_file; for unlocking,
pass password_file. Their exact UTF-8 text, including BOM and final newline,
is used without trimming. Never put passwords or decoded code contents into a
tool request or conversation. Document scans and ID photos require dimensions
and source pixel coordinates from a local JSON file, supplied deliberately by
the user. The adapter does not infer sensitive regions or face landmarks.
Use the CLI
The CLI provides the same operations without MCP. These commands use Node in a
source checkout. In a release bundle, replace node with ./runtime/node, or
.\runtime\node.exe on Windows:
node bin/abox.mjs capabilities
node bin/abox.mjs doctor
node bin/abox.mjs compress-image --request-file /absolute/path/compress.json
node bin/abox.mjs resize-image --request-file /absolute/path/resize.json
node bin/abox.mjs convert-image --request-file /absolute/path/convert.json
node bin/abox.mjs split-pdf --request-file /absolute/path/split.json
node bin/abox.mjs merge-pdf --request-file /absolute/path/merge.json
node bin/abox.mjs select-pdf-pages --request-file /absolute/path/select.json
node bin/abox.mjs rotate-pdf --request-file /absolute/path/rotate.json
node bin/abox.mjs images-to-pdf --request-file /absolute/path/photos.json
node bin/abox.mjs inspect-exif --request-file /absolute/path/inspect.json
node bin/abox.mjs remove-exif --request-file /absolute/path/metadata.json
node bin/abox.mjs hash-file --request-file /absolute/path/hash.json
node bin/abox.mjs compress-pdf --request-file /absolute/path/compress-pdf.json
node bin/abox.mjs watermark-pdf --request-file /absolute/path/watermark.json
node bin/abox.mjs image-to-ico --request-file /absolute/path/icon.json
node bin/abox.mjs svg-to-image --request-file /absolute/path/svg.json
node bin/abox.mjs image-layout --request-file /absolute/path/layout.json
node bin/abox.mjs pdf-to-csv --request-file /absolute/path/tables.json
node bin/abox.mjs format-json --request-file /absolute/path/format.json
node bin/abox.mjs base64 --request-file /absolute/path/base64.json
node bin/abox.mjs image-to-data-uri --request-file /absolute/path/embedding.json
node bin/abox.mjs convert-yaml-json --request-file /absolute/path/conversion.json
node bin/abox.mjs format-xml --request-file /absolute/path/xml.json
node bin/abox.mjs generate-qr --request-file /absolute/path/qr.json
node bin/abox.mjs generate-barcode --request-file /absolute/path/barcode.json
node bin/abox.mjs diff-text --request-file /absolute/path/diff.json
node bin/abox.mjs inspect-gif --request-file /absolute/path/gif-info.json
node bin/abox.mjs split-gif --request-file /absolute/path/gif-frames.json
node bin/abox.mjs trace-image --request-file /absolute/path/trace.json
node bin/abox.mjs stack-images --request-file /absolute/path/stack.json
node bin/abox.mjs redact-image --request-file /absolute/path/redaction.json
node bin/abox.mjs generate-passwords --request-file /absolute/path/passwords.jsonA compression request file contains:
{
"input_path": "/absolute/path/photo.jpg",
"output_path": "/absolute/path/photo-small.jpg",
"target_bytes": 500000,
"format": "keep",
"allow_resize": true
}A page-range request file contains:
{
"input_path": "/absolute/path/document.pdf",
"output_dir": "/absolute/path/document-parts",
"mode": "ranges",
"ranges": ["1-3", "4-6"],
"keep_bookmarks": true
}An image metadata request file contains:
{
"input_path": "/absolute/path/photo.jpg",
"output_path": "/absolute/path/photo-clean.jpg",
"keep_orientation": true,
"keep_icc": true
}--request '<JSON>' is also supported, subject to your shell's quoting rules.
Request files avoid those differences. The CLI prints JSON summaries; it never
prints file contents.
Limits and behavior
Image compression, resizing and conversion: JPEG, PNG, and static WebP. Animated images are refused. Resizing fits the full image (
contain) or crops centrally (cover); upscaling is disabled by default. Re-encoding can change colors and removes source metadata. A no-op resize preserves original bytes.Metadata removal: JPEG, PNG, and WebP containers, including their animation.
PDF page operations: unencrypted input, up to 5,000 pages and 1,000 output files. Merging accepts 2–32 PDFs, at most 128 MiB combined. Page selection preserves the order and repetition of comma-separated terms. Ranges expand ascending:
3,1-2,3produces 3,1,2,3; use explicit terms for reverse order. Merging PDFs with colliding interactive form field names is currently unsupported by the source engine and fails before creating an output. Tool responses include at most 20 output entries. Larger splits also write a localmanifest.jsoncontaining every output path and its source pages.Images to PDF: still JPEG, PNG or WebP, one image per page, up to 128 MiB combined and 80 megapixels per image. Defaults to A4, automatic orientation, contain, no margins.
keepcan embed original JPEG streams with their metadata; remove metadata first when a clean document is required.losslesspreserves decoded image pixels;jpegre-encodes using the requested quality.Checksums: read-only, streaming, supports empty files and up to 8 GiB.
PDF compression: presets recompress supported images and rewrite structure.
smallestuses 96 DPI / 0.55 quality,screen130 / 0.68,print220 / 0.82, andgentlekeeps resolution with 0.90 quality.dpiandqualitycan override those settings. It does not search for a byte target; checksmallerand actual savings. The output can be larger. Changed images can lose detail. CMYK and unsupported image encodings are retained where safely readable. Unusual filter-wrapped JPEG encodings and nonidentity EXIF orientation in JPEG streams are refused before processing to prevent unintended image rotation. Standard PDF metadata is removed by default; embedded images, attachments and visible content can still contain personal information.PDF watermarks: one rasterized line, up to 200 characters, centered or tiled, on all pages or only the first. Local fonts affect appearance. Up to 100,000 stamps. Watermarks can be removed by editors and do not redact or protect data.
ICO: still JPEG, PNG or WebP to one file with up to ten sizes from 16 to 256 pixels.
autostores sizes up to 64 as DIB and larger sizes as PNG. Padding preserves aspect ratio and transparency; crop fills the square; stretch can distort. The directory, frame dimensions and rendered pixels are verified.SVG: uncompressed, self-contained static SVG to PNG, JPEG or WebP; up to 16,384 pixels per side and 80 megapixels. Active content, foreign objects, external references, CSS imports/escapes and animations are refused. JPEG fills transparency with white by default. Fonts and colors can vary by browser.
Image layouts: 2–32 still JPEG, PNG or WebP images, at most 128 MiB combined and 80 megapixels per input. Output is at most 8192 pixels per side and 32 megapixels. Grids default to two square columns; horizontal/vertical strips preserve original aspect ratios. Contain retains the full image; cover crops. New pixels are rendered in 8-bit SDR and source metadata is not copied.
PDF to CSV: selectable text only, no OCR. Tables, headings, dates and amounts are inferred and can be incomplete or wrong; review the CSV against the PDF. UTF-8 BOM, comma delimiter, CRLF lines. Multiple tables have a blank separator row. Year-bearing dates and inferred amounts are normalized; auto date order falls back to day-first when ambiguous. Formula-like text is escaped with an apostrophe by default. Up to 1000 tables, 64 columns per table, 100000 data rows, one million cells/glyphs and 16 MiB of output. Structural verification does not establish extraction accuracy.
PDF table extraction currently accepts unfiltered and Flate streams without predictors. It conservatively refuses legacy LZW/RunLength, ASCII-armoured streams and predictors, even in unused images or xrefs. Blocked PDF names in printed text can also cause refusal. Stream expansion is limited to 16 MiB per Flate stream and 64 MiB cumulatively before buffering decoded data.
JSON: UTF-8 input up to 8 MiB, nesting up to 256 levels, output up to 32 MiB. Preserves raw number and string tokens, duplicate keys and object key order. Sorting is opt-in. Both pretty and minified output end with a newline. The parser accepts at most 250000 syntax nodes, including object keys.
Base64: arbitrary binary files, including empty files; input up to 8 MiB, output up to 32 MiB. Standard encoding is padded; URL-safe encoding is unpadded. Relaxed decoding accepts whitespace, missing padding and either alphabet. Canonical validation requires the exact requested spelling and zero unused bits. Encoded/decoded bytes are written locally and never returned to the agent.
Image data URIs: input up to 8 MiB and output up to 32 MiB. Signature-based MIME recognition does not prove image validity or rendering. Original bytes, metadata and SVG markup are preserved; this is not a sanitizer. The five output shapes use
.txtforuri,.cssforcss-rule/css-var,.htmlforhtml, and.mdformarkdown. Auto encoding uses readable percent encoding only for exact UTF-8 SVG in a standalone URI. SVG embedding envelopes use Base64 to avoid HTML, CSS or Markdown changing the URI's spelling.YAML/JSON conversion: UTF-8 input up to 2 MiB, output up to 16 MiB, 128 nesting levels and 100000 syntax nodes. Supports the website's YAML subset, not every YAML feature. Anchors, aliases, custom tags and multiple documents are refused. Ordered values, duplicate keys and large numeric tokens are retained; comments, formatting and string escape spelling can be lost. Optional natural key sorting applies only when converting YAML to JSON. Output must round-trip before it is written. The source printer cannot handle root multiline strings or some four-space lists of mappings; those requests are refused. Use the default two-space indentation for lists of mappings.
XML formatting: the same 2 MiB input, 16 MiB output, 128 nesting levels and 100000-node limits. UTF-8 only; DTDs and custom entities are refused, without fetching external resources. Predefined entities and valid numeric references are supported. Mixed content and
xml:spacefollow the source engine's preservation rules; formatting may change insignificant whitespace and quotes.QR codes and barcodes: read payloads directly from UTF-8 files, including any final newline. Payloads and completed barcode digits are not returned to the agent. QR input is at most 4 KiB; barcode input at most 256 bytes. Actual encoder and verification capacity can be smaller. Retail check digits are computed or validated; invalid supplied digits fail. Code 39 can uppercase text and optionally add its checksum. SVG is the default and needs no browser; PNG uses the installed browser. Output is at most 8192 per side, 32 megapixels and 16 MiB. Barcode verification permits at most 400 alternating runs; plain ITF is limited to 4–40 digits. Check warnings and test the saved code with the intended scanner before printing or relying on it.
Text comparison: two UTF-8 files, including empty files, at most 4 MiB and 20000 logical lines combined; NUL-containing binary inputs are refused. Writes a new
.diffor.patchup to 8 MiB. The patch always describes the original strings, including BOMs, line endings and final newline differences; ignore options affectcomparison_statsonly. Primary counts describe line content, with terminator changes reported separately. The adapter verifies that patch replay reconstructs the right input from the left. Header labels are fixedaandb. Large differences can produce coarse rewrite hunks; minimality is not guaranteed. Neither source is modified or patched.Each other input: at most 128 MiB.
GIF inspection: 32 MiB, 1000 source frames, 8192 per side and 32 megapixels per screen or patch. Reads headers without verifying LZW or pixels. Frame results are paginated; comments, application text and palette colors are excluded.
GIF extraction: at most 200 selected PNGs, 128 Mi decoded patch pixels and 300 million walked screen pixels. Each PNG is at most 32 MiB and the total PNG output at most 256 MiB; the upstream working-buffer admission also applies. Strict decoding refuses partial frames. Composited mode applies preceding disposal; stored mode returns patches. Output pixels are checked after PNG encoding, and a local timing manifest lists every frame. Needs a local browser.
Image tracing: still JPEG/PNG/WebP, at most 4096 per side and 4 megapixels. Single-color, lossy SVG shape approximation for logos or line art; not photo reconstruction. At most 100000 boundary edges, 1000 contours and 400000 SVG bytes. Passive path structure and rendered path pixels are checked.
Stacking: 2–8 opaque, equal-size still JPEG/PNG/WebP frames, up to 128 MiB combined, 4096 per side and 4 megapixels. No alignment, resizing, focus stacking or RAW development. Uses encoded 8-bit SDR RGB; PNG pixels are lossless after stacking, JPEG is lossy. Both stacking and tracing require the local browser.
Redaction: explicit 0-based integer rectangles in the decoded display image. Expected dimensions must match exactly; rectangles cannot be clipped. Up to 100 regions, 16384 per side, 32 megapixels and 128 million rectangle pixels including overlaps. Solid black fill only, flattened PNG, with all decoded pixels checked. Covered pixels are exactly opaque black; outside alpha is retained and visible colors are within one 8-bit step of the decoded source. The new raster is 8-bit SDR and excludes source metadata. Does not locate sensitive content; review coverage before sharing. Requires the local browser.
Passwords: cryptographic generation into a new plaintext
.txt, one secret per line, at most 100 results and 64 KiB. Defaults to 24 characters; passphrase mode defaults to six EFF words. Settings come from local JSON up to 16 KiB. Secrets, secret hashes and samples never appear in tool results. No browser or vault.Compression: up to 80 megapixels and two minutes per image.
automay adjust the output extension to match the selected format. Other modes require the output extension to match the actual bytes, including an unchanged original.Compression may resize an image unless
allow_resizeisfalse. A file that already meets the target can pass through unchanged, retaining its metadata. Use metadata removal when that is part of the task.Metadata removal can retain animation in PNG and WebP because it edits their containers; compression refuses animation rather than flattening it.
PDF splitting creates new PDFs. Document tags and metadata may be removed; digital signatures do not survive as valid signatures. Output page counts are verified. Bookmark preservation is enabled by default where supported.
Metadata removal retains orientation and ICC profiles by default to preserve appearance. Set
keep_orientationandkeep_icctofalseto remove those supported fields too; display orientation or colors may change. It does not establish that an image is anonymous.
Downloading a release or installing a browser uses the network. Processing files through this adapter does not send their bytes over the network. The agent and its host still receive paths, settings, summaries, and errors. The adapter needs no account or API key.
See the plugin privacy notice for the data handled by the adapter and the separate responsibilities of the agent host.
The compressor detects common browser installations. Set ABOX_BROWSER_PATH
to an existing browser executable if needed. The browser's sandbox must work on
the host OS; Linux detection prefers installed stable Chrome over generic
Chromium builds. The plugin does not download a browser during processing.
This plugin and the website's development MCP
This plugin runs file operations locally over MCP stdio. The separate website
catalogue at mcp-dev.abox.tools/mcp exposes
find_browser_tools: it accepts a public search query, locale, and limit, then
returns tool links and an interactive catalogue. It accepts no files or filenames
and does not process files. Its source is the website's
development catalogue worker.
The mcp-dev endpoint is for development. This repository's release workflow
does not deploy the website or publish a production catalogue endpoint.
For directory submissions and MCP registration, see Publishing.
For Gemini CLI, Vercel skills.sh, Cursor and other distribution options, see
Platform support and publishing.
For additional directories, local distribution and their account or licensing
requirements, see Other sharing platforms.
Developer setup and other MCP hosts
Use the release bundle for installation without development tools. To develop from a source checkout, install Node.js 22.15 or later, then run:
npm ci --ignore-scripts
npm test
npm run test:browser
npm run doctorSource setup downloads npm dependencies. The source checkout's mcp.json uses
Node from the host; release packaging replaces it with the bundled executable.
A developer can add this repository marketplace with
codex plugin marketplace add A-Box-of-Tools/abox-tools-plugin, then install it
in the desktop app and run Setup in the installed copy. See the
official OpenAI packaging guide.
For another host supporting local MCP stdio, point its configuration at the extracted bundle's executable and server script using absolute paths:
{
"mcpServers": {
"abox": {
"command": "/absolute/path/to/bundle/runtime/node",
"args": ["/absolute/path/to/bundle/bin/abox-mcp.mjs"]
}
}
}On Windows, use runtime/node.exe. Escape backslashes in JSON or use forward
slashes. A source checkout can use node instead of the bundled executable.
Follow the host's own configuration format; do not replace unrelated settings.
Maintain the reused code
To refresh the pinned website sources from a local website checkout:
npm run sync-upstream -- --source /absolute/path/to/etoolboxReview the vendor diff and provenance, retain license notices, and run the checks
above. A v* tag starts .github/workflows/release.yml: it tests, builds all four
platform bundles, builds a universal MCPB, and checks extracted MCP execution on
all four platforms before publishing the GitHub Release. A successful tagged
release then publishes its verified metadata to the Official MCP Registry using
GitHub's short-lived identity token. Claude and OpenAI directory reviews remain
separate submissions; see Publishing.
Available Tools
73 toolsabox_audio_editEdit local audioA
Reverse, change speed with optional pitch preservation, apply gain or peak-normalize admitted PCM16/Float32 WAV, MP3 Layer III or AAC-LC ADTS/MP4/M4A/MOV audio. Compressed input is admitted and decoded in bounded packets. Writes PCM16 or Float32 WAV, verifies all encoded samples and reports clipping and bounded decoder priming omissions. Uses the existing website effects and local browser without network access.
Inputs: input_path (required), output_path (required), bits, speed, +5 more.
abox_audio_extractExtract local audioA
Extract admitted MP3 or AAC-LC audio into a new WAV, optionally mixing to mono, or copy AAC-LC packets exactly into a new audio-only M4A. Accepts bounded ordinary MP4/M4A/MOV audio tracks and AAC ADTS; ignores picture payloads and never decodes video. M4A copy needs no browser and refuses bits/channels controls. WAV uses bounded packet decoding in the installed local browser. No runtime encoder or dependency download.
Inputs: input_path (required), output_path (required), bits, format, +1 more.
abox_audio_trimTrim local audioA
Keep ordered time ranges (including repeats) or cut marked ranges from admitted WAV, MP3 Layer III or AAC-LC audio. Fade joins by 5 ms by default; set fade_ms:0 for no fades. Times must fit the actual decoded audio, which can omit bounded priming samples. Source cut mode omits gaps of at most 1 ms. Writes a new WAV and verifies every encoded sample. Requires a local browser.
Inputs: ranges (required), input_path (required), output_path (required), bits, +2 more.
abox_avif_convertConvert a local AVIF still imageA
Convert one admitted reduced-header AV1 still AVIF to a new PNG, JPEG or WebP using the website browser codecs. Inspects AV1 sequence and frame display dimensions before decoding and compares every output pixel. Refuses animation, movie tracks and unsupported derived layouts. Source metadata is omitted; color, HDR and precision may change. Requires a local browser.
Inputs: input_path (required), output_path (required), format, quality.
abox_barcode_generateCreate a local barcodeA
Read exact payload text from a local file and create a verified SVG or PNG Code 128, EAN-13, UPC-A, EAN-8, ITF-14, ITF or Code 39 barcode. Retail check digits are computed or validated; invalid supplied digits are refused. Source-defined quiet zones and optional human-readable labels. Verification capacity can limit long inputs. PNG requires a local browser. Payload and completed digits are not returned.
Inputs: input_path (required), output_path (required), text, scale, +6 more.
abox_base64Encode or decode a local Base64 fileA
Encode arbitrary local file bytes as Base64 text or decode Base64 into a new binary file using the existing abox.tools byte codec. Supports standard padded or URL-safe unpadded encoding. Relaxed decoding accepts whitespace, either alphabet and missing padding; canonical decoding requires the requested exact spelling and zero unused bits. Supports empty files, verifies a byte round trip, and never returns file contents.
Inputs: mode (required), input_path (required), output_path (required), url_safe, +1 more.
abox_business_profilePreview a local business profileA
Render an illustrative business listing preview from a local JSON configuration into a passive SVG or PNG, using the website profile engine. Optional local photo is re-encoded. Does not contact or publish to Google or verify a real listing. Config text remains in the output file. Requires a local browser.
Inputs: config_path (required), output_path (required), scale, format, +1 more.
abox_camera_sessionOpen a direct remote camera windowA
Open the local companion for abox.tools Remote Camera as host or viewer. The person clicks Start or Connect, grants camera permission, and approves viewers in the window. Pairing uses the existing abox.tools service; live media goes directly between peers with no relay or recording. No capture begins on opening the window. Pairing metadata reaches the service; no frames, notes or pairing secrets are returned to the agent.
Inputs: role (required), room_name, ttl_minutes.
abox_capabilitiesabox.tools local capabilitiesARead-onlyIdempotent
List supported local operations, limits, and installed browser availability. Does not read user files.
Inputs: no named parameters.
abox_code_formatFormat local HTML, CSS or YAMLA
Pretty-print HTML/CSS/YAML or minify supported HTML/CSS with the existing website engines. Verifies protected raw text, supported syntax tokens or YAML values before saving. HTML formatting can change ordinary whitespace and implicit closing; this is not HTML sanitization or a promise of identical rendering. Never executes input or fetches linked resources. Requires no browser.
Inputs: language (required), input_path (required), output_path (required), indent, +1 more.
abox_code_readRead a code in a local imageA
Scan a still local JPEG, PNG or WebP for one QR code or supported linear barcode using the website readers. Write decoded text and parsed fields only into a new local JSON report. Tool results contain found/symbology and geometry, never payload text or URLs; links are never opened. A no-code image produces a found:false report. Requires a local browser.
Inputs: input_path (required), output_path (required), thorough.
abox_dicom_inspectInspect a local DICOM imageARead-onlyIdempotent
Inspect bounded flat PS3.10 DICOM files in known native transfer syntaxes or the strict one-frame RLE/JPEG-lossless subsets. Checks compressed geometry and complete stream structure before source decoding. Returns technical shape and counts without patient names, dates, private values or instance identifiers. Sequences and unsupported transforms are refused. Requires no browser.
Inputs: input_path (required).
abox_dicom_renderRender a local DICOM frameA
Render one admitted integer monochrome or unsigned 8-bit RGB DICOM frame into PNG with an explicit or full-range technical window. Supports native pixels and strict one-frame/one-fragment RLE or JPEG-lossless. Independently checks stored samples and every output pixel. No diagnosis or clinical preset; burned-in identifiers can remain. Unsupported streams or source-decoder discrepancies are refused. Requires a local browser.
Inputs: input_path (required), output_path (required), frame, invert, +2 more.
abox_document_scanScan local document imagesA
Perspective-correct explicit document corners from a local JSON file, then clean up photo, color, grayscale or monochrome pages into a new PDF or one PNG. Source warping insets edges by 3–6 pixels. Does not detect corners or perform OCR. Verifies rendered output pixels or PDF image payloads and page layout. Requires a local browser.
Inputs: config_path (required), input_paths (required), output_path (required), dpi, +7 more.
abox_exif_editEdit local image EXIF tagsA
Set or remove selected EXIF tags in a JPEG, PNG or WebP using a bounded local JSON edits file. Reparse and verify exact raw tags, retained thumbnail, compressed picture payload and other container blocks. Other metadata remains; this is not anonymization. Rebuilt EXIF can invalidate undocumented maker-note offsets. Values never enter tool arguments or results. Requires no browser.
Inputs: edits_path (required), input_path (required), output_path (required).
abox_exif_inspectInspect local image metadataARead-onlyIdempotent
Read the metadata inventory of a local JPEG, PNG or WebP without modifying it. Reports presence and counts of supported metadata blocks; private tag values and image bytes are not returned.
Inputs: input_path (required).
abox_exif_removeRemove local image metadataA
Remove supported metadata from JPEG, PNG, or WebP containers without re-encoding image data. Re-inspects output. Defaults preserve an orientation-only EXIF block and ICC color profile when present. Writes a new local file; does not anonymize visible content.
Inputs: input_path (required), output_path (required), keep_icc, keep_orientation.
abox_file_hashCalculate local file checksumsARead-onlyIdempotent
Stream a local file through the existing abox.tools checksum engines. Supports empty files and files up to 8 GiB. Returns selected hexadecimal digests without file contents or modifications. SHA-256 is the default.
Inputs: input_path (required), algorithms.
abox_gif_createCreate a local animated GIFA
Turn 1 to 32 ordered still JPEG, PNG or WebP images into a new GIF with per-frame timing, size, fit, palette, dithering, transparency and looping controls. Verifies complete LZW streams, timing, palette pixels and composited frames. GIF color quantization, resizing and centisecond timing are lossy. Requires a local browser.
Inputs: input_paths (required), output_path (required), fit, loop, +11 more.
abox_gif_inspectInspect a local GIFARead-onlyIdempotent
Inspect bounded GIF headers, frame rectangles, timing, disposal and palette counts using the website analyzer. Does not decode or verify LZW pixels. Reports structural damage without modifying the input. Private comments, application text and palette values are excluded. Frame summaries are paginated using a zero-based offset.
Inputs: input_path (required), frame_limit, frame_offset.
abox_gif_splitExtract local GIF framesA
Extract selected or all GIF frames into a new local directory of lossless PNGs with a timing manifest. Default composited mode applies preceding frames and disposal; stored mode exports individual patches. Strict decoding refuses damaged or partial frames. Verifies each PNG pixel buffer. Requires the local browser for PNG encoding; does not scale frames.
Inputs: input_path (required), output_dir (required), mode, frames.
abox_gif_to_mp4Convert a local GIF to MP4A
Encode one verified GIF playback cycle into a silent H.264 MP4, preserving source frame timing and flattening transparency over a chosen background. Odd dimensions are padded. Verifies all output frames and timing. Requires a local browser with a supported native H.264 encoder; no external encoder download.
Inputs: input_path (required), output_path (required), bitrate, background.
abox_heic_convertConvert local HEIC photosA
Convert admitted HEVC still HEIC images, including one-level tiled grids, into a new directory of JPEG, PNG or WebP images. Uses the unchanged bundled website codec offline. Inspects all item extents, HEVC sequence dimensions and reference budgets before decode; verifies output dimensions and compares every output pixel. Includes all admitted top-level pictures. Metadata is omitted and output is 8-bit SDR; JPEG/WebP are lossy. Requires a local browser.
Inputs: input_path (required), output_dir (required), format, quality.
abox_height_compareDraw a local height comparisonA
Render locally configured figures, names and heights into a passive SVG or PNG using the existing website chart engine. Supports person silhouettes and plain object rectangles, technical ruler options and explicit units. Input names and heights remain in the output file. Requires a local browser.
Inputs: config_path (required), output_path (required), scale, format.
abox_id_photoMake a local ID photo and print sheetA
Apply custom numeric photo rules and explicit crown, chin and eye landmarks from a local JSON settings file. Writes a JPEG photo, print sheet and measurement report into a new directory. No face detection, country rules or official approval. Checks geometry, DPI, output dimensions and lossy JPEG pixel error. Requires a local browser.
Inputs: input_path (required), output_dir (required), settings_path (required).
abox_image_compressCompress a local imageA
Compress a still JPEG, PNG, or WebP to a target byte count using the existing abox.tools search and local browser codecs. Writes a new local file. Check fitted; a target can be missed. Already-small files pass through with metadata. Auto can adjust the output extension.
Inputs: input_path (required), output_path (required), target_bytes (required), format, +1 more.
abox_image_convertConvert a local imageA
Convert a still JPEG, PNG, or WebP into JPEG, PNG, or WebP using the existing abox.tools codecs. JPEG transparency is filled with the requested background. Writes a new local image and verifies its format and dimensions. Re-encoding may remove metadata.
Inputs: format (required), input_path (required), output_path (required), quality, +1 more.
abox_image_data_uriEmbed a local image as a data URIA
Encode original image bytes into a new local .txt data URI, .css rule/custom property, .html image tag or .md image. Uses signature-based type detection and verifies byte preservation. Standalone UTF-8 SVG URIs can use percent encoding; SVG embedding shapes use Base64 to preserve bytes through their syntax. Keeps source metadata and SVG markup; does not verify rendering or sanitize SVG. Returns paths, sizes and metadata counts.
Inputs: input_path (required), output_path (required), shape, identifier, +1 more.
abox_image_layoutCombine local images into a layoutA
Arrange 2 to 32 still JPEG, PNG or WebP images in input order as a grid or horizontal/vertical strip using the existing abox.tools engine. Supports gaps, padding, contain or cover, cell ratios and transparency. Writes a new PNG/JPEG/WebP up to 8192 pixels per side and 32 megapixels. Grid defaults to two square columns; strips preserve original ratios. Re-encoding can change pixels and removes source metadata.
Inputs: input_paths (required), output_path (required), fit, gap, +8 more.
abox_image_redactRedact regions in a local imageA
Permanently replace explicitly selected image rectangles with opaque black pixels using the website redaction engine. Read expected decoded image dimensions and rectangle coordinates from a local JSON file. Accepts still JPEG, PNG or WebP and writes a flattened PNG without copying source metadata. Verifies every decoded output pixel. Does not detect sensitive content or prove the chosen regions cover it. Requires the local browser.
Inputs: input_path (required), output_path (required), regions_path (required).
abox_image_resizeResize a local imageA
Resize a still JPEG, PNG, or WebP with the existing abox.tools geometry and codecs. Specify width, height, or both. Contain fits the whole image; cover crops centrally. Upscaling is disabled by default. Writes and verifies a new local image; re-encoding may remove metadata.
Inputs: input_path (required), output_path (required), fit, width, +5 more.
abox_image_stackStack local imagesA
Combine 2 to 8 equal-size opaque still JPEG, PNG or WebP images using average, median, sigma-clipped, brightest, darkest or additive stacking from the website engine. No alignment, rescaling, RAW decoding or focus stacking in this version. Writes and verifies a new PNG/JPEG. Images must already line up; requires a local browser.
Inputs: input_paths (required), output_path (required), gain, kappa, +3 more.
abox_images_to_pdfCreate a PDF from local imagesA
Place still JPEG, PNG or WebP images into a new PDF in the requested order, one per page. Supports paper sizes, margins and lossless or JPEG encoding with local browser codecs. Reopens and verifies page counts and dimensions. Keep mode can embed original JPEG metadata.
Inputs: input_paths (required), output_path (required), dpi, fit, +7 more.
abox_images_to_videoMake a local video from imagesA
Encode ordered still JPEG, PNG or WebP images into a silent H.264 MP4 with size, timing, fit and quality controls. Verifies all output frames, dimensions and timing. Limited to 60 seconds, 1800 frames and 1080p pixels. Requires a local browser with a supported native H.264 encoder; no external encoder download.
Inputs: input_paths (required), output_path (required), fit, fps, +6 more.
abox_image_to_icoCreate a local ICO iconA
Convert a still JPEG, PNG or WebP into one ICO containing requested icon sizes. Uses the existing abox.tools image rendering and ICO encoder, with padding, crop or stretch and transparent or solid background. Writes a new ICO and verifies its directory and image entries.
Inputs: input_path (required), output_path (required), fit, sizes, +2 more.
abox_image_traceTrace a local image into SVGA
Trace a still JPEG, PNG or WebP into a single-color SVG path using the website mask, contour and curve engines. Best suited to logos and line art; this is a lossy shape interpretation. Supports automatic or explicit threshold, inversion and detail. Refuses overly complex traces. Writes and verifies a static path-only SVG; requires a local browser.
Inputs: input_path (required), output_path (required), fill, detail, +4 more.
abox_json_formatFormat a local JSON fileA
Pretty-print or minify UTF-8 JSON using the existing abox.tools parser. Preserves numeric spellings, large integers, duplicate keys, escaped string tokens and object key order. Optional natural key sorting. Writes a new JSON file with a final newline and verifies tokens and structure. Input up to 8 MiB and 256 nesting levels; output up to 32 MiB. File contents are not returned.
Inputs: input_path (required), output_path (required), indent, minify, +1 more.
abox_live_statusCheck local live-session statusBRead-onlyIdempotent
Return only session types, safe state, peer counts, capture kind, expiry and saved-file counts. Does not return pairing codes, invitations, received contents, device labels or media. Sessions belong to this adapter process.
Inputs: session_id.
abox_live_stopClose a local live-session windowB
Close the selected companion browser, release capture and peer connections, and remove incomplete receive files. Completed local saves remain. Closing an already closed session is harmless.
Inputs: session_id (required).
abox_markdown_htmlRender local Markdown to HTMLA
Render the website small Markdown dialect into a new standalone HTML file with a restrictive CSP. Verifies passive tag nesting and projected source text. Supports simple headings, flat lists, quotes, code, emphasis and safe-scheme links; no raw HTML, image rendering or automatic requests. Links remain clickable in the saved file and are never opened by the adapter. Requires no browser.
Inputs: input_path (required), output_path (required).
abox_password_generateGenerate passwords into a local fileA
Generate cryptographically random passwords or EFF-wordlist passphrases with the existing website engine. Writes secrets only to a new local .txt file; never returns secrets, secret hashes or samples. Defaults to one 24-character password. Optional bounded local JSON configuration selects supported settings. The output is plaintext; this is not a password vault.
Inputs: output_path (required), config_path.
abox_pdf_compressCompress a local PDFA
Recompress supported PDF images and rewrite structure using the existing abox.tools engine. Presets trade image resolution and quality for size. Keeps page content streams and verifies page order and geometry; image pixels can change. Reports actual savings and may produce a larger file. No byte-target search. Writes a new unencrypted PDF; signatures become invalid.
Inputs: input_path (required), output_path (required), dpi, preset, +2 more.
abox_pdf_mergeMerge local PDFsA
Combine 2 to 32 unencrypted local PDFs in input order into a new PDF. Total inputs are limited to 128 MiB and 5000 pages. Reopens the output and verifies its page count. Document tags, labels, attachments and metadata may be omitted; signatures become invalid.
Inputs: input_paths (required), output_path (required), keep_bookmarks.
abox_pdf_protectProtect a local PDFA
Encrypt an unencrypted or blank-open-password PDF with revision 6 AES-256 (default) or revision 4 AES-128, using passwords read from local UTF-8 files. Optional print/copy/change permission flags are advisory and depend on the viewer. Reopens and decrypts the new PDF to verify its reachable object graph and page count. Passwords never enter tool arguments or results. No password guessing.
Inputs: input_path (required), output_path (required), revision, restrict_copy, +4 more.
abox_pdf_redactPermanently redact local PDF regionsA
Render every admitted unencrypted PDF page locally, replace explicitly selected rectangles with opaque black pixels, and write a fresh lossless image-only PDF. Local JSON supplies exact displayed page geometry and top-left point coordinates. Verifies every saved RGB sample, black masks and the new object graph; no source text, attachments, links, annotations or metadata objects are copied. All pages are flattened, searchable text and signatures are lost, and size can increase. Does not identify sensitive areas or prove selected coverage. Requires a local browser.
Inputs: input_path (required), output_path (required), regions_path (required), dpi.
abox_pdf_rotateRotate local PDF pagesA
Rotate selected pages clockwise by 90, 180 or 270 degrees while retaining every page in its original order. Reopens the new PDF and verifies page rotations and geometry. Document-level structure may be omitted; signatures become invalid.
Inputs: degrees (required), input_path (required), output_path (required), pages, +1 more.
abox_pdf_selectSelect and reorder local PDF pagesA
Extract, reorder or duplicate pages from an unencrypted local PDF into one new PDF. Page terms retain their order and duplicates; ranges expand ascending. Example: 3,1-2,3 produces four pages. Reopens the output and verifies its page count. Document-level structure may be omitted; signatures become invalid.
Inputs: pages (required), input_path (required), output_path (required), keep_bookmarks.
abox_pdf_splitSplit a local PDFA
Split an unencrypted local PDF into one file per page, batches, or explicit range groups (1-based). Writes a new directory and reopens every PDF to count pages. Preserves page content but omits document tags, labels, attachments, metadata and unsupported actions; signatures become invalid.
Inputs: input_path (required), output_dir (required), mode, ranges, +2 more.
abox_pdf_to_csvExtract local PDF tables to CSVA
Infer selectable-text tables in an unencrypted local PDF. Writes UTF-8 BOM CSV, comma delimiter, CRLF, blank rows between tables. No OCR. Dates and amounts may be normalized; ambiguous auto dates use day/month/year. Formula-like text is escaped by default. Review the CSV; structural verification does not prove accuracy. Conservative filter preflight accepts unfiltered/Flate without predictors and can also refuse blocked PDF names printed in text.
Inputs: input_path (required), output_path (required), pages, date_order, +3 more.
abox_pdf_unlockUnlock a local PDFA
Use a supplied local UTF-8 password file or a blank password to write a new unencrypted PDF with the existing website decryptor. Supports the source engine encryption revisions and verifies the reachable object graph after rewriting. Does not guess passwords. Standard metadata removal defaults to true; visible content and embedded metadata can remain. Signatures become invalid.
Inputs: input_path (required), output_path (required), password_file, remove_metadata.
abox_pdf_watermarkWatermark a local PDFA
Overlay one line of rasterized text on all pages or the first page of a local unencrypted PDF. Supports centered diagonal or horizontal stamps and tiled repeats. Uses installed browser fonts. Writes a new PDF and verifies stamp placement and page geometry. A watermark does not redact content or prevent editing; signatures become invalid.
Inputs: text (required), input_path (required), output_path (required), size, +5 more.
abox_qr_generateCreate a local QR codeA
Read exact UTF-8 payload text from a local file and generate a new SVG or PNG QR code using the website encoder. No redirect or hosted QR service. Verify by decoding the generated modules; PNG also verifies rendered pixels. SVG requires no browser; PNG uses the installed local browser. Payload contents never enter the tool result. Includes a minimum four-module quiet zone.
Inputs: input_path (required), output_path (required), level, quiet, +4 more.
abox_receipt_extractExtract a receipt into a local reportA
Run bundled English printed-text OCR on a local JPEG, PNG or WebP and write suggested receipt fields into JSON or CSV. All fields require human review; verification covers report structure, not recognition accuracy. Text, merchants and amounts stay in the local report. No uploads, model downloads, currency lookup or account access. Requires a local browser.
Inputs: input_path (required), output_path (required), format.
abox_svg_to_imageRasterize a local SVGA
Render a local static self-contained SVG into PNG, JPEG or WebP using the existing abox.tools sizing and codecs. Refuses active content, animation and external resources. Supports intrinsic dimensions or a requested box, transparency and JPEG background. Writes and verifies a new raster image. Installed fonts can affect appearance.
Inputs: input_path (required), output_path (required), fit, width, +4 more.
abox_text_diffCompare local text filesA
Compare two UTF-8 files and write a new unified .diff/.patch using the website bounded Myers engine. Verify that applying the patch to the left file exactly reconstructs the right, including line endings and final newlines. Ignore options affect comparison summaries only; the exported patch always describes the original files. Large rewrites can use coarse hunks. Returns counts and paths without source lines.
Inputs: left_path (required), right_path (required), output_path (required), ignore_case, +3 more.
abox_video_compressCompress a local H.264 videoA
Decode an admitted H.264 MP4/MOV locally and re-encode a new MP4 toward a byte target using the website engine. Checks sequence headers and slice prefixes before decoding and verifies all generated frames and timestamps. Copies supported audio packets exactly when requested. Check fitted; the target can be missed and size or color can change. Requires an installed browser with native H.264 decode/encode support.
Inputs: input_path (required), output_path (required), target_bytes (required), max_side, +1 more.
abox_video_cropCrop a local H.264 videoA
Crop an admitted H.264 MP4/MOV to exact local JSON coordinates in the decoded display image, then write a re-encoded MP4. Checks source coded geometry before decode, verifies all output frames/times and any copied audio packets. Color can change and unselected metadata is omitted. Requires a local browser with native H.264 support.
Inputs: crop_path (required), input_path (required), output_path (required), quality, +1 more.
abox_video_frameExtract a local video frameA
Decode the admitted H.264 source frame at or before the requested time and save a new lossless PNG after source orientation. Checks coded geometry before decoding and compares every PNG pixel. Does not include audio, source text or metadata in the result. Requires a local browser with native H.264 decoding.
Inputs: input_path (required), output_path (required), time_seconds.
abox_video_inspectInspect a local MP4 or MOVARead-onlyIdempotent
Inspect bounded MP4/MOV sample tables, track geometry, codecs and timing without decoding video or audio. Returns counts and technical headers without packet contents or metadata text. Incoming nonidentity edit lists are refused to avoid exposing hidden media. Requires no browser.
Inputs: input_path (required).
abox_video_joinJoin local videos without re-encodingA
Join 2 to 8 compatible MP4/MOV files in input order into a new MP4. Codec descriptions, dimensions, orientation and requested audio must agree. Verifies copied packet bytes, track descriptions and edit lists; performs no video or audio decoding. Incoming nonidentity edit lists are refused. Requires no browser.
Inputs: input_paths (required), output_path (required), keep_audio.
abox_video_remuxRepackage a local video as MP4A
Copy admitted H.264 MP4/MOV picture packets and optional AAC sound into a new MP4 using the website conversion copy path. Preserves packet bytes, timing, descriptions and orientation; no re-encoding fallback. Fragmented or edited timelines and complex transforms are refused. Packet verification does not prove codec playback compatibility. Requires no browser.
Inputs: input_path (required), output_path (required), keep_audio.
abox_video_reverseReverse a local H.264 videoA
Reverse admitted video frames into a new re-encoded H.264 MP4 and verify output timing and decoding. Silent by default. Explicit keep_audio:true also decodes and reverses matching-duration AAC using bounded packet audio processing and requires a native AAC encoder; requested sound is never silently dropped. Coded input geometry is checked before decoding. Requires a local browser and native codecs.
Inputs: input_path (required), output_path (required), quality, keep_audio.
abox_video_rotateRotate a local video without re-encodingA
Copy an admitted MP4/MOV video into a new MP4 with a 90, 180 or 270 degree display matrix rotation. Verifies every packet, timeline, description and matrix without decoding. Standard orientation and unsquashed geometry only; fragmented or edited timelines are refused. Sound must be AAC or explicitly omitted. Pixels are not baked into the new orientation; player support varies. Requires no browser.
Inputs: input_path (required), output_path (required), degrees, keep_audio.
abox_video_rotate_bakeBake local video rotation into pixelsA
Decode admitted H.264 video and permanently turn its pixels by 90, 180 or 270 degrees into a newly encoded MP4 with identity display matrix. Verifies all generated frames and timing and exact copied AAC audio when requested. This applies source orientation as well as the additional turn; color and precision can change. Requires a local browser and native H.264 encoding.
Inputs: input_path (required), output_path (required), degrees, max_side, +1 more.
abox_video_timelapseMake a local time-lapse videoA
Speed up admitted H.264 video into a silent new H.264 MP4 with explicit speed, frame rate, maximum side and quality. Reuses the website frame-selection and encoding engines, verifies decoded output frames and timing, and refuses fewer than two planned frames. Source audio and metadata are omitted. Requires a local browser and native H.264 encoding.
Inputs: input_path (required), output_path (required), fps, speed, +2 more.
abox_video_to_gifConvert local video to GIFA
Decode an admitted H.264 time range and write a bounded animated GIF using the website palette and encoding engines. Supports sampling rate, size, color count, dithering and looping. Verifies complete GIF streams, frame timing and quantized pixels. At most 200 frames and 16 million total frame pixels; color and timing are lossy, and sound is omitted. Requires a local browser.
Inputs: input_path (required), output_path (required), fps, loop, +5 more.
abox_video_trimTrim local video without re-encodingA
Copy selected MP4/MOV ranges into a new MP4 using the existing website sample-copy engine. Verifies every copied packet and output edit list. First non-keyframe cuts require explicit allow_preroll:true; later sections must start on keyframes. Encoded boundary footage can remain hidden by edit lists, so this is not redaction. Incoming edited timelines are refused. Requires no browser.
Inputs: ranges (required), input_path (required), output_path (required), keep_audio, +1 more.
abox_voice_oncall_sessionOpen a direct voice inbox windowA
Open the local companion for abox.tools Voice Oncall as host or sender. The host listens and moderates incoming senders; a sender grants microphone permission and holds Talk. Start, invitations, optional passwords and approvals stay in the visible window. Existing abox.tools pairing receives negotiation metadata; voice goes directly between reachable peers, with no relay, discovery or recording. No sound or pairing secrets are returned to the agent.
Inputs: role (required), room_name, ttl_minutes.
abox_walkie_sessionOpen a direct voice broadcast windowA
Open the local companion for abox.tools Walkie Talkie as host or listener. The person starts pairing in the window. A host grants microphone permission and holds Talk to transmit; listeners need no microphone. The existing pairing service sees negotiation metadata; voice travels directly over encrypted host-candidate WebRTC with no relay, discovery or recording. Invitations and voice remain outside agent context.
Inputs: role (required), room_name, ttl_minutes.
abox_xml_formatFormat a local XML fileA
Pretty-print or minify local UTF-8 XML using the existing website parser and printer. Preserves mixed content and xml:space behavior. Rejects DTDs and custom entities; no external resource resolution. Writes a new .xml file and verifies document structure and text. Formatting can change insignificant whitespace and quote spelling.
Inputs: input_path (required), output_path (required), indent, minify.
abox_xml_jsonConvert local XML and JSONA
Convert XML to JSON using @ attributes, #text and repeated-child arrays, or JSON to XML under a fixed root element. Verifies the exact existing source mapping, which is lossy: XML values are strings, mixed child/text order and comments can be lost, and JSON null/empty containers collapse. Refuses ambiguous name collisions, DTDs and custom entities. Contents remain in the local output. Requires no browser.
Inputs: direction (required), input_path (required), output_path (required), indent.
abox_yaml_jsonConvert local YAML and JSON filesA
Convert a local UTF-8 file between the website-supported YAML subset and JSON. Preserves ordered values, duplicate keys and large number tokens; formatting, string escapes and comments may change. YAML anchors, aliases, custom tags and multiple documents are unsupported. Optional natural key sorting on YAML to JSON. Writes and verifies a new .json or .yaml/.yml file; no contents returned.
Inputs: direction (required), input_path (required), output_path (required), indent, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 73 tools
Most tools have clearly distinct resource/action targets, and descriptions carefully separate similar operations such as video_remux vs video_compress vs video_trim, or video_rotate vs video_rotate_bake. With 73 tools some overlap is inevitable, especially among video, image, PDF, and session helpers, but boundaries are usually explicit.
All tool names use the abox_ prefix and lower snake_case, making the set predictable and easy to scan. Most follow a domain_action pattern, though a few conversion-style names such as images_to_pdf, yaml_json, and xml_json deviate slightly from a pure verb_noun convention.
Seventy-three tools is far beyond an appropriate single-server surface, even for a broad local media/document toolkit. The count makes discovery, selection, and maintenance unwieldy, and many operations would be better grouped into narrower servers or more composite workflows.
The surface is unusually broad, covering video, audio, images, PDFs, metadata, QR/barcodes, text formats, OCR, and live sessions with many lifecycle operations. There are still minor gaps, such as general PDF text extraction, broader OCR, and some obvious image/video editing conveniences, but the core domains are well represented.
Maintenance
Related MCP Connectors
PDF and image tools for AI agents: compress, merge, split, OCR, sign. Runs locally, never uploads.
Image & PDF tools for AI agents: compress, convert, resize, PDF, AI vision, pipeline.
Image and PDF toolkit: convert to AVIF/WebP/JXL, resize, crop, remove backgrounds, optimize PDFs.
Compress, convert, resize, crop, upscale, OCR and remove backgrounds from images.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to process images locally via file paths—converting, resizing, removing backgrounds, smart cropping, upscaling, reading or stripping metadata, and batch processing—without files ever leaving the device.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to perform comprehensive PDF operations locally, including compression, text extraction, PII redaction, page organization, splitting, merging, watermarking, creation, and form filling, all without cloud uploads.21 npm-
- AlicenseAqualityCmaintenanceEnables AI agents to perform local image operations such as circle cropping, cropping, resizing, compressing, converting, and inspecting images without uploading files or making network calls.761 npmMIT
- AlicenseAqualityBmaintenanceEnables AI assistants to perform local image resizing, watermarking, and EXIF/GPS metadata stripping for e-commerce and privacy compliance.329 npmMIT