Reference
Manifest reference
Full schema for a Cori workflow manifest — required fields, optional fields, parameter types, and validation rules.
A workflow manifest is the manifest.md file at the root of a workflow folder. The frontmatter block contains the workflow's identity and configuration. The body (below the frontmatter) is human-readable documentation.
Required fields
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier, kebab-case. Used in run keys and traces. |
name | string | Human-readable name, shown in cori show and run lists. |
description | string | One-sentence description of what the workflow does. |
created | string | ISO 8601 date of initial creation ("2025-01-15"). |
version | string | Semver string ("1.0.0"). Increment on breaking changes. |
Optional fields
| Field | Type | Description |
|---|---|---|
updated | string | ISO 8601 date of last update. |
parameters | array | List of parameter objects (see below). |
tools_required | array of strings | CLI binaries required by cli steps. Validated at cori check time. |
mcp_servers | array of strings | MCP server names required by mcp_tool steps. Validated at cori check time. |
tags | array of strings | Free-form tags for organization. |
schedule | string | Cron expression for automatic scheduling. |
schedule_tz | string | IANA timezone for schedule (default: "UTC"). |
Parameter object
| Field | Type | Required | Description |
|---|---|---|---|
name | string | ✓ | Parameter name, used on the CLI (name=value). |
type | enum | ✓ | One of: string, number, boolean, enum, path. |
description | string | ✓ | What this parameter is for. |
default | any | Default value. If omitted, the parameter is required. | |
options | array | For enum only | Allowed values for enum type. |
Full example
---
id: translate-product-sheets-fr
name: Translate product sheets to French
description: Reads a product CSV, translates the description column to French using an LLM, and writes results to a Google Sheet.
version: "1.0.0"
created: "2025-01-15"
updated: "2025-02-03"
parameters:
- name: input_file
type: path
description: Path to the source CSV file
- name: spreadsheet_id
type: string
description: Google Sheets spreadsheet ID to write results to
- name: dry_run
type: boolean
default: false
description: If true, skip the write step
tools_required:
- csvkit
mcp_servers:
- google-sheets
tags:
- translation
- sheets
---
Reads `input_file`, translates the `description` column to French using GPT-4o-mini,
validates GPSR compliance for each row, and writes the results to the `FR` tab
of the specified Google Sheet.Validation rules
All validation happens at cori check time (i.e., when the workflow compiles), not at any separate registration step. There is no registry.
idmust be unique within a folder. Globally, refs differentiate by path.versionmust be valid semver.- All entries in
tools_requiredmust be findable onPATHof the running worker. - All entries in
mcp_serversmust be declared and available in the worker's MCP config. - Parameters without a
defaultare required;cori runfails with a clear error if they're missing.
What not to put in frontmatter
- Credentials or API keys — use
~/.cori/config.tomland the OS keychain. - Worker routing — task queues and worker assignment are computed, not authored. Do not put routing configuration in the manifest.
- Provider configuration — model providers are configured at the worker level, not per-workflow.
The schedule and schedule_tz fields are accepted by the compiler. Confirm scheduling is wired in the v1 runtime before relying on it. See Schedule a workflow.