Skip to main content

Search OfficeIMO

Enter a topic, API type, or PowerShell command.

CLI · Command-line document tools

Put document work in your scripts.

Convert, read, inspect, validate, redact and batch documents from one command. Every command prints machine-readable output and a documented exit code, so it fits CI jobs, scheduled tasks and AI agents.

  • JSON, NDJSON and SARIF output
  • Version-pinned automation
  • MIT licensed

Available on NuGet · Requires the .NET SDK to install · Windows, Linux and macOS

pwsh · OfficeIMO.Tool

# Install once with the .NET SDK
❯ dotnet tool install --global OfficeIMO.Tool

# Convert a folder to PDF, resuming where it stopped
❯ officeimo workflow batch --input-directory ./Documents --output ./PDF --checkpoint ./PDF-State

# Extract the content as Markdown for search or AI
❯ officeimo convert report.pdf report.md

# Validate an e-invoice before it is sent
❯ officeimo invoice validate invoice.xml
command groups
14
commands
67
formats
88
documented exit codes
8

Everything officeimo can do

Pick a command group to see its commands, key options and output. The list is generated from the tool itself.

Convert 1 command

Convert one file; the input and output extensions select a route from the shared conversion catalog.

officeimo convert <input> [output] [--output <file>] [--force] [--max-input-bytes <bytes>] [--max-output-bytes <bytes>] [--max-characters-in-part <characters>] [--text-encoding <name>] [--tab-size 1..32] [--allow-legacy-loss] [--diagram-layers screen|print] [--require-no-loss] [--text-only]
officeimo convert <data-input> <data-output> [--select <path>] [--columns <path,...>] [--root-name <name>] [--sheet <name>] [--range <A1:B2>] [--require-no-loss] [--force]
officeimo convert <input.pages|input.numbers|input.key> [output.docx|output.xlsx|output.pptx|output.pdf] [--iwork-mode auto|editable|visual] [--allow-partial] [--allow-incomplete-preview] [--normalize-worksheet-names] [--max-input-bytes <bytes>] [--max-output-bytes <bytes>] [--force]
officeimo convert <input> <output.md|output.markdown|output.json> [--assets <directory>] [--max-input-bytes <bytes>] [--force]

Key options

  • --output <file>Destination file; the default is a sibling PDF.
  • --forceReplace an existing destination.
  • --require-no-lossFail instead of publishing when the route reports source or output fidelity loss.
  • --max-input-bytes <bytes>Refuse inputs larger than this many bytes.
  • --max-output-bytes <bytes>Refuse to publish outputs larger than this many bytes.
  • --assets <directory>Directory for images extracted during Markdown or JSON output.
  • --select <path>Path to the rows to convert in a structured-data source, such as data.items.
  • --iwork-mode auto|editable|visualHow Pages, Numbers and Keynote documents are rebuilt: auto, editable or visual.

Writes csv, docx, epub, html, json, jsonl, md, odp, ods, odt, pdf, pptx, toml, tsv, xlsx, xml, yamlPrints path

Read 1 command

Extract one document as Markdown or JSON; a shortcut for 'reader read'.

Shortcut for officeimo reader read

officeimo read <path|-> [options]
officeimo extract <path|-> [options]

Writes json, mdPrints markdown, json

Inspect 1 command

Return a compact, bounded JSON summary of one document; a shortcut for 'agent inspect'.

Shortcut for officeimo agent inspect

officeimo inspect <path> [options]

Prints json

HTML 3 commands

Render HTML, MHTML and ZIP site bundles to PDF or to page images.

officeimo html convert <input.html|input.mhtml|input.zip|-> [--input-format html|mhtml|site-bundle] [--output <file|->] [--stylesheet <file.css>] [--base-uri <absolute-uri>] [--font-family <name> --font-regular <file.ttf>] [--font-bold <file.ttf>] [--font-italic <file.ttf>] [--font-bold-italic <file.ttf>] [--max-input-bytes <bytes>] [--max-pages <count>] [--profile print-paged|screen-media-paged|screen-snapshot-paged] [--pages all|<page>|<first-last>|stitched] [--viewport-width <css-px>] [--viewport-height <css-px>] [--scale <factor>] [--entry-path <archive-path>] [--max-bundle-entry-bytes <bytes>] [--max-bundle-decoded-bytes <bytes>] [--max-bundle-entries <count>] [--pdf-ua-language <tag>] [--force]
Render an HTML page, MHTML archive or ZIP site bundle to PDF.
officeimo html render <input.html|input.mhtml|input.zip|-> [--input-format html|mhtml|site-bundle] [--output <archive.zip|->] [--profile screen-viewport|screen-full-page|print-paged|screen-media-paged|screen-snapshot-paged|continuous-vector] [--encoder png|svg] [--pages all|<page>|<first-last>|stitched] [--viewport-width <css-px>] [--viewport-height <css-px>] [--scale <factor>] [--stylesheet <file.css>] [--base-uri <absolute-uri>] [--font-family <name> --font-regular <file.ttf>] [--font-bold <file.ttf>] [--font-italic <file.ttf>] [--font-bold-italic <file.ttf>] [--max-input-bytes <bytes>] [--max-pages <count>] [--max-archive-bytes <bytes>] [--entry-path <archive-path>] [--max-bundle-entry-bytes <bytes>] [--max-bundle-decoded-bytes <bytes>] [--max-bundle-entries <count>] [--max-manifest-bytes <bytes>] [--force]
Render pages to PNG or SVG images packaged in a ZIP archive with a manifest.
officeimo html capabilities [--format text|json]
List the HTML engine's supported features and profiles.

Key options

  • --profile print-paged|screen-media-paged|screen-snapshot-pagedRendering intent, such as print-paged or screen-full-page.
  • --pages all|<page>|<first-last>|stitchedPages to produce: all, one page, a range or stitched.
  • --stylesheet <file.css>Additional CSS file applied to the document.
  • --base-uri <absolute-uri>Absolute URI used to resolve relative links.
  • --font-family <name>Name a font family and register its faces with --font-regular and related options.
  • --max-pages <count>Refuse documents that would produce more pages than this.
  • --pdf-ua-language <tag>Language tag for PDF/UA groundwork.

Writes pdf, png, svgPrints text, json

Reader 3 commands

Extract documents or whole folders as Markdown or JSON for search, review and language models.

officeimo reader read <path|-> [--name <source-name>] [--format markdown|json] [--output <file|->] [--assets <directory>] [--max-input-bytes <bytes>] [--force]
Extract one document, or standard input, as Markdown or JSON.
officeimo reader folder <path> --output <directory> [--format markdown|json] [--assets <directory>] [--concurrency <1-64>] [--max-files <count>] [--max-total-bytes <bytes>] [--max-input-bytes <bytes>] [--no-recursive] [--force]
Extract every supported document under a folder into an output folder.
officeimo reader capabilities [--format text|json]
List the formats the reader handles.

Key options

  • --format markdown|jsonOutput format: markdown or json.
  • --output <file|->Write to a file, or to a directory for folder extraction.
  • --assets <directory>Directory for extracted images.
  • --name <source-name>Source name used to choose a handler when reading standard input.
  • --concurrency <1-64>Number of documents extracted at once in folder mode.
  • --max-files <count>Stop folder extraction after this many files.

Writes json, mdPrints markdown, json, text

Markup 5 commands

Parse, validate and preview OfficeIMO Markup, emit C# or PowerShell, and export Word, Excel or PowerPoint files.

officeimo markup parse <file|-> [--profile presentation|document|workbook|common]
Parse markup and print the document model with diagnostics as JSON.
officeimo markup validate <file|-> [--profile presentation|document|workbook|common]
Validate markup; exit code 1 when it has errors.
officeimo markup preview <file|-> [--profile presentation|document|workbook|common]
Print the parsed document model as JSON for previews.
officeimo markup emit <file|-> --target csharp|powershell [--output <file>] [--force]
Generate C# or PowerShell code that builds the document.
officeimo markup export <file|-> --target pptx --output <file.pptx> [--force]
Write the markup as a PPTX, XLSX or DOCX file.

Key options

  • --profile presentation|document|workbook|commonMarkup profile: presentation, document, workbook or common.
  • --target csharp|powershellCode or file target for emit and export.
  • --output <file>Destination file for emit or export.
  • --stdinRead markup from standard input.
  • --max-input-bytes <bytes>Bound input size (default: 67108864).
  • --no-safe-preflightDisable Excel safe preflight.
  • --no-defined-name-repairDisable Excel defined-name repair.
  • --no-openxml-validationDisable Excel Open XML validation.
  • --mermaid-renderer <mmdc>Configure the Mermaid renderer for PowerPoint.
  • --no-mermaidDisable Mermaid rendering.
  • --forceReplace an existing output file.

Writes cs, docx, pptx, ps1, xlsxPrints json, text

Tabular 3 commands

List worksheets, report column schemas and convert between CSV, TSV and workbook formats.

officeimo tabular sheets <workbook>
List the worksheets in a workbook.
officeimo tabular schema <workbook|csv> [--sheet <name>|--sheet-index <index>] [--delimiter <character|\t>] [--no-header]
Report column names and inferred types for a worksheet or CSV file.
officeimo tabular convert <input> <output> [--sheet <name>|--sheet-index <index>] [--delimiter <character|\t>] [--output-delimiter <character|\t>] [--no-header] [--force]
Convert between CSV, TSV and workbook formats.

Key options

  • --sheet <name>Worksheet to read by name.
  • --sheet-index <index>Worksheet to read by position.
  • --delimiter <character|\t>Delimiter of delimited input.
  • --output-delimiter <character|\t>Delimiter of delimited output.
  • --no-headerTreat the first row as data.

Writes csv, tsv, xls, xlsb, xlsxPrints text

Workflow 12 commands

Batch conversion with checkpoints, saved jobs, page images, assembly, comparison, print plans and printing.

officeimo workflow compare <expected.pdf> <actual.pdf> --output <report.html> [--expected-pages <selection>] [--actual-pages <selection>] [--force] [--password-env <name>] [--comparison-password-env <name>] [--format json|text]
Compare two PDFs and write an HTML difference report.
officeimo workflow optimize-images <input.docx|input.doc>... [--analyze] [--output <file> | --output-directory <folder>] [--output-format docx|doc|pdf] [--mode downsample|recompress|both] [--dpi <36-1200>] [--quality <1-100>] [--force] [--format json|text]
Analyze or reduce the images in Word documents.
officeimo workflow export-pages <input.pdf> --output <folder> [--pages <selection>] [--image-format png|jpeg|webp|tiff|svg] [--dpi <36-600>] [--max-dimension <pixels>] [--force] [--format json|text]
Render PDF pages to PNG, JPEG, WebP, TIFF or SVG images.
officeimo workflow assemble <source>... --output <output.pdf> [--no-recursive] [--force] [--format json|text]
Combine documents, folders and ZIP archives into one PDF.
officeimo workflow print-plan <input.pdf> [--pages <selection>] [--paper A4|Letter|Legal|A3] [--password-env <name>] [--orientation auto|portrait|landscape] [--pages-per-sheet 1|2|4|6|9] [--scale fit|actual|fill|custom] [--custom-scale <percent>] [--margin <points>] [--margin-left <points>] [--margin-top <points>] [--margin-right <points>] [--margin-bottom <points>] [--alignment center|top-left|top|top-right|left|right|bottom-left|bottom|bottom-right] [--page-subset all|odd|even] [--color color|grayscale] [--format json|text]
Plan how a PDF lays out on printed sheets without printing.
officeimo workflow batch [<source>...] --output <folder> [--input-directory <folder>] [--target pdf|docx|xlsx|pptx|html|json|jsonl|yaml|toml|xml|csv|tsv] [--checkpoint <folder>] [--route <id>] [--source-extension <extension>] [--no-recursive] [--concurrency 1..32] [--conflict fail|rename|replace] [--retry-failed] [--text-encoding <name>] [--tab-size 1..32] [--allow-legacy-loss] [--pages <selection>] [--profile faithful|lightweight|printready|textonly] [--maximum-files <count>] [--maximum-input-bytes <bytes>] [--maximum-output-bytes <bytes>] [--maximum-xml-characters-in-part <characters>] [--diagram-layers screen|print] [--require-no-loss] [--source-password-env <name>] [--pdf-password-env <name>] [--allow-empty] [--verbose] [--format json|ndjson] [--save-job <new-job.json>]
Convert many files with per-file results, retries and optional checkpoints.
officeimo workflow job plan <job.json>
Show what a saved job would convert.
officeimo workflow job run <job.json> [--retry-failed] [--allow-empty] [--verbose] [--format json|ndjson] [--report <new-report.json>]
Run a saved job.
officeimo workflow job report <run-report.json>
Inspect a saved run report.
officeimo workflow printers [--capabilities <printer> | --paper-sources <printer>] [--format json|text]
List printers, their capabilities or their paper sources.
officeimo workflow print <document> --printer <queue|ipp://uri> [print-plan options; --paper defaults to the printer's media] [--copies 1..100] [--duplex default|off|long|short] [--paper-source <id>] [--dpi 72..600] [--raster-grayscale] [--output-file <new-local-path>] [--format json|text]
Print a document to a queue or an IPP printer.
officeimo workflow print-job status|wait|cancel --printer <queue|ipp://uri> --job <id> [--timeout <seconds>] [--format json|text]
Check, wait for or cancel a submitted print job.

Key options

  • --output <report.html>Destination file or folder.
  • --input-directory <folder>Folder to convert in a batch.
  • --target pdf|docx|xlsx|pptx|html|json|jsonl|yaml|toml|xml|csv|tsvBatch target format; PDF by default.
  • --checkpoint <folder>Folder that records verified outputs so a rerun resumes where it stopped.
  • --conflict fail|rename|replaceWhat a batch does with an existing output: fail, rename or replace.
  • --retry-failedRetry items that failed in an earlier checkpointed run.
  • --concurrency 1..32Number of files converted at once.
  • --pages <selection>Page selection such as 1-3,last.
  • --save-job <new-job.json>Write the batch settings to a new job file without converting.
  • --format json|textResult format: json, ndjson for batches, or text for single operations.
  • --forceReplace an existing output.

Writes csv, docx, html, jpeg, json, jsonl, pdf, png, pptx, svg, tiff, toml, tsv, webp, xlsx, xml, yamlPrints json, ndjson, text

Invoice 6 commands

Inspect, validate, edit, convert and render CII and UBL electronic invoices, including Factur-X hybrid PDFs.

officeimo invoice inspect|validate <input.xml> [options]
Read an invoice into the model; validate returns exit code 1 when it has errors.
officeimo invoice convert|render|hybrid <input.xml> --output <path> <target options> [options]
Convert to another syntax or profile, render a presentation PDF, or embed the XML in a hybrid PDF.
officeimo invoice batch inspect|validate <input.xml>... [options]
Inspect or validate many invoices with one result per item.
officeimo invoice batch convert|render|hybrid <input.xml>... --output-directory <path> <target options> [options]
Convert or render many invoices into an output directory.
officeimo invoice edit <input.xml> --output <path> <field replacements> [options]
Replace selected header fields while keeping the rest of the XML.
officeimo invoice batch edit <input.xml>... --output-directory <path> <field replacements> [options]
Apply the same field replacements to many invoices.

Key options

  • --release En16931_1_3_16|FacturX_1_09_2_Zugferd_2_5_2|XRechnung_3_0_2_2026_08_31|PeppolBis_3_0_21Pinned standards release of the target, such as En16931_1_3_16.
  • --syntax Cii|UblTarget syntax: Cii or Ubl.
  • --profile Minimum|BasicWithoutLines|Basic|En16931|Extended|XRechnung|PeppolBisTarget profile, such as En16931 or XRechnung.
  • --output <path>Destination file for a single invoice.
  • --output-directory <path>Destination folder for a batch.
  • --rule-bundle <pinned-xrechnung.zip>Pinned XRechnung rule bundle for standards validation.
  • --language <en-US,pl-PL,...>Languages of the rendered presentation.
  • --allow-profile-lossAllow documented lower-profile reductions, reported as warnings
  • --columns <Item,Quantity,Unit,NetPrice,Vat,NetAmount>Two to eight distinct columns including Item and NetAmount

Writes pdf, xmlPrints json

PDF 13 commands

Extract pages, split, decrypt, flatten, optimize, sanitize, OCR, convert to PDF/A and redact PDFs into separate copies.

officeimo pdf extract <input.pdf> --pages <selection> --output <copy.pdf> [--force]
Copy selected pages into a new PDF.
officeimo pdf split <input.pdf> --output <new-folder> [--pages-per-document <count>] [--force]
Split a PDF into parts of a fixed page count.
officeimo pdf decrypt <input.pdf> --password-env <owner-password-variable> --output <copy.pdf> [--force]
Write an unencrypted copy using the owner password from an environment variable.
officeimo pdf flatten <input.pdf> --output <copy.pdf> --acknowledge-raster-output [--pages <selection>] [--dpi 36..600] [--force]
Replace pages with their rendered appearance.
officeimo pdf ocr <input.pdf> --output <copy.pdf> --ocr-provider <id> --ocr-provider-assembly <provider.dll> [--ocr-language <language>] [--ocr-option <key=value>] [--ocr-min-confidence 0..1] [--pages <selection>] [--dpi 36..600] [--force]
Add searchable text from an OCR provider.
officeimo pdf optimize|sanitize <input.pdf> --output <copy.pdf> [--force]
Write a smaller copy, or a copy without active content.
officeimo pdf convert-to-pdfa <input.pdf> --output <copy.pdf> [--profile 2b|2u|3b|3u|4|4f] [--attachments remove|refuse] [--font <family>[:bold|italic|bold-italic]=<font.ttf>]... [--font-substitution installed-fonts|none] [--output-intent <profile.icc> --output-condition-identifier <id>] [--password-env <name>] [--force]
Write a PDF/A copy, or refuse and report every violation.
officeimo pdf providers [--ocr-provider-assembly <provider.dll>]
List the OCR providers that are loaded.
officeimo pdf redact providers [--ocr-provider-assembly <provider.dll>]
List the OCR providers available to redaction.
officeimo pdf redact batch --request <batch.json> [--force]
Run several redactions from one request file.
officeimo pdf redact plan <input.pdf> --recipe <recipe.json> --evidence <plan.json>
Find redaction candidates and write a reviewable plan.
officeimo pdf redact apply <input.pdf> --recipe <recipe.json> --decisions <decisions.json> --output <output.pdf> --evidence <evidence.json> [--force]
Apply reviewed redaction decisions to a new PDF.
officeimo pdf redact verify <input.pdf> --recipe <recipe.json> --decisions <decisions.json> --output <existing-output.pdf> --evidence <evidence.json> [--expected-output-sha256 <hash>] [--force]
Check that an existing redacted PDF matches the reviewed decisions.

Key options

  • --output <copy.pdf>Destination file or folder; the source is never changed.
  • --pages <selection>Page selection such as 1-3,last, odd, even or all,!2.
  • --password-env <owner-password-variable>Name of the environment variable that holds the owner password.
  • --recipe <recipe.json>Redaction recipe JSON.
  • --decisions <decisions.json>Reviewed redaction decisions JSON.
  • --evidence <plan.json>Path for the redaction evidence JSON.
  • --ocr-provider <id>OCR provider id.
  • --ocr-provider-assembly <provider.dll>Trusted assembly that contains an OCR provider.
  • --maximum-pages 1..10000Page limit; 100 by default.
  • --forceReplace an existing output.

Writes json, pdfPrints json

Provenance 9 commands

Inspect, assess and remove Content Credentials (C2PA) and AI-source labels, and audit files for suspicious Unicode in CI.

officeimo provenance doctor --c2patool <trusted-executable> [--format json|text]
Check that a host-supplied c2patool executable runs.
officeimo provenance capabilities [--format json|text]
List the formats and provenance carriers the tool understands.
officeimo provenance inspect <input> [--no-embedded] [--max-input-bytes <bytes>] [--format json|text]
Report the provenance carriers in one file.
officeimo provenance assess <input> [--no-embedded] [--no-text-integrity] [--max-input-bytes <bytes>] [--format json|text] [--c2patool <trusted-executable>] [--trust-anchors <pem>] [--allowed-list <pem>] [--verification-timeout-seconds <1-300>]
Inspect and verify provenance, optionally with c2patool and trust anchors.
officeimo provenance remove <input> [--output <path>] [--force] [--keep-c2pa] [--keep-external-c2pa] [--keep-ai-source] [--remove-invalidated-signatures] [--no-embedded] [--max-input-bytes <bytes>] [--max-output-bytes <bytes>] [--format json|text]
Write a copy without selected provenance carriers.
officeimo provenance audit <file-or-directory>... [--include <wildcard>] [--exclude <wildcard>] [--no-recursive] [--max-items <1-10000>] [--format json|text|ndjson|sarif]
Report provenance and dangerous Unicode across files and folders without changing them.
officeimo provenance check <file-or-directory>... [--fail-on dangerous-text|carriers|any] [audit options]
Audit and return exit code 1 when the selected findings are present.
officeimo provenance batch inspect|assess <input>... [--max-items <1-10000>] [options]
Inspect or assess many files with one result per item.
officeimo provenance batch remove <input>... --output-directory <path> [--max-items <1-10000>] [options]
Remove provenance from many files into an output directory.

Key options

  • --format json|textResult format; JSON by default.
  • --fail-on dangerous-text|carriers|anyFindings that fail check: dangerous-text, carriers or any.
  • --include <wildcard>Wildcard of files to include in an audit.
  • --exclude <wildcard>Wildcard of files to skip in an audit.
  • --c2patool <trusted-executable>Trusted c2patool executable used for verification.
  • --output <path>Destination file for remove.
  • --forceReplace an existing output.

Prints json, text, ndjson, sarif

Hidden data 2 commands

Find and remove metadata, comments, tracked changes, hidden content and active content before sharing a file.

officeimo hidden-data inspect <input> [--format json|text]
List the hidden data a file carries without changing it.
officeimo hidden-data remove <input> [--output <path>] [--force] [--kinds <kind>[,<kind>...]] [--tracked-changes keep|accept|reject] [--keep-provenance c2pa,external,ai-source] [--anonymous-author <name>] [--remove-invalidated-signatures] [--format json|text]
Write a cleaned copy; the input is never changed.

Key options

  • --kinds <kind>What to remove: default, all, or named kinds such as provenance or tracked-changes.
  • --tracked-changes keep|accept|rejectKeep, accept or reject tracked changes.
  • --keep-provenance c2pa,external,ai-sourceProvenance carriers to keep when provenance is removed.
  • --output <path>Destination file; the default is <input>.cleaned<ext>.
  • --forceReplace an existing output.

Writes docx, epub, gif, jpeg, odp, ods, odt, pdf, png, pptx, tiff, vsdx, webp, xlsxPrints json, text

Agent 7 commands

Inspect, search, fetch and convert documents and mailboxes with compact, bounded JSON results.

officeimo agent inspect <path> [--max-output-characters <512-64000>]
Summarize one document as compact JSON.
officeimo agent inspect-email <path> [--max-output-characters <512-64000>]
Summarize one message or mailbox as compact JSON.
officeimo agent search <path> [--query <text>] [--subject <text>] [--sender <text>] [--folder-id <id>] [--since <ISO-8601>] [--before <ISO-8601>] [--has-attachments <bool>] [--is-read <bool>] [--include-descendants] [--take <1-25>] [--cursor <n>] [--max-output-characters <512-64000>]
Search the messages of a mailbox by metadata.
officeimo agent fetch --source-id <id> --id <result-id> [--path <original-path>] [--cursor <n>] [--max-output-characters <512-64000>]
Fetch one result returned by inspect or search.
officeimo agent search-email <mailbox> --query <text> [--fields <names>] [--checkpoint <value>] [--take <1-25>] [--max-items-scanned <1-10000>] [--max-decoded-bytes <1-67108864>] [--max-searchable-characters <1-2000000>] [--max-output-characters <512-64000>] [mailbox filters as above]
Search the content of a mailbox's messages.
officeimo agent convert <path> --output <file> [--format markdown|json|docx|xlsx|pptx|pdf] [--force]
Convert a document to Markdown, JSON or an Office or PDF file.
officeimo agent capabilities [--extension <.ext>] [--operation create|read|edit|preserve|inspect|validate|remove|search|fetch|convert|export] [--cursor <n>] [--conversion-cursor <n>] [--max-output-characters <512-64000>]
List the operations available for each format.

Key options

  • --max-output-characters <512-64000>Upper bound on the size of the JSON result.
  • --query <text>Text to search for.
  • --take <1-25>Number of results per page.
  • --cursor <n>Continue from a previous page of results.
  • --source-id <id>Source returned by inspect or search, used by fetch.

Writes docx, json, md, pdf, pptx, xlsxPrints json

MCP server 1 command

Serve OfficeIMO tools to MCP clients over standard input and output, limited to the folders in OFFICEIMO_MCP_ALLOWED_ROOTS.

officeimo mcp serve --stdio [--ocr-provider-assembly <trusted-provider.dll>] [--ocr-option <key=value>] [--pdf-password-env <admitted-variable>]
Start the MCP server on standard input and output.

Key options

  • --stdioUse standard input and output as the transport.
  • --pdf-password-env <admitted-variable>Admit an environment variable that PDF tools may read a password from.
  • --ocr-provider-assembly <trusted-provider.dll>Trusted OCR provider assembly loaded at startup.

Prints json

Common jobs

All CLI guides

One command for document work in scripts

officeimo runs the OfficeIMO engines from a shell, a CI job, a scheduled task or an AI agent, without Microsoft Office. Results go to standard output as JSON, diagnostics go to standard error, failures return documented exit codes, and existing files are protected unless you pass --force.

Install the CLI

dotnet tool install --global OfficeIMO.Tool
officeimo --version
officeimo help

For scripts and CI, pin the version in the repository with a tool manifest and run it as dotnet officeimo. Install and pin the tool shows both.

Every command also prints its own reference with officeimo <area> --help.

Built for automation

Documented exit codes
Validation failures, usage errors, missing or unsupported input, failed operations, failed output and cancellation each return their own code, so a pipeline can branch on the result.
Machine-readable output
JSON for reports and inspection, NDJSON for streams of results, SARIF for provenance findings in code scanning.
Safe by default
Conversions refuse to overwrite an existing file unless you pass --force, and input and output sizes are bounded.
Resumable batches
workflow batch records each file's state, so rerunning the same command skips finished work and --retry-failed picks up the rest.
Pinned versions
Install it as a local tool in a manifest and run dotnet officeimo, so every machine and CI job uses the same version.
The same engines everywhere
The CLI runs the OfficeIMO libraries in process. It doesn't call Office or LibreOffice.

The same engines, measured

The CLI runs the libraries measured on the benchmark pages.

Read the CLI docs Install, every command group, exit codes and CI recipes. Use it from an AI agent The same tools over MCP for Claude, Codex, Copilot and Cursor.

Installation channels

Available

NuGet tool

Global installation or local tool manifest

Open NuGet →

Planned

Portable archives

Standalone binaries for each platform

Planned

WinGet

Managed installation of the standalone CLI

Same engine, other surfaces

Use OfficeIMO another way

Example source