AlloFlow Document Remediation
MCPB · ALLOFLOW-REMEDIATION.MCPB · SCANNED AUG 22
Local-first document accessibility remediation using the canonical AlloFlow app pipeline.
Available components
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. How we score →
Supply Chain Security23
- Malware scan not yet available for this package.Unverified
- Known CVEs were checked across the 3 of 3 dependencies we could resolve, so this covers what we could see, not the whole tree.Partial
- No install/post-install scripts declared.Pass
- 1 of 3 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (AGPL-3.0-or-later).Pass
- Actively maintained (last published 4 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
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.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
mcpb · alloflow-remediation.mcpb
Download bundleEvery change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Aug 26 46
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 22 Aug 2026 · Analysed mcpb/https://github.com/Apomera/AlloFlow/releases/download/mcpb-v0.3.5/alloflow-remediation.mcpb
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | mcpb |
Dependencies 3 packages
| Packages resolved | 3 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
apply_form_fields Turn accepted blanks into labelled form fields (no API key) ~137
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.
| Name | Type | Req | Description |
|---|---|---|---|
| accepted | object | yes | Object map keyed by ids from detect_form_fields; each value may override the label |
| file_path | string | yes | Absolute path to a local .html file |
| output_path | string | – | Where to write the result (default: <name>-fillable.html beside the input) |
| Name | Type | Req | Description |
|---|---|---|---|
| applied | number | – | – |
| bytes | number | – | – |
| input | string | yes | – |
| output | string | yes | – |
No examples provided.
audit_html Audit an HTML file for accessibility ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .html or .htm file (max 5MB) |
| Name | Type | Req | Description |
|---|---|---|---|
| axeScore | number|null | – | – |
| axeViolations | number|null | – | – |
| fileName | string | – | – |
| issueCount | number | – | – |
| issues | array | – | – |
| passCount | number|null | – | – |
| score | number|null | – | – |
| sectionsAudited | number|null | – | – |
| sectionsRequested | number|null | – | – |
No examples provided.
audit_two_engines Audit HTML with TWO independent engines (no API key) ~130
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .html file |
| Name | Type | Req | Description |
|---|---|---|---|
| axe | – | yes | – |
| disagreements | number | – | – |
| equalAccess | – | – | – |
| equalAccessError | string | – | – |
| input | string | yes | – |
| note | string | – | – |
| onlyAxe | array | – | – |
| onlyEqualAccess | array | – | – |
No examples provided.
check_document_structure Check heading structure and extract plain text (no API key) ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .html file |
| output_path | string | – | Optional path to write the plain-text rendering |
| Name | Type | Req | Description |
|---|---|---|---|
| characters | number | yes | – |
| headingCounts | – | – | – |
| headingIssue | – | – | – |
| headingSkips | number | – | Skipped levels (h2 -> h4) are a WCAG 1.3.1 failure |
| input | string | yes | – |
| note | string | – | – |
| output | string | – | – |
No examples provided.
describe_images Generate alt text for images in accessible HTML ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cap | number | – | Maximum image groups to describe (default 10) |
| file_path | string | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| charts | number | – | – |
| classified | number | – | – |
| dedupedCopies | number | – | – |
| equations | number | – | – |
| input | string | yes | – |
| note | string | – | – |
| output | string | yes | – |
| visionCalls | number | – | – |
No examples provided.
detect_form_fields Find fillable blanks in accessible HTML (no API key) ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .html file |
| Name | Type | Req | Description |
|---|---|---|---|
| blanks | array | – | – |
| count | number | yes | – |
| input | string | yes | – |
| note | string | – | – |
| unlabelled | number | – | – |
No examples provided.
export_accessible_office Export accessible HTML to Word or ODT ~183
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local accessible .html file |
| format | string | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| counts | – | – | – |
| format | string | yes | – |
| input | string | yes | – |
| note | string | – | – |
| output | string | yes | – |
No examples provided.
export_alt_format Export to ePub 3, DAISY 3, or Braille (no API key) ~323
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local accessible .html file |
| format | string | yes | '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) |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| code | string | – | – |
| droppedCharacters | number | – | – |
| entries | array | – | – |
| format | string | yes | – |
| grade | number | – | – |
| identifier | string | – | – |
| input | string | yes | – |
| language | string | – | – |
| modelFree | boolean | – | – |
| navEntries | number | – | – |
| note | string | – | – |
| output | string | yes | – |
| selfChecked | boolean | – | – |
| sourceCharacters | number | – | – |
| structuralErrors | array | – | – |
| valid | boolean | – | – |
| warnings | array | – | – |
No examples provided.
extract_document_text Extract text from DOCX, PPTX, XLSX or PDF (no API key) ~161
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .docx, .pptx, .xlsx or .pdf file |
| output_path | string | – | Optional path to write the extracted text |
| Name | Type | Req | Description |
|---|---|---|---|
| characters | number | yes | – |
| error | string | – | – |
| input | string | yes | – |
| kind | string | yes | – |
| mediaImages | number | – | – |
| method | string|null | – | 'failed' means extraction failed, not that the document was empty |
| note | string | – | – |
| output | string | – | – |
| text | string | – | – |
No examples provided.
fix_contrast Repair colour contrast (no API key) ~172
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| axeAfter | – | – | – |
| axeBefore | – | – | – |
| changed | boolean | – | – |
| contrastFindings | – | – | – |
| evidence | string | – | States plainly that axe does not verify contrast in this harness |
| input | string | yes | – |
| output | string | yes | – |
| styleFixes | number|null | – | Deterministic count of colour corrections applied — this is the evidence, not the axe numbers |
No examples provided.
generate_conformance_report Generate the AlloFlow conformance report ~199
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.
| Name | Type | Req | Description |
|---|---|---|---|
| accessible_html | string | – | Optional path to the remediated HTML, so the report can reference the content it describes |
| audit_json | string | yes | 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 | yes | 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 |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| generator | string | – | – |
| note | string | – | – |
| output | string | yes | – |
| pdfUaIncluded | boolean | – | – |
No examples provided.
generate_resource_pack Generate an AlloFlow resource pack (no API key) ~153
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`.
| Name | Type | Req | Description |
|---|---|---|---|
| output_path | string | yes | Where to write the generated .html file (collision-safe; existing files are not overwritten) |
| resource_pack_json | string | yes | Absolute path to a local .json file containing {items, topic?, isWorksheet?, responses?, config?} |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| generator | string | – | – |
| input | string | yes | – |
| modelFree | boolean | – | – |
| note | string | – | – |
| output | string | yes | – |
| resourcesRequested | number | yes | – |
| worksheet | boolean | – | – |
No examples provided.
pdf_audit Audit a PDF for accessibility ~227
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
No examples provided.
pdf_batch_audit_start Triage a folder (audit only) ~352
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dir_path | string | yes | 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| files | number | – | – |
| jobId | string | yes | Pass to remediation_job_status / _result / _cancel |
| note | string | – | – |
| status | string | yes | – |
No examples provided.
pdf_batch_remediate_start Start a folder batch job ~480
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| files | number | – | – |
| jobId | string | yes | Pass to remediation_job_status / _result / _cancel |
| note | string | – | – |
| status | string | yes | – |
No examples provided.
pdf_remediate Remediate a PDF (synchronous) ~569
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | – |
| input | string | yes | – |
| 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 | – | – |
No examples provided.
pdf_remediate_from_scoreboard_start Remediate what the triage flagged ~592
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| bands | array | – | – |
| files | number | – | – |
| jobId | string | yes | – |
| missingFromDisk | number | – | – |
| note | string | – | – |
| scoreboard | string | – | – |
| selectedFrom | number | – | How many documents the scoreboard scored, of which `files` were selected |
| status | string | yes | – |
No examples provided.
pdf_remediate_start Start a remediation job ~556
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| files | number | – | – |
| jobId | string | yes | Pass to remediation_job_status / _result / _cancel |
| note | string | – | – |
| status | string | yes | – |
No examples provided.
pdf_validate_ua Validate PDF/UA-1 conformance ~156
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local .pdf file (max 200MB) |
| Name | Type | Req | Description |
|---|---|---|---|
| compliant | boolean | yes | – |
| failedChecks | number | – | – |
| failedRuleCount | number | – | – |
| failedRules | array | – | – |
| input | string | – | – |
| inputBytes | number | yes | – |
| inputSha256 | string | yes | – |
| note | string | – | – |
| passedChecks | number | – | – |
| passedRuleCount | number | – | – |
| profile | string | – | – |
| standard | string | – | – |
| transport | string | – | – |
| validatedAt | string | yes | – |
| validationDurationMs | number | – | – |
| validator | string | – | – |
| validatorVersion | string | – | – |
No examples provided.
redact_document Redact PII from accessible HTML (no API key) ~176
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | 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 | yes | Exact strings to remove, e.g. ["Shawn Carter", "shawn@example.org"] |
| Name | Type | Req | Description |
|---|---|---|---|
| clean | boolean | yes | The pipeline re-scanned its own output; false means targets survived |
| input | string | yes | – |
| leaks | array | – | – |
| note | string | – | – |
| output | string | yes | – |
| redacted | – | – | – |
| redactionCount | number | – | – |
No examples provided.
remediation_capabilities Check remediation environment ~57
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Current build/components are intact and this process verified the configured key. |
| readyMeans | string | – | – |
| runtimeBuild | object | – | – |
| setupHint | string | – | – |
| singleFlight | boolean | – | – |
| vendorAssets | object | – | – |
No examples provided.
remediation_job_cancel Cancel a remediation job ~52
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.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| durabilityWarning | string | – | – |
| error | string | – | – |
| jobId | string | – | – |
| killedRun | boolean | – | – |
| ok | boolean | – | – |
| status | string | – | – |
| wasRunning | boolean | – | – |
No examples provided.
remediation_job_diagnostics Fetch run diagnostics (numbers only) ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| capturedAt | string | – | – |
| diagnostics | – | – | – |
| error | string | – | – |
| fileName | string | – | – |
| jobId | string | – | – |
| ok | boolean | yes | – |
| source | string | – | – |
No examples provided.
remediation_job_result Fetch a remediation job result ~55
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.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
No examples provided.
remediation_job_status Check a remediation job ~63
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.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
No examples provided.
remediation_selftest Prove this install can actually remediate ~140
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| afterScore | – | – | – |
| beforeScore | – | – | – |
| checks | object | – | – |
| durationMs | number | – | – |
| error | string | – | – |
| hint | string | – | – |
| modelCalls | number | – | – |
| note | string | – | – |
| ok | boolean | yes | – |
| stage | string | yes | 'complete' on success; otherwise the stage that broke: assets | browser | module-boot | ownership-gate | audit-contract | run | output |
No examples provided.
remediation_setup One-time environment setup ~81
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| alreadyInstalled | boolean | – | – |
| error | string | – | – |
| installed | boolean | – | – |
| note | string | – | – |
| ok | boolean | yes | – |
No examples provided.
remediation_verify_key Test whether the Gemini key actually works ~132
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.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| checked | boolean | yes | – |
| checkedAt | string | – | – |
| detail | string | – | – |
| documentContentSent | boolean | yes | – |
| geminiKeySource | string | – | – |
| keyWorks | boolean|null | yes | true/false when tested; null when no key or the API was unreachable |
| setup | string | – | – |
| state | string | yes | – |
No examples provided.
simplify_accessible_html Rewrite accessible HTML in plain language ~132
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Absolute path to a local accessible .html file |
| output_path | string | – | Where to write the simplified HTML (default: <name>-plain.html beside the input) |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| input | string | yes | – |
| note | string | – | – |
| output | string | yes | – |
No examples provided.
transcribe_media Transcribe audio or video to an accessible transcript ~201
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | 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) |
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | – |
| mode | string | – | – |
| note | string | – | – |
| output | string | yes | – |
| words | number | – | – |
No examples provided.
translate_accessible_html Translate accessible HTML into another language ~157
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | 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 | yes | Target language, e.g. "Spanish", "Vietnamese", "Somali" |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | number | – | – |
| input | string | yes | – |
| note | string | – | – |
| output | string | yes | – |
| targetLanguage | string | – | – |
No examples provided.