Skip to main content
Every step type the workflow engine supports has its own reference page. The prose on each page is hand-written; the Configuration and Output schema sections are generated from STEP_SCHEMAS in @eigenpal/types, so they always match what the engine actually accepts and returns. Steps fall into four categories, see Workflows for how they fit together.

Full catalog

AI steps

StepTypeSummary
Parse Documentai.parseExtract text from documents (PDF, DOCX, images) using OCR or vision models
Extract Dataai.extractExtract structured data from text using AI with a JSON schema
Split Documentai.splitSplit a parsed document into named sections using an LLM. Consumes ai.parse output; emits per-section page ranges and text ready for downstream ai.extract via control.parallel_map.
Classifyai.classifyClassify a document or text into one of a fixed label set using an LLM. Output exposes the picked label (constrained to the configured names), a coarse confidence, and a short justification. Pair with control.fail to reject documents that match an undesired label.

Transform steps

StepTypeSummary
Set Valuetransform.setSet key-value pairs in the output object
Remove Fieldstransform.removeRemove specified fields from an object
Combine Datatransform.combineMerge multiple objects or concatenate arrays
Split Datatransform.splitSplit a string by delimiter or extract keys from an object
Merge Inputstransform.mergeMerge multiple named inputs into a single output
Fill Templatetransform.templateFill a DOCX template with data. Use list_templates tool to get template IDs and their placeholder schemas.
Embed PDF Texttransform.pdf-embedEmbed OCR text layer into scanned PDFs/images to make them searchable
XLSX to JSONtransform.xlsx-to-jsonConvert XLSX spreadsheet to JSON array of row objects for use in scripts or downstream steps
Scripttransform.scriptExecute a TypeScript function in a QuickJS sandbox. Input keys become the function’s parameter list, in declaration order, and the required : R return-type annotation IS this step’s output schema: inputs: { items, taxRate }function script(items: …, taxRate: …): R { … }.
Text Chunkertransform.text-chunkerSplit long text into chunks with regex-anchored boundaries, overlap, and header preservation. Accepts raw text or a parsed-document object; chunks carry source page indexes when pages are provided.
Regex Extracttransform.regex-extractPull named fields from text via regex patterns (deterministic counterpart to ai.extract). Accepts raw text or a parsed-document object; matches carry _evidence.pageIndex when pages are provided.

Action steps

StepTypeSummary
HTTP Requestaction.httpMake an HTTP request to an external API
Invoke Workflowaction.invoke-workflowExecute another workflow and return its output
Website Readeraction.website-readerFetch a webpage and convert content to markdown

Control steps

StepTypeSummary
Conditioncontrol.ifBranch execution based on a condition expression
For Eachcontrol.foreachLoop over an array and execute steps for each item
Parallel Mapcontrol.parallel_mapIterate over an array with concurrent execution up to a limit
Parallelcontrol.parallelExecute multiple branches concurrently
Waitcontrol.waitPause workflow execution for a specified duration
Blockcontrol.blockExecute a reusable block workflow inline with input/output mapping
Failcontrol.failTerminate the workflow with a typed status code + message. With an optional condition, only fails when the condition is truthy; otherwise always fails when reached. Pair with ai.classify or any prior step to fail fast on bad inputs.