bundlebuild
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bundlebuildBuild the court bundle from bundle.yaml and flag missing exhibits"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bundlebuild
Court bundles from a YAML index. Merge the PDFs, stamp continuous page numbers, generate a hyperlinked index and PDF bookmarks, and pre-flight everything so the missing exhibit is found at your desk rather than at the registry.
title: Bundle of Documents
case: HC/OC 123/2026
parties: Alpha Pte Ltd v Beta Pte Ltd
output: out/bundle.pdf
stamp: { prefix: "AB" } # stamps AB-1, AB-2, ...
sections:
- title: Pleadings
documents:
- { tab: "1", title: Statement of Claim, date: 2026-03-02, file: docs/soc.pdf }
- { tab: "2", title: Defence, date: 2026-03-23, file: docs/defence.pdf }
- title: Correspondence
documents:
- { tab: "3", title: Letter of demand, date: 2025-11-14, file: docs/lod.pdf, pages: "1-2" }$ bundlebuild check bundle.yaml
[WARN ] tab 3: undated; index will show 'Undated'
[WARN ] tab 4: no text layer on any page; OCR before filing
5 documents, 10 pages, 0 error(s), 2 warning(s)
$ bundlebuild build bundle.yaml
wrote out/bundle.pdf: 1 index page(s) + 10 bundle page(s), 5 tabs
index: out/bundle.index.jsonWhy
Bundle assembly is paid-product territory (Bundledocs, Opus 2, Casedo) and the free
alternative is a paralegal with Acrobat and an afternoon. The mechanics are not hard:
pypdf merges and annotates, reportlab draws. What is missing is a tool that treats the
index as the source of truth and checks the inputs before anyone prints 800 pages.
Related MCP server: benspdf
What it does
Step | Detail |
Pre-flight ( | Missing files, non-PDFs, unreadable or encrypted PDFs, page selections out of range, landscape pages, pages with no text layer (scans), undated documents, tabs out of order. Errors block the build; warnings are printed. |
Merge | Documents in manifest order, optional per-document page subsets ( |
Stamp | Continuous page numbers with optional prefix ( |
Index | Generated front matter: court, case, parties, title, volume; then Tab / Document / Date / Page rows grouped by section. Spills across pages as needed. |
Hyperlinks | Every index row is a link annotation to its first page. |
Bookmarks | PDF outline: sections, then |
Sidecars |
|
Install
pip install -e ".[dev]" # library + CLI + tests
pip install -e ".[mcp]" # adds the MCP serverPython 3.11+. Pure Python; no Ghostscript, no Acrobat, no Java.
CLI
bundlebuild init [bundle.yaml] # write a template manifest
bundlebuild check bundle.yaml # pre-flight; exit 1 on errors
bundlebuild build bundle.yaml # check, then build; exit 1 on errors
bundlebuild build bundle.yaml --skip-checkMCP server
{ "mcpServers": { "bundlebuild": { "command": "bundlebuild-mcp" } } }Tools: manifest_template, check_bundle(manifest_path), build_bundle(manifest_path).
The assistant's job is to help write the manifest from a folder of documents; the build is
deterministic and local.
Manifest reference
Field | Notes |
| Front matter on the index page. Only |
| Relative to the manifest file. |
| First stamped number (default 1; use e.g. 341 for volume 2). |
| Stamp appearance. |
| Default |
| Section heading in the index and the outline. |
| A string label; must be unique across the bundle. |
|
|
| Relative to the manifest. Must be a PDF; convert first. |
| Subset, 1-based, e.g. |
| For authorities bundles; printed in the index and exported to the citecheck sidecar. |
Conventions and limits
The index is not page-numbered; bundle page 1 is the first content page. If your practice direction requires the index within the numbering, open an issue; it is a small change but it should be a deliberate one.
Existing page numbers on the source documents are not removed. Stamps are placed in the margin; if a source document already prints in that corner, choose a different
stamp.position.Rotated source pages are stamped in the page's own coordinate space, so the stamp rotates with the page. This is the correct behaviour for landscape exhibits inserted into a portrait bundle.
No OCR.
checktells you which pages lack a text layer; OCR them with whatever you use (ocrmypdf is good) and re-run.No conversion from Word/email/images. Convert first, then bundle.
Related projects
citecheck consumes the authorities sidecar. chronology entries cite bundle page references produced here. See also sg-deadline.
License
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Merge, split, extract, rotate, reorder and stamp PDF pages from your AI chat, all offline.
Merge, split, extract, rotate, reorder and stamp PDF pages from your AI chat, all offline.
Merge, split, extract, rotate, reorder and stamp PDF pages from your AI chat, all offline.
Merge PDFs from your AI chat: combine, order pages, output one clean PDF. All data is local.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with local documents (PDF, Markdown, TXT) through tools for discovery, reading, extraction, summarization, comparison, keyword extraction, search, and analysis, ensuring privacy and offline capability.-
- AlicenseAqualityAmaintenanceEnables AI agents to inspect and work with PDF files entirely on the local machine, covering page counts, metadata, layout, encryption permissions, scan-vs-text detection, and page rendering. Generated results land in a temporary workspace as short artifact ids that can be chained between tools and exported to real folders on request.1251 PyPI1Apache 2.0
- AlicenseBqualityBmaintenanceLets AI assistants read, search, edit, annotate, sign, redact and OCR PDF files entirely on the local machine, with no uploads and non-destructive writes to new files. It also merges, splits and reorganises pages, fills forms, compares versions to detect tampering, and converts documents between PDF, Word, Excel, images and text, including turning bank statements into spreadsheet rows.22AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to open local PDFs and edit existing text, images, annotations and form fields in place using the document's own embedded fonts, baselines and colours, with undo/redo and page rendering for visual checks. It also exposes 67 whole-document tools such as merge, split, compress, OCR, redact, sign, compare, watermark and conversion to and from PDF, all running locally over stdio.1MIT