Skip to main content
Glama

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-x64

Windows with an Intel or AMD 64-bit processor

macos-arm64

Mac with Apple silicon

macos-x64

Mac with an Intel processor

linux-x64

Linux with an Intel or AMD 64-bit processor

  1. 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.

  2. Open START-HERE.html inside 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.

  3. 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-plugin

Gemini 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-files

Then 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

abox_capabilities

none

Lists formats, limits, and defaults.

abox_image_compress

input_path, output_path, target_bytes

format: keep, auto, jpeg, png, webp; allow_resize

abox_image_resize

input_path, output_path, width and/or height

fit: contain or cover; allow_upscale: false; format, quality, background

abox_image_convert

input_path, output_path, format

jpeg, png, or webp; quality from 0 to 1; JPEG background

abox_pdf_split

input_path, output_dir

mode: each, every, ranges; pages_per_file; ranges; keep_bookmarks

abox_pdf_merge

input_paths, output_path

2–32 PDFs in input order; keep_bookmarks

abox_pdf_select

input_path, output_path, pages

Ordered terms such as 3,1-2,3; keep_bookmarks

abox_pdf_rotate

input_path, output_path, degrees

Clockwise 90, 180, or 270; pages defaults to all; retains every page

abox_images_to_pdf

input_paths, output_path

One image per page; page_size, orientation, fit, margin_mm, dpi, image_mode, quality, max_side, background

abox_exif_inspect

input_path

Read-only metadata inventory; does not return private tag values

abox_exif_remove

input_path, output_path

keep_orientation; keep_icc

abox_file_hash

input_path

algorithms: MD5, SHA-1, SHA-256 (default), SHA-384, SHA-512

abox_pdf_compress

input_path, output_path

preset: smallest, screen, print, gentle; optional dpi, quality, strip_metadata

abox_pdf_watermark

input_path, output_path, text

size, color, opacity, diagonal, tiled, first_page_only

abox_image_to_ico

input_path, output_path

sizes, fit: pad, crop, stretch; storage: auto, png, bmp; optional background

abox_svg_to_image

input_path, output_path

format: png, jpeg, webp; width, height, fit, quality, background

abox_image_layout

ordered input_paths, output_path

layout: grid, horizontal, vertical; width, grid columns, ratio, gap, padding, fit, format, quality, background

abox_pdf_to_csv

input_path, output_path

pages, table_index, date_order: auto, dmy, mdy; include_headers, spreadsheet_safe

abox_json_format

input_path, output_path

minify, indent: 2, 4, tab; sort_keys (opt-in natural sorting)

abox_base64

input_path, output_path, mode

encode or decode; url_safe; decoding canonical

abox_image_data_uri

input_path, output_path

shape: uri, css-rule, css-var, html, markdown; svg_encoding: auto or base64; optional CSS identifier

abox_yaml_json

input_path, output_path, direction

yaml-to-json or json-to-yaml; indent: 2 or 4; YAML-to-JSON sort_keys

abox_xml_format

input_path, output_path

minify; indent: 2, 4, tab

abox_qr_generate

UTF-8 payload input_path, output_path

format: svg (default) or png; level: L, M, Q, H; quiet, scale, foreground, background

abox_barcode_generate

UTF-8 payload input_path, output_path

symbology: code128, ean13, upca, ean8, itf14, itf, code39; format, scale, height, text, code39_check, colors

abox_text_diff

left_path, right_path, output_path

context_lines (0–100, default 3); ignore_whitespace, ignore_case, ignore_blank_lines affect comparison summaries only

abox_gif_inspect

input_path

Header-only timing, rectangles and budgets; optional zero-based frame_offset and frame_limit (default 20)

abox_gif_split

input_path, new output_dir

mode: composited (default) or stored; optional unique 1-based frames; PNGs and local timing manifest

abox_image_trace

input_path, .svg output_path

Single-color shape trace; threshold, invert, detail, corner_angle, min_area, fill

abox_image_stack

ordered input_paths, output_path

average, median, sigma, lighten, darken, add; equal-size opaque frames; PNG/JPEG

abox_image_redact

input_path, .png output_path, regions_path

Local JSON with expected decoded dimensions and integer rectangles; permanent opaque black fill

abox_password_generate

.txt output_path

Optional local JSON config_path; passwords or EFF passphrases; secrets excluded from responses

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

abox_code_read

read-code-image

One QR/barcode payload in a new local JSON report; never opens links or returns the payload

abox_gif_create

create-gif

Ordered still images to GIF with timing, palette and loop controls

abox_pdf_protect

protect-pdf

AES-256/AES-128 PDF security; exact passwords come from local files; viewer permission flags are advisory

abox_pdf_unlock

unlock-pdf

Supplied-password decryption to a new PDF; no password guessing

abox_audio_edit

edit-audio

Reverse, speed/pitch, gain or normalize an admitted PCM16/Float32 WAV

abox_audio_trim

trim-audio

Ordered kept ranges or cuts in WAV; configurable fades; encoded samples verified

abox_video_inspect

inspect-video

MP4/MOV sample tables and technical headers without decoding

abox_video_trim

trim-video

Copy admitted time ranges; hidden boundary packets can remain, so this is not redaction

abox_video_join

join-videos

Copy compatible MP4/MOV clips into a new MP4 without re-encoding

abox_video_rotate

rotate-video

Copy video packets with a clockwise display matrix; viewers must honor orientation

abox_video_remux

remux-video

Copy supported H.264/AAC MP4/MOV packets into MP4; no transcoding fallback

abox_document_scan

scan-document

Explicit local corner coordinates to cleaned PNG/PDF; no edge detection or OCR

abox_id_photo

make-id-photo

Custom rules and explicit landmarks to JPEG photo, print sheet and report; no official approval

abox_business_profile

preview-business-profile

Illustrative local SVG/PNG; does not access or publish a real listing

abox_height_compare

compare-heights

Locally configured silhouettes, names and measurements to SVG/PNG

abox_receipt_extract

extract-receipt

Bundled English OCR to local JSON/CSV; every suggested field needs review

abox_dicom_inspect

inspect-dicom

Technical headers without patient values for flat PS3.10 native/single-frame RLE files

abox_dicom_render

render-dicom

One technical PNG preview; burned-in identifiers remain possible

abox_images_to_video

images-to-video

Still images to silent H.264 MP4 with verified frames/timing

abox_gif_to_mp4

gif-to-mp4

One GIF cycle to silent H.264 MP4, with a solid background for transparency

abox_exif_edit

edit-exif

Explicit tag changes from local JSON; compressed picture and other metadata retained

abox_code_format

format-code

Format HTML/CSS/YAML or minify supported HTML/CSS; preserves active markup, not a sanitizer

abox_xml_json

convert-xml-json

Explicit lossy XML↔JSON mapping; verifies source mapping rather than semantic round-trip

abox_markdown_html

markdown-to-html

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

abox_heic_convert

convert-heic

Admitted HEVC still photos/grids to a new image directory; bundled offline codec and predecode coded/reference budgets

abox_avif_convert

convert-avif

One reduced-header AV1 still photo to JPEG/PNG/WebP; animation and unsupported geometry refused

abox_pdf_redact

redact-pdf

Explicit local point-coordinate masks to a fresh lossless image-only PDF; all pages flattened, no source objects copied

abox_audio_extract

extract-audio

Admitted sound to WAV, or exact AAC packet extraction from MP4/M4A/MOV to M4A without decoding video

abox_video_compress

compress-video

Re-encode admitted H.264 toward a byte target; report fitted honestly

abox_video_crop

crop-video

Exact displayed-image coordinates from local JSON to a re-encoded MP4

abox_video_frame

grab-video-frame

Frame at or before the requested time to a lossless PNG; every output pixel checked

abox_video_reverse

reverse-video

Re-encode reversed frames; silent by default, optional bounded AAC reversal/re-encoding

abox_video_timelapse

timelapse-video

Faster silent MP4 with explicit frame selection, rate and size

abox_video_to_gif

video-to-gif

Sampled video range to a bounded palette GIF; sound omitted

abox_video_rotate_bake

bake-video-rotation

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

abox_share_session

share-session

host preloads selected local text/files; reader requests approval and explicitly saves into a new output directory

abox_camera_session

camera-session

host grants video-only camera permission and approves viewers; viewer receives live video, without recording

abox_walkie_session

walkie-session

Microphone-granted host holds Talk; listener receives without microphone capture

abox_voice_oncall_session

voice-oncall-session

host receives/moderates callers with an optional UI password; microphone-granted sender holds Talk

abox_live_status

live-status

Safe counts/state/expiry for this adapter process; no invitations, received text or media

abox_live_stop

live-stop

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.json

A 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,3 produces 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 local manifest.json containing 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. keep can embed original JPEG streams with their metadata; remove metadata first when a clean document is required. lossless preserves decoded image pixels; jpeg re-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. smallest uses 96 DPI / 0.55 quality, screen 130 / 0.68, print 220 / 0.82, and gentle keeps resolution with 0.90 quality. dpi and quality can override those settings. It does not search for a byte target; check smaller and 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. auto stores 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 .txt for uri, .css for css-rule/css-var, .html for html, and .md for markdown. 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:space follow 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 .diff or .patch up to 8 MiB. The patch always describes the original strings, including BOMs, line endings and final newline differences; ignore options affect comparison_stats only. 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 fixed a and b. 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. auto may 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_resize is false. 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_orientation and keep_icc to false to 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 doctor

Source 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/etoolbox

Review 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 tools
abox_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 capabilitiesA
Read-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 imageA
Read-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 metadataA
Read-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 checksumsA
Read-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 GIFA
Read-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 statusB
Read-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_share_sessionOpen a direct text and file sharing windowA

Open a visible local browser companion for abox.tools Share Text. Host may preload local files or a UTF-8 text file. The person clicks Start or Connect and approves each reader in the window. Existing abox.tools pairing sees IP addresses, timing and negotiation metadata; content goes directly over encrypted host-candidate WebRTC with no relay or discovery. Receive saves need a new output_dir and an explicit Save click; contents and pairing secrets are never returned to the agent. Requires directly reachable peers and an active graphical desktop. The window expires after 30 minutes by default.

Inputs: role (required), room_name, text_path, output_dir, +2 more.

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 MOVA
Read-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

    A3.6/5.0

    Scored across 73 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count1/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers