# AlloFlow Document Remediation (mcpb · alloflow-remediation.mcpb)

Local-first document accessibility remediation using the canonical AlloFlow app pipeline.

- Trust score: 46/100 (low)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-22

## Components

- mcpb · `alloflow-remediation.mcpb`: 46/100 (this document), [markdown](https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia.md), [page](https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia)

## Channel facts

- Registry: `mcpb`
- Package: `https://github.com/Apomera/AlloFlow/releases/download/mcpb-v0.3.5/alloflow-remediation.mcpb`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-22.

- **Supply Chain Security**: 23/100
  - Malware scan not yet available for this package.
  - Known CVEs were checked across the 3 of 3 dependencies we could resolve, so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - 1 of 3 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (AGPL-3.0-or-later).
  - Actively maintained (last published 4 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 81/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6521 tokens (~203/item across 32 items; 31 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

- Download bundle: `https://github.com/Apomera/AlloFlow/releases/download/mcpb-v0.3.5/alloflow-remediation.mcpb`

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-17 (score 46)

First indexed and scored.

## MCP tools (31)

### `remediation_capabilities` (~57 tokens)

Check remediation environment

Report both operating modes: the tools available without a Gemini key/account/Worker and whether the optional full AI pipeline has its key, Playwright/Chromium, and modules. Call this first. Read-only; launches nothing, spends nothing.

Output parameters:

- `alloflowAccountRequired` (boolean)
- `allowedRoots` (array|null): null means unrestricted
- `busy`
- `chromiumInstalled` (boolean)
- `dataHandling` (object)
- `fallbackModel` (string)
- `fullAiPipelineReady` (boolean)
- `geminiKeyPresent` (boolean)
- `geminiKeySource` (string)
- `geminiRequiredToolNames` (array)
- `institutionAccountRequired` (boolean)
- `jobs` (object)
- `keyVerificationCheckedAt` (string|null)
- `keyVerificationState` (string)
- `keyVerified` (boolean)
- `keylessModeAvailable` (boolean)
- `keylessModeMeans` (string)
- `keylessToolNames` (array)
- `maxPdfMB` (number)
- `maxRunMinutes` (number)
- `model` (string)
- `networkEgress` (array)
- `onboarding` (object)
- `paidWorkerRequired` (boolean)
- `pipelineModulesPresent` (object)
- `playwrightAvailable` (boolean)
- `ready` (boolean): Current build/components are intact and this process verified the configured key.
- `readyMeans` (string)
- `runtimeBuild` (object)
- `setupHint` (string)
- `singleFlight` (boolean)
- `vendorAssets` (object)

### `remediation_verify_key` (~132 tokens)

Test whether the Gemini key actually works

Prove the configured Gemini key WORKS rather than merely existing, by listing models — the cheapest authenticated call. Sends NO document content and spends no generation quota. Call this whenever remediation_capabilities reports a key but Gemini-powered tools fail, and after setting up a key for the first time. Distinguishes: no key configured, valid, valid-but-quota-exhausted, invalid (revoked/mistyped/wrong API), and unreachable (offline — key untested, not proven bad). When no key or an invalid key is found it returns exact setup instructions. Never returns or logs the key value.

Output parameters:

- `checked` (boolean)
- `checkedAt` (string)
- `detail` (string)
- `documentContentSent` (boolean)
- `geminiKeySource` (string)
- `keyWorks` (boolean|null): true/false when tested; null when no key or the API was unreachable
- `setup` (string)
- `state` (string)

### `remediation_selftest` (~140 tokens)

Prove this install can actually remediate

Run the REAL remediation pipeline end-to-end in headless Chromium against a scripted local model and a generated one-page PDF, then report which stage worked. Needs NO Gemini key and spends NO quota (nothing leaves the machine; the scripted model is a loopback server), writes no files you keep. Takes roughly 20-60s. Use this when remediation_capabilities says ready but real runs fail, after installing or updating the connector, or to tell a broken install apart from an API-key/quota problem: a failure here names the stage (assets / browser / module-boot / ownership-gate / audit-contract) and is never about your key.

Output parameters:

- `afterScore`
- `beforeScore`
- `checks` (object)
- `durationMs` (number)
- `error` (string)
- `hint` (string)
- `modelCalls` (number)
- `note` (string)
- `ok` (boolean)
- `stage` (string): 'complete' on success; otherwise the stage that broke: assets | browser | module-boot | ownership-gate | audit-contract | run | output

### `generate_resource_pack` (~153 tokens)

Generate an AlloFlow resource pack (no API key)

Generate the same student/teacher resource-pack HTML as the normal AlloFlow app by calling its existing generateFullPackHTML pipeline export unchanged. The input JSON uses the app's native resource shape, so this is a thin adapter rather than a second renderer. Deterministic: needs NO Gemini key, account, or Worker. The JSON must contain `items` and may include `topic`, `isWorksheet`, `responses`, and `config`.

Input parameters:

- `output_path` (string, required): Where to write the generated .html file (collision-safe; existing files are not overwritten)
- `resource_pack_json` (string, required): Absolute path to a local .json file containing {items, topic?, isWorksheet?, responses?, config?}

Output parameters:

- `bytes` (number)
- `generator` (string)
- `input` (string)
- `modelFree` (boolean)
- `note` (string)
- `output` (string)
- `resourcesRequested` (number)
- `worksheet` (boolean)

### `export_accessible_office` (~183 tokens)

Export accessible HTML to Word or ODT

Convert an accessible HTML file (the -accessible.html a remediation produced) into an accessible Word (.docx) or OpenDocument (.odt) file, preserving heading structure, lists, and tables. Deterministic packaging: needs NO Gemini key and spends no quota, though it does fetch React and JSZip from public CDNs. Use when someone needs the remediated document in an editable Office format rather than a PDF. For ePub 3, DAISY 3 or Braille, use export_alt_format instead.

Input parameters:

- `file_path` (string, required): Absolute path to a local accessible .html file
- `format` (string, required): Output format
- `output_dir` (string): Directory for the output file (default: alongside the input)
- `title` (string): Document title embedded in the export (default: the input file name)

Output parameters:

- `bytes` (number)
- `counts`
- `format` (string)
- `input` (string)
- `note` (string)
- `output` (string)

### `export_alt_format` (~323 tokens)

Export to ePub 3, DAISY 3, or Braille (no API key)

Convert an accessible HTML file into an ePub 3 ebook, a DAISY 3 full-text talking-book package, or an uncontracted (Grade 1) Braille BRF file for embossers and refreshable displays. Deterministic restructuring: needs NO Gemini key, spends no quota, and packages entirely offline (unlike export_accessible_office it does not need JSZip from a CDN, though React is still fetched). Use when a student needs an ebook, a DAISY reader, or hard-copy braille rather than a PDF. ePub output is checked by a built-in structural self-check whose findings are returned as `structuralErrors` — that is NOT epubcheck, so a book reported valid here can still be worth running through epubcheck. Braille is Grade 1 only (contracted UEB needs the liblouis plugin, which is in the app, not here) and reports how many characters had no braille equivalent and were dropped.

Input parameters:

- `file_path` (string, required): Absolute path to a local accessible .html file
- `format` (string, required): 'epub' = ePub 3 ebook; 'daisy' = DAISY 3 talking-book zip (text only, the reader supplies speech/braille/large print); 'brf' = ASCII Braille ready to emboss
- `output_dir` (string): Directory for the output file (default: alongside the input)
- `title` (string): Document title embedded in the package metadata (default: the input file name)

Output parameters:

- `bytes` (number)
- `code` (string)
- `droppedCharacters` (number)
- `entries` (array)
- `format` (string)
- `grade` (number)
- `identifier` (string)
- `input` (string)
- `language` (string)
- `modelFree` (boolean)
- `navEntries` (number)
- `note` (string)
- `output` (string)
- `selfChecked` (boolean)
- `sourceCharacters` (number)
- `structuralErrors` (array)
- `valid` (boolean)
- `warnings` (array)

### `fix_contrast` (~172 tokens)

Repair colour contrast (no API key)

Apply AlloFlow's deterministic contrast repair to an accessible HTML file: darkens or lightens foreground colours that fail WCAG AA against their detected background, then sanitises remaining style for WCAG. Pure colour math — needs NO Gemini key and spends no quota. IMPORTANT: the returned axe numbers do NOT verify contrast. axe-core does not reliably detect contrast in this harness (measured: zero findings on text at ~1.6:1), so `styleFixes` (the count of corrections actually applied) is the evidence, and a human or a contrast checker should confirm.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html file
- `output_path` (string): Where to write the corrected HTML (default: <name>-contrast.html beside the input, never overwriting)

Output parameters:

- `axeAfter`
- `axeBefore`
- `changed` (boolean)
- `contrastFindings`
- `evidence` (string): States plainly that axe does not verify contrast in this harness
- `input` (string)
- `output` (string)
- `styleFixes` (number|null): Deterministic count of colour corrections applied — this is the evidence, not the axe numbers

### `generate_conformance_report` (~199 tokens)

Generate the AlloFlow conformance report

Produce AlloFlow's own Accessibility Conformance Report as HTML, the same report the app generates, from artifacts you already have: an axe audit and (optionally) a veraPDF verdict. Deterministic templating — needs NO Gemini key. Use this instead of hand-writing a report, so what an agent hands a user matches what the application produces and cannot drift from it.

Input parameters:

- `accessible_html` (string): Optional path to the remediated HTML, so the report can reference the content it describes
- `audit_json` (string, required): Path to a JSON file holding an axe audit (as pdf_audit or the agent harness emits)
- `document_name` (string): Document name shown in the report heading
- `output_path` (string, required): Where to write the report HTML
- `verapdf_json` (string): Optional path to a JSON file holding a pdf_validate_ua result; its failed rules are folded in

Output parameters:

- `bytes` (number)
- `generator` (string)
- `note` (string)
- `output` (string)
- `pdfUaIncluded` (boolean)

### `describe_images` (~165 tokens)

Generate alt text for images in accessible HTML

Run AlloFlow's vision pass over the data-URI images embedded in an accessible HTML file: describes each one, classifies equations and charts, marks recurring chrome (logos, letterheads) decorative, and groups near-identical images so a repeated logo costs one vision call rather than one per page. Writes alt text into the HTML. REQUIRES a Gemini key and sends image content to the API — this is the one HTML operation here that genuinely needs a model.

Input parameters:

- `cap` (number): Maximum image groups to describe (default 10)
- `file_path` (string, required): Absolute path to a local .html file containing data-URI images
- `output_path` (string): Where to write the annotated HTML (default: <name>-alt.html beside the input)

Output parameters:

- `charts` (number)
- `classified` (number)
- `dedupedCopies` (number)
- `equations` (number)
- `input` (string)
- `note` (string)
- `output` (string)
- `visionCalls` (number)

### `transcribe_media` (~201 tokens)

Transcribe audio or video to an accessible transcript

Transcribe a local audio or video file into an accessible transcript payload. Modes: 'speech' (spoken words), 'visual' (what is shown on screen), 'dual' (both, separately), 'synthesis' (a combined narrative). Long recordings are segmented automatically by the pipeline's large-file machinery. Supports .mp3 .m4a .wav .aac .ogg .flac .mp4 .mov .webm .mpeg. REQUIRES a Gemini key and sends the media to the API. This is how a recorded lesson becomes a document the rest of these tools can make accessible.

Input parameters:

- `file_path` (string, required): Absolute path to a local audio or video file
- `mode` (string): Default 'speech'. Use 'dual' or 'synthesis' for video where on-screen content matters.
- `output_path` (string): Where to write the transcript (default: <name>-transcript.txt beside the input)

Output parameters:

- `input` (string)
- `mode` (string)
- `note` (string)
- `output` (string)
- `words` (number)

### `translate_accessible_html` (~157 tokens)

Translate accessible HTML into another language

Translate an accessible HTML document into a target language while preserving its structure: headings, lists, tables, and reading order survive, and embedded data-URI images are swapped for placeholders during translation so they are never sent to the model and come back intact. Long documents are chunked on tag boundaries. REQUIRES a Gemini key. Use to produce the same accessible document for multilingual families or students.

Input parameters:

- `file_path` (string, required): Absolute path to a local accessible .html file
- `output_path` (string): Where to write the translated HTML (default: <name>-<lang>.html beside the input)
- `target_language` (string, required): Target language, e.g. "Spanish", "Vietnamese", "Somali"

Output parameters:

- `bytes` (number)
- `input` (string)
- `note` (string)
- `output` (string)
- `targetLanguage` (string)

### `redact_document` (~176 tokens)

Redact PII from accessible HTML (no API key)

Remove named strings (student names, emails, phone numbers, IDs) from an accessible HTML document, then VERIFY the removal: the pipeline re-scans its own output and reports `clean` plus any `leaks` that survived. Deterministic — needs NO Gemini key and nothing leaves the machine. Use before sharing a document that contains student data. A redaction that silently missed something is worse than none, which is why the verification pass is part of the result rather than an optional extra.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html file
- `output_path` (string): Where to write the redacted HTML (default: <name>-redacted.html beside the input)
- `targets` (array, required): Exact strings to remove, e.g. ["Shawn Carter", "shawn@example.org"]

Output parameters:

- `clean` (boolean): The pipeline re-scanned its own output; false means targets survived
- `input` (string)
- `leaks` (array)
- `note` (string)
- `output` (string)
- `redacted`
- `redactionCount` (number)

### `extract_document_text` (~161 tokens)

Extract text from DOCX, PPTX, XLSX or PDF (no API key)

Pull the text out of a .docx, .pptx, .xlsx or .pdf deterministically — mammoth for Word (preserving heading styles and list structure as markdown), the spreadsheet converter producing markdown tables, pdf.js for PDF text layers. Needs NO Gemini key and sends nothing anywhere. Reports the extraction `method` and any `error`, so an empty result is distinguishable from a failed one. Use to inspect a document before deciding how to remediate it, or to check whether a PDF has a usable text layer at all.

Input parameters:

- `file_path` (string, required): Absolute path to a local .docx, .pptx, .xlsx or .pdf file
- `output_path` (string): Optional path to write the extracted text

Output parameters:

- `characters` (number)
- `error` (string)
- `input` (string)
- `kind` (string)
- `mediaImages` (number)
- `method` (string|null): 'failed' means extraction failed, not that the document was empty
- `note` (string)
- `output` (string)
- `text` (string)

### `detect_form_fields` (~124 tokens)

Find fillable blanks in accessible HTML (no API key)

Scan an accessible HTML document for places that should become fillable form fields (blank lines, underscored runs, answer boxes) and report each with its label, kind, width and surrounding context, flagging any that have no label. Deterministic, no API key. Pair with apply_form_fields to turn the accepted ones into real labelled inputs. Unlabelled fields are a WCAG 4.1.2 failure, so `labelMissing` is the field to act on.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html file

Output parameters:

- `blanks` (array)
- `count` (number)
- `input` (string)
- `note` (string)
- `unlabelled` (number)

### `apply_form_fields` (~137 tokens)

Turn accepted blanks into labelled form fields (no API key)

Convert the blanks you accepted from detect_form_fields into real, labelled form inputs in the HTML. Deterministic, no API key. Pass the production pipeline's native object map keyed by candidate id, for example `{ "f0": { "label": "Student name" } }`; anything omitted is left as-is.

Input parameters:

- `accepted` (object, required): Object map keyed by ids from detect_form_fields; each value may override the label
- `file_path` (string, required): Absolute path to a local .html file
- `output_path` (string): Where to write the result (default: <name>-fillable.html beside the input)

Output parameters:

- `applied` (number)
- `bytes` (number)
- `input` (string)
- `output` (string)

### `simplify_accessible_html` (~132 tokens)

Rewrite accessible HTML in plain language

Produce a plain-language version of an accessible HTML document, preserving its structure and reading order. This is the UDL move that most changes who can use a document: an accessible PDF that is written at a graduate reading level is still inaccessible to many readers. REQUIRES a Gemini key. The simplified text is model-generated and should be reviewed by someone who knows the subject before it replaces the original.

Input parameters:

- `file_path` (string, required): Absolute path to a local accessible .html file
- `output_path` (string): Where to write the simplified HTML (default: <name>-plain.html beside the input)

Output parameters:

- `bytes` (number)
- `input` (string)
- `note` (string)
- `output` (string)

### `audit_two_engines` (~130 tokens)

Audit HTML with TWO independent engines (no API key)

Audit an accessible HTML file with axe-core AND IBM Equal Access, then report where they DISAGREE. Both run locally in the browser with no model and no API key. This matters because a single engine is a single opinion: on this project axe reported 100/0 on a document veraPDF then failed, and reported no contrast findings on text at roughly 1.6:1. Two engines that disagree give a short, concrete list a human can check. Use it before telling anyone a document is clean.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html file

Output parameters:

- `axe`
- `disagreements` (number)
- `equalAccess`
- `equalAccessError` (string)
- `input` (string)
- `note` (string)
- `onlyAxe` (array)
- `onlyEqualAccess` (array)

### `check_document_structure` (~134 tokens)

Check heading structure and extract plain text (no API key)

Report the heading hierarchy of an accessible HTML document (counts per level and any SKIPPED levels, e.g. h2 followed by h4, which is a WCAG 1.3.1 failure) and produce a plain-text rendering. Deterministic, no API key. Plain text is itself a legitimate accessible format for readers who want no markup at all, and the heading check is the cheapest way to catch a structural mistake before tagging a PDF.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html file
- `output_path` (string): Optional path to write the plain-text rendering

Output parameters:

- `characters` (number)
- `headingCounts`
- `headingIssue`
- `headingSkips` (number): Skipped levels (h2 -> h4) are a WCAG 1.3.1 failure
- `input` (string)
- `note` (string)
- `output` (string)

### `remediation_setup` (~81 tokens)

One-time environment setup

Download the Chromium browser binary the pipeline runs in (a one-time ~200MB download via Playwright, 1-5 minutes). Call this when remediation_capabilities reports chromiumInstalled: false — typically right after installing the packaged connector. Idempotent: returns immediately if Chromium is already installed. Writes only to the Playwright browser cache; needs no Gemini key.

Output parameters:

- `alreadyInstalled` (boolean)
- `error` (string)
- `installed` (boolean)
- `note` (string)
- `ok` (boolean)

### `pdf_audit` (~227 tokens)

Audit a PDF for accessibility

Run the AlloFlow accessibility audit on a local PDF, DOCX, PPTX, PNG/JPEG/WebP image, markdown/text/CSV file, or spreadsheet: overall score, per-severity issue list, scanned/searchable detection, page count, detected language. Sends document content to the Gemini API; core browser libraries are bundled locally. Writes no files. Office files are audited deterministically from extracted text (no Vision pass). Typically 1-3 minutes.

Input parameters:

- `file_path` (string, required): Absolute path to a local .pdf, .docx, .pptx, image (.png/.jpg/.webp), text (.md/.txt/.csv/.tsv), or spreadsheet (.xlsx/.xls/.xlsb/.ods) file (max 200MB)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.

Output parameters:

- `documentLanguage` (string|null)
- `hasSearchableText` (boolean)
- `isScanned` (boolean)
- `issueCounts` (object)
- `issues` (array)
- `pageCount` (number|null)
- `score` (number): Deduction-grounded accessibility score, 0-100. -1 means the audit produced no usable evidence.
- `summary` (string)

### `audit_html` (~142 tokens)

Audit an HTML file for accessibility

Run the same two-engine accessibility audit the remediation pipeline uses, on a local .html file: the AI content rubric (score, per-issue WCAG mapping) plus the axe-core automated engine. Title II is web-first — use this to evidence-check web page exports, LMS content, or any saved HTML without remediating it. Local FILE input only; this tool never fetches URLs, so nothing leaves the machine except the audited HTML going to the Gemini API under your key. Writes no files. Typically 1-2 minutes.

Input parameters:

- `file_path` (string, required): Absolute path to a local .html or .htm file (max 5MB)

Output parameters:

- `axeScore` (number|null)
- `axeViolations` (number|null)
- `fileName` (string)
- `issueCount` (number)
- `issues` (array)
- `passCount` (number|null)
- `score` (number|null)
- `sectionsAudited` (number|null)
- `sectionsRequested` (number|null)

### `pdf_validate_ua` (~156 tokens)

Validate PDF/UA-1 conformance

Independent ISO 14289-1 (PDF/UA-1) validation of a local PDF using the packaged veraPDF CLI and local Java. It fails closed if that offline validator is unavailable; it never silently uses the CDN-backed browser validator. Run it on a -tagged.pdf produced by remediation or on any PDF. Needs NO Gemini key, paid Worker, institution account, AlloFlow service, or document upload; writes nothing. Typically 30-120s including JVM startup. This is a DIFFERENT artifact from the remediation score: the score judges the accessible-HTML content; this judges the exported PDF bytes.

Input parameters:

- `file_path` (string, required): Absolute path to a local .pdf file (max 200MB)

Output parameters:

- `compliant` (boolean)
- `failedChecks` (number)
- `failedRuleCount` (number)
- `failedRules` (array)
- `input` (string)
- `inputBytes` (number)
- `inputSha256` (string)
- `note` (string)
- `passedChecks` (number)
- `passedRuleCount` (number)
- `profile` (string)
- `standard` (string)
- `transport` (string)
- `validatedAt` (string)
- `validationDurationMs` (number)
- `validator` (string)
- `validatorVersion` (string)

### `pdf_remediate` (~569 tokens)

Remediate a PDF (synchronous)

Run the full AlloFlow remediation pipeline on a local PDF: audit, rebuild as accessible HTML, iterative AI fix passes to the target score, honesty-checked verification, and a tagged PDF export. Accepts .pdf, .docx, or .pptx. Writes <name>-accessible.html, <name>-tagged.pdf, and <name>-remediation-report.json next to the input (or to output_dir), never overwriting existing files (Office inputs skip the tagged-PDF export — the accessible HTML is the deliverable). Returns the distribution verdict, before/after scores, and every fidelity/honesty disclosure. Sends document content to the Gemini API. SYNCHRONOUS: blocks 5-30 minutes — if your client enforces a tool timeout, use pdf_remediate_start + remediation_job_status instead.

Input parameters:

- `auto_continue` (boolean): Run the app's auto-continue improvement loop after the primary pass: extra fix rounds merged through the same canonical reducer the app uses, until the target score + complete verification or the rou…
- `auto_continue_rounds` (number): Max auto-continue rounds (default 3)
- `file_path` (string, required): Absolute path to a local .pdf, .docx, .pptx, image (.png/.jpg/.webp), text (.md/.txt/.csv/.tsv), or spreadsheet (.xlsx/.xls/.xlsb/.ods) file (max 200MB)
- `fix_passes` (number): Max auto-fix passes (default 2)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.
- `output_dir` (string): Directory for output files (default: alongside the input)
- `page_range` (string): Remediate only these 1-indexed pages of a PDF, e.g. "12-18" or "5". Big quota/time saver on long documents; the pipeline treats a full-document range as no range. PDF inputs only.
- `polish_passes` (number): Extra polish passes (default 0)
- `tagged_pdf` (boolean): Also build the tagged PDF export (default true)
- `target_score` (number): Stop-improving target (default 95)
- `validate_ua` (boolean): Also run the independent keyless PDF/UA-1 (ISO 14289-1) veraPDF check on the tagged output and include its verdict in the report (default false; ~1 min extra)

Output parameters:

- `activeContentDetected` (boolean|null)
- `activeContentScanVerified` (boolean|null)
- `afterScore` (number|null)
- `aiVerificationIncomplete` (boolean|null): True when the AI semantic audit degraded — the headline is then the deterministic score
- `auditCoverage` (object|null)
- `autoContinue`
- `beforeScore` (number|null)
- `estimatedMinimumScore` (number|null)
- `fidelityNotes`
- `files` (object)
- `input` (string)
- `integrityCoverage`
- `integrityWarning`
- `note` (string)
- `pdfUa` (object)
- `remainingAxeViolations` (number|null)
- `remainingEqualAccessFailures` (number|null)
- `runId`
- `scoreSource` (string|null)
- `stats`
- `taggedPdfDelivery` (object|null)
- `taggedPdfError`
- `taggedPdfExportMode` (string|null)
- `verdict` (object|null)
- `verificationHtmlBound` (boolean|null)
- `verificationState` (string|null)

### `pdf_remediate_start` (~556 tokens)

Start a remediation job

Start the same remediation as pdf_remediate as a BACKGROUND JOB and return a job_id immediately. Jobs run one at a time in start order. Poll remediation_job_status (every 30-60s is plenty; runs take 5-30 minutes), then fetch remediation_job_result. Accepts .pdf, .docx, or .pptx. Writes <name>-accessible.html, <name>-tagged.pdf, and <name>-remediation-report.json next to the input (or to output_dir), never overwriting existing files (Office inputs skip the tagged-PDF export — the accessible HTML is the deliverable). Returns the distribution verdict, before/after scores, and every fidelity/honesty disclosure. Sends document content to the Gemini API.

Input parameters:

- `auto_continue` (boolean): Run the app's auto-continue improvement loop after the primary pass: extra fix rounds merged through the same canonical reducer the app uses, until the target score + complete verification or the rou…
- `auto_continue_rounds` (number): Max auto-continue rounds (default 3)
- `file_path` (string, required): Absolute path to a local .pdf, .docx, .pptx, image (.png/.jpg/.webp), text (.md/.txt/.csv/.tsv), or spreadsheet (.xlsx/.xls/.xlsb/.ods) file (max 200MB)
- `fix_passes` (number): Max auto-fix passes (default 2)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.
- `output_dir` (string): Directory for output files (default: alongside the input)
- `page_range` (string): Remediate only these 1-indexed pages of a PDF, e.g. "12-18" or "5". Big quota/time saver on long documents; the pipeline treats a full-document range as no range. PDF inputs only.
- `polish_passes` (number): Extra polish passes (default 0)
- `tagged_pdf` (boolean): Also build the tagged PDF export (default true)
- `target_score` (number): Stop-improving target (default 95)
- `validate_ua` (boolean): Also run the independent keyless PDF/UA-1 (ISO 14289-1) veraPDF check on the tagged output and include its verdict in the report (default false; ~1 min extra)

Output parameters:

- `files` (number)
- `jobId` (string): Pass to remediation_job_status / _result / _cancel
- `note` (string)
- `status` (string)

### `pdf_batch_remediate_start` (~480 tokens)

Start a folder batch job

Start a BACKGROUND JOB that remediates every .pdf/.docx/.pptx in a folder (non-recursive, up to 60 files), one at a time, continuing past per-file failures. Returns a job_id immediately; poll remediation_job_status for per-file progress and fetch remediation_job_result for the per-file summaries. Same outputs and options as pdf_remediate, applied to each file.

Input parameters:

- `auto_continue` (boolean): Run the app's auto-continue improvement loop after the primary pass: extra fix rounds merged through the same canonical reducer the app uses, until the target score + complete verification or the rou…
- `auto_continue_rounds` (number): Max auto-continue rounds (default 3)
- `dir_path` (string, required): Folder containing .pdf/.docx/.pptx files (searched non-recursively)
- `fix_passes` (number): Max auto-fix passes (default 2)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.
- `output_dir` (string): Directory for output files (default: alongside the input)
- `page_range` (string): Remediate only these 1-indexed pages of a PDF, e.g. "12-18" or "5". Big quota/time saver on long documents; the pipeline treats a full-document range as no range. PDF inputs only.
- `polish_passes` (number): Extra polish passes (default 0)
- `skip_existing` (boolean): Skip only files with a digest-bound completion manifest whose input, options, engine, and artifact hashes all verify (default true)
- `tagged_pdf` (boolean): Also build the tagged PDF export (default true)
- `target_score` (number): Stop-improving target (default 95)
- `validate_ua` (boolean): Also run the independent keyless PDF/UA-1 (ISO 14289-1) veraPDF check on the tagged output and include its verdict in the report (default false; ~1 min extra)

Output parameters:

- `files` (number)
- `jobId` (string): Pass to remediation_job_status / _result / _cancel
- `note` (string)
- `status` (string)

### `pdf_batch_audit_start` (~352 tokens)

Triage a folder (audit only)

Start a BACKGROUND JOB that AUDITS every .pdf/.docx/.pptx in a folder (non-recursive, up to 200 files) and writes one triage scoreboard. This is the cheap first pass before remediation: an audit is 1-3 minutes and writes no document files, where a remediation is 5-30 minutes and spends far more quota, so run this to find out WHICH files are worth remediating instead of remediating a folder blind. Each document is sorted into a band that names the next action: scanned (image-only, needs OCR first), needs-work (<70), review (70-89), likely-ok (90+). Writes accessibility-audit-scoreboard.json and .csv (collision-safe, never overwrites); the CSV opens in Excel. Sends document content to the Gemini API. Poll remediation_job_status for per-file progress; remediation_job_result returns the scoreboard.

Input parameters:

- `dir_path` (string, required): Folder containing .pdf/.docx/.pptx files (searched non-recursively)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.
- `output_dir` (string): Where to write the scoreboard (default: the audited folder)
- `skip_existing` (boolean): Skip files already recorded as audited in a scoreboard in the output folder — makes an interrupted triage resumable without re-spending quota. Their prior rows are carried into the new scoreboard so…

Output parameters:

- `files` (number)
- `jobId` (string): Pass to remediation_job_status / _result / _cancel
- `note` (string)
- `status` (string)

### `pdf_remediate_from_scoreboard_start` (~592 tokens)

Remediate what the triage flagged

Start a BACKGROUND JOB that remediates only the documents a triage scoreboard put in the bands you name (default: needs-work). This closes the triage loop: pdf_batch_audit_start finds which documents need work, this fixes exactly those, so a folder that would be an overnight serial run becomes the handful that earned it. Point it at a scoreboard with scoreboard_path, or at a folder with dir_path to use that folder's newest scoreboard. Files listed in the scoreboard but no longer on disk are reported, not silently dropped. Same outputs, options, and resumability as pdf_batch_remediate_start.

Input parameters:

- `auto_continue` (boolean): Run the app's auto-continue improvement loop after the primary pass: extra fix rounds merged through the same canonical reducer the app uses, until the target score + complete verification or the rou…
- `auto_continue_rounds` (number): Max auto-continue rounds (default 3)
- `bands` (array): Which triage bands to remediate (default ['needs-work']). 'scanned' documents are remediable but slower — they take the full OCR path.
- `dir_path` (string): Folder whose NEWEST audit scoreboard should be used (pass this OR scoreboard_path)
- `fix_passes` (number): Max auto-fix passes (default 2)
- `ocr_language` (string): Supported lower-case ISO/BCP 47 OCR language tag (for example 'es', 'fr', or 'zh-hant'); omit or pass '' for auto-detect. Legacy Tesseract codes such as 'spa' and 'fra' are not accepted.
- `output_dir` (string): Directory for output files (default: alongside the input)
- `page_range` (string): Remediate only these 1-indexed pages of a PDF, e.g. "12-18" or "5". Big quota/time saver on long documents; the pipeline treats a full-document range as no range. PDF inputs only.
- `polish_passes` (number): Extra polish passes (default 0)
- `scoreboard_path` (string): Path to an accessibility-audit-scoreboard*.json written by pdf_batch_audit_start (pass this OR dir_path)
- `skip_existing` (boolean): Skip only documents with a digest-bound completion manifest whose input, options, engine, and artifact hashes all verify (default true)
- `tagged_pdf` (boolean): Also build the tagged PDF export (default true)
- `target_score` (number): Stop-improving target (default 95)
- `validate_ua` (boolean): Also run the independent keyless PDF/UA-1 (ISO 14289-1) veraPDF check on the tagged output and include its verdict in the report (default false; ~1 min extra)

Output parameters:

- `bands` (array)
- `files` (number)
- `jobId` (string)
- `missingFromDisk` (number)
- `note` (string)
- `scoreboard` (string)
- `selectedFrom` (number): How many documents the scoreboard scored, of which `files` were selected
- `status` (string)

### `remediation_job_status` (~63 tokens)

Check a remediation job

Status of a remediation job (queued/running/completed/failed/cancelled) plus the most recent pipeline telemetry lines — throttle waits show up here, so a slow job is distinguishable from a stuck one. Read-only.

Input parameters:

- `job_id` (string, required)

Output parameters:

- `createdAt` (string)
- `durabilityWarning` (string)
- `error` (string)
- `finishedAt` (string|null)
- `fromPreviousServerRun` (boolean)
- `input`
- `interruptedNote` (string)
- `jobId` (string)
- `kind` (string)
- `ok` (boolean)
- `partial` (boolean)
- `progress` (object)
- `recentLog` (array)
- `restored` (boolean)
- `result`
- `resultAvailable` (boolean)
- `startedAt` (string|null)
- `status` (string)

### `remediation_job_result` (~55 tokens)

Fetch a remediation job result

The completed job's full summary (verdict, scores, honesty disclosures, output file paths; per-file summaries for batch jobs). Available only once remediation_job_status reports completed. Read-only.

Input parameters:

- `job_id` (string, required)

Output parameters:

- `createdAt` (string)
- `durabilityWarning` (string)
- `error` (string)
- `finishedAt` (string|null)
- `fromPreviousServerRun` (boolean)
- `input`
- `interruptedNote` (string)
- `jobId` (string)
- `kind` (string)
- `ok` (boolean)
- `partial` (boolean)
- `progress` (object)
- `recentLog` (array)
- `restored` (boolean)
- `result`
- `resultAvailable` (boolean)
- `startedAt` (string|null)
- `status` (string)

### `remediation_job_diagnostics` (~106 tokens)

Fetch run diagnostics (numbers only)

The diagnostic snapshot for a run: the per-call ledger (outcomes, timings, byte counts, retries, models), throttle events, and the constants in force. Counts, timings, and enums only — never prompts, responses, or document text. Pass job_id for a background job; omit it for the most recent run in this server session. Use this to debug a slow, failing, or rate-limited run. Read-only.

Input parameters:

- `job_id` (string)

Output parameters:

- `capturedAt` (string)
- `diagnostics`
- `error` (string)
- `fileName` (string)
- `jobId` (string)
- `ok` (boolean)
- `source` (string)

### `remediation_job_cancel` (~52 tokens)

Cancel a remediation job

Cancel a queued job (it never starts) or the running one (its browser context closes and in-flight AI calls die within seconds). Output files already written stay on disk.

Input parameters:

- `job_id` (string, required)

Output parameters:

- `durabilityWarning` (string)
- `error` (string)
- `jobId` (string)
- `killedRun` (boolean)
- `ok` (boolean)
- `status` (string)
- `wasRunning` (boolean)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia#diagnostics

## Score history

- 2026-08-22: 46
- 2026-08-21: 46
- 2026-08-20: 46
- 2026-08-19: 46
- 2026-08-18: 46
- 2026-08-17: 46

## Links

- Repository: https://github.com/Apomera/AlloFlow
- Changelog RSS feed: https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia.xml
- Changelog JSON feed: https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia.json
- HTML version of this page: https://verifymcp.io/servers/apomera-alloflow-remediation/https-github-com-apomera-alloflow-releases-download-mcpb-v0-3-5-alloflow-remedia
