Flow Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Flow Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Agent-native workflow kernel. 工作流不必只能是 Dify、n8n 或扣子。
oflow-mcp is a workflow-only MCP server. It treats workflow as an open execution protocol for AI Agents: text-defined, versionable, checkpointed, recoverable, and callable through MCP tools.
Traditional workflow platforms often center on visual canvases, proprietary node graphs, and hosted platform state. oflow-mcp starts from a different premise:
flow.yaml + prompts/*.md, so they can be reviewed, diffed, versioned, and reused.This first release intentionally excludes:
flow-mcpnpm install
npm run buildnpm startMCP configuration example:
{
"mcpServers": {
"oflow-mcp": {
"command": "node",
"args": ["/path/to/oflow-mcp/dist/index.js"],
"env": {
"OFLOW_MCP_FLOWS_DIR": "/path/to/oflow-mcp/flows",
"OFLOW_MCP_DATA_DIR": "/tmp/oflow-mcp-instances"
}
}
}
}| Variable | Default | Description |
|---|---|---|
OFLOW_MCP_HOME | ~/.oflow-mcp | Base data directory |
OFLOW_MCP_FLOWS_DIR | $OFLOW_MCP_HOME/flows | Workflow template directory |
OFLOW_MCP_DATA_DIR | $OFLOW_MCP_HOME/instances | Workflow instance directory |
oflow-mcp exposes only workflow tools:
| Tool | Description |
|---|---|
workflow_list_templates | List available templates |
workflow_get_template | Get template details |
workflow_start | Start a workflow instance |
workflow_current | Get current step and rendered prompt |
workflow_advance | Complete current step and advance |
workflow_status | Show full instance status |
workflow_list_instances | List instances |
workflow_bind | Bind alias to an instance |
workflow_override_prompt | Override one step prompt for one instance |
workflow_create_template | Create a template from YAML-like data and prompts |
workflow_events | Query append-only event log by instance/type/step/limit |
workflow_dashboard | Show Agent control-plane state, checkpoint blockers, inbox summary, and suggested actions |
workflow_worklog | Generate a Markdown worklog from instance state and events |
workflow_inbox_save | Save lightweight inbox entries for an instance |
workflow_inbox_list | List lightweight inbox entries |
workflow_inbox_mark | Mark inbox entries as new, seen, or acted |
workflow_validate_template | Report template health issues such as unreachable steps and invalid prompt references |
No flow_memory_*, flow_init, TAPD, or Confluence tools are exposed. workflow_inbox_* is a local lightweight inbox for workflow control-plane coordination; it does not call external systems.
flows/
basic-dev/
flow.yaml
prompts/
analyze.md
design.md
verify.mdMinimal flow.yaml:
name: basic-dev
description: Minimal Agent-native development workflow
params:
change_name:
type: string
required: true
steps:
- id: analyze
name: Analyze
checkpoint:
required_outputs:
analysis_summary:
type: string
min_length: 20
optional_outputs:
risk_notes:
type: string
evidence:
- key: test_log
required: true
description: Test log or command output
approvals:
- key: user_confirmed
required: false
description: User approval when needed
conditions:
- natural: analysis_summary has been produced
check: outputs.analysis_summary != null AND len(outputs.analysis_summary) > 20
next: design
- id: design
name: Design
next: nullPrompt variables:
{{change_name}} reads workflow params.{{steps.analyze.outputs.analysis_summary}} reads prior step outputs.| Feature | Status |
|---|---|
params object and string-array compatibility | Supported |
steps with id, name, checkpoint, next | Supported |
next as string/null/object branch map | Supported |
prompts/<step_id>.md | Supported |
required_outputs array or object | Supported |
| natural conditions | Supported |
deterministic check expressions | Supported subset |
token_budget.total and token_consumed | Supported |
| loops | Not supported in first release |
| optimization hints | Not supported |
| worklog generation | Supported through workflow_worklog |
| local inbox | Supported through workflow_inbox_*; no external sync |
| memory/external bindings | Not supported |
Supported check expressions:
outputs.foo != nulloutputs.foo == nulloutputs.foo == 'value'len(outputs.foo) > NAND, OR, parenthesesUnsupported expressions fail closed and do not mutate workflow state.
workflow_events accepts:
{
"instance_id": "wf_...",
"type": "step.completed",
"step_id": "verify",
"since": "2026-06-23T00:00:00.000Z",
"until": "2026-06-24T00:00:00.000Z",
"only_failures": false,
"include_payload": false,
"summary": true,
"limit": 50
}limit defaults to 50 and is capped at 200. Malformed JSONL audit lines are skipped so one bad event does not hide the rest. Payloads are omitted by default; use summary=true for safe payload summaries or include_payload=true for full payloads.
workflow_dashboard accepts:
{
"instance_id": "wf_...",
"include_prompt": true,
"include_recent_events": true,
"include_inbox": true,
"verbose": false
}The dashboard reports progress, risk, checkpoint readiness, and structured suggested_actions with action_type, title, reason, tool_hint, and risk. It summarizes outputs with keys and short previews rather than returning full output payloads.
workflow_worklog returns { "markdown": "...", "summary": { ... } }. It supports mode: "summary" | "full" | "handoff" | "release_note" and optional write_file; when writing, paths are resolved under OFLOW_MCP_DATA_DIR. The generated Markdown includes step timeline, output summaries, validation failures, and current state.
workflow_inbox_save/list/mark stores local coordination items under OFLOW_MCP_DATA_DIR/inbox/<instance_id>.json. Entries support priority: "low" | "medium" | "high" | "blocking" and optional step_id; dashboard risk aggregates high/blocking items. Deduplication uses external_id first; otherwise it uses source + type + title + date. These tools do not call Git, CI, TAPD, IM, or review systems.
workflow_validate_template returns { "valid": boolean, "errors": [], "warnings": [] } for control-plane health checks including unreachable steps, invalid checkpoint expressions, undeclared prompt params, missing step references, duplicate evidence/approval keys, empty conditions, unused prompts, branch shape warnings, and missing descriptions. Issues include severity and suggestion when available.
The workflow kernel includes the first P0/P1 hardening batch:
version field and state writes use optimistic locking to reject stale saves.template_snapshot and prompt_snapshots, so later template edits do not change in-flight workflow semantics.events/<instance_id>.jsonl for audit/debug.workflow_status returns output keys and short previews rather than full outputs by default.{ "ok": true, "data": ... } or { "ok": false, "error": ... }.workflow_list_templatesworkflow_start:{
"template": "basic-dev",
"params": { "change_name": "demo" },
"alias": "demo-run"
}workflow_current with demo-runworkflow_dashboard to inspect blockers and suggested actionsworkflow_advance with required outputs, confirmed conditions, and any required evidence/approvalsworkflow_events or workflow_worklog for audit/debugworkflow_advance until completednpm install
npm run build
npm testOFLOW_MCP_FLOWS_DIR or copy templates to ~/.oflow-mcp/flows.prompts/<step_id>.md.details.missing_required, details.missing_evidence, details.missing_approvals, and details.suggestions.condition_result matching the branch keys in next.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.