Skip to main content
Glama

abox.tools for agents

Compress images, split PDFs, and remove image metadata with the existing abox.tools code. An agent supplies local paths and receives output paths and short JSON results. File bytes stay on your computer.

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 compression still needs an installed Edge, Chrome, or Chromium; PDF splitting and metadata removal do not.

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.2.1 Windows bundle extracts as abox-tools-0.2.1-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.

Ask the agent

  • “Compress this photo below 500 KB and save a new copy.”

  • “Split this PDF into one file per page.”

  • “Extract pages 1–3 and 4–6 as two PDFs.”

  • “Remove location and other image metadata, keeping its orientation and colors.”

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_pdf_split

input_path, output_dir

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

abox_exif_remove

input_path, output_path

keep_orientation; keep_icc

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 split-pdf --request-file /absolute/path/split.json
node bin/abox.mjs remove-exif --request-file /absolute/path/metadata.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: JPEG, PNG, and static WebP. Animated images are refused.

  • Metadata removal: JPEG, PNG, and WebP containers, including their animation.

  • PDFs: unencrypted input, up to 5,000 pages and 1,000 output files. Tool responses include at most 20 output entries. Larger splits also write a local manifest.json containing every output path and its source pages.

  • Each input: at most 128 MiB.

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

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

4 tools
abox_capabilitiesabox.tools local capabilitiesA
Read-onlyIdempotent

List supported local operations, limits, and installed browser availability. Does not read user files.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds a genuine extra commitment — "Does not read user files" — which is useful privacy context beyond the annotations, but says nothing about cost, freshness, or whether results are cached/environment-dependent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no waste, with the positive capability statement front-loaded and the privacy caveat second. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param, no-output-schema discovery tool the description covers the main question (what capability information is available) including browser availability, which is environment-dependent. It could say slightly more about what the caller gains before invoking it, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero-parameter tool, so per the baseline there is nothing for the description to disambiguate. The schema is trivially complete for an empty object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("List") and a concrete resource set (supported local operations, limits, installed browser availability). This reads clearly as a discovery/meta tool, distinguishing it from the sibling operation tools (image_compress, pdf_split, exif_remove) without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: mentioning "limits" and "installed browser availability" hints the agent should call this before attempting an operation, but there is no explicit "use when" or "do not use for" statement, and no routing to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
keep_iccNo
input_pathYesAbsolute local filesystem path. URLs and network shares are refused.
output_pathYesAbsolute local filesystem path. URLs and network shares are refused.
keep_orientationNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that the operation is lossless (no re-encoding), that it writes a new file rather than mutating the input (consistent with destructiveHint=false), that the output is re-inspected, and which metadata survives by default. What it omits is the reason for idempotentHint=false — e.g. whether an existing output_path is overwritten or rejected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying a distinct payload: what it does, verification behavior, defaults, and output/non-goal. No filler and the core operation leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter write tool with no output schema, the description covers operation, formats, lossless guarantee, preservation defaults, output location, and the explicit non-goal of anonymizing visible content. The only residual gap is overwrite behavior on an existing output file, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% — the two boolean flags carry no schema descriptions — but the description compensates by stating that defaults preserve an orientation-only EXIF block and the ICC profile, which explains exactly what keep_orientation and keep_icc control. Path semantics are covered by the schema's own 'absolute local path, no URLs' text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb ("Remove") plus a precisely bounded resource ("metadata from JPEG, PNG, or WebP containers") plus a key qualifier ("without re-encoding image data"). The format restriction and the lossless framing make it unmistakable against siblings like abox_image_compress or abox_pdf_split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: 'Writes a new local file' and 'does not anonymize visible content' clarify scope but never name an alternative tool or a when-not condition. There is no guidance about prerequisites (does the output file need to not exist?) or what to do when metadata is unsupported.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
formatNokeep
input_pathYesAbsolute local filesystem path. URLs and network shares are refused.
output_pathYesAbsolute local filesystem path. URLs and network shares are refused.
allow_resizeNo
target_bytesYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-idempotent write; the description adds substantive behavior beyond that: it writes a new local file, the target can be missed so 'fitted' should be checked, small files pass through with metadata retained, and 'auto' may change the output extension. It omits overwrite semantics for an existing output_path, which matters for a non-idempotent writer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with purpose before caveats, with no filler. Some phrasing is overly telegraphic ('Check fitted'), which costs a little clarity for its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a file-writing tool with no output schema, the definition covers the main failure mode (missed target) but leaves return-value shape, overwrite behavior on output_path, and the effect of allow_resize unstated. Adequate but with visible gaps given the 5-parameter, mutation nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40%, so the description carries extra burden. It clarifies target_bytes ('target byte count'), the 'auto' value of format, and implicitly resizing, but says nothing about allow_resize or the 'keep'/'jpeg'/'png'/'webp' format choices, leaving half the parameters to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compress) plus the accepted resource types (JPEG, PNG, WebP) and the governing constraint (target byte count). It is clearly distinct from siblings like abox_pdf_split and abox_exif_remove, though it does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (hit a byte budget) and adds caveats about misses and pass-through, but never states when to prefer this over e.g. abox_exif_remove or when it is inappropriate. Usage must be inferred from the target_bytes requirement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
modeNoeach
rangesNo
input_pathYesAbsolute local filesystem path. URLs and network shares are refused.
output_dirYesAbsolute local filesystem path. URLs and network shares are refused.
keep_bookmarksNo
pages_per_fileNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past what the annotations declare: it names the write target (a new directory), discloses a hidden cost (reopening every output PDF to count pages), and enumerates losses (tags, labels, attachments, metadata, unsupported actions) plus signature invalidation. 'Writes a new directory' is consistent with destructiveHint=false since no existing data is claimed to be removed, so no contradiction arises.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with the operation, the output shape, and the side effects ordered by importance; no filler and no restatement of the title. The dense phrasing still resolves into distinct facts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation tool with no output schema and only partial schema documentation, the description covers preconditions, side effects, and data loss adequately. It stops short of describing the created directory's structure/naming or error behavior, and leaves two optional parameters unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description compensates partially by explaining the mode enum semantics (each page / batches / explicit ranges) and that ranges are 1-based, which the schema does not say. But keep_bookmarks and pages_per_file are left entirely unexplained, and the blanket 'omits metadata' sits awkwardly against a keep_bookmarks default of true, leaving the agent to guess their interaction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (split) against a specific resource (an unencrypted local PDF) and enumerates the three output shapes (per page, batches, range groups). The scope 'local, unencrypted' plus 'writes a new directory' cleanly separates it from the sibling image/EXIF utilities and from any in-place PDF operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The constraints 'unencrypted' and 'local' function as implicit preconditions, telling the agent when this tool will refuse work. However, there is no explicit when-to-use guidance, no statement about when to prefer batches over ranges, and no mention of alternatives; the agent must infer invocation conditions from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.2.1
    • First observedabox_capabilities
    • First observedabox_exif_remove
    • First observedabox_image_compress
    • First observedabox_pdf_split

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a clearly distinct operation: capability listing, image compression, PDF splitting, and metadata removal. The only mild overlap is that abox_image_compress and abox_exif_remove both act on JPEG/PNG/WebP files and both write new files, but the descriptions explicitly differentiate the actions (re-encoding vs. non-re-encoding metadata strip).

Naming Consistency4/5

All names share a consistent abox_ prefix, and three of four follow a noun_object pattern (image_compress, pdf_split, exif_remove). abox_capabilities is a minor deviation since it lacks an action verb, but overall the pattern is predictable and readable.

Tool Count4/5

Four tools is a reasonable, focused surface for a local file-utility server; each tool has a distinct role. It is slightly thin compared to the broader domain implied by the descriptions, but there are no redundant tools.

Completeness3/5

The surface covers compression, PDF splitting, and metadata removal, but leaves obvious gaps for a file-utility domain: no PDF merge, no image resize/format conversion, and no inspection/verification tool beyond the static capabilities listing. Agents can work around some gaps but not all.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    4 npm
    -
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to perform local-first PDF processing entirely on-device, including OCR write-back to make scans searchable, unlocking and re-encrypting PDFs, splitting/merging/rotating pages, and compressing files, with no cloud calls or file uploads.
    25
    69 PyPI
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    7
    37 npm
    MIT