Agent automation framework with native MCP support
npm install @marktoflow/cli> Command-line interface for running markdown-based workflow automations.

Part of marktoflow — open-source markdown workflow automation.
``bash
npm install -g @marktoflow/cli
marktoflow init
marktoflow run workflow.md
`
Or without installing:
`bash`
npx @marktoflow/cli run workflow.md
- Workflow Execution — Run markdown workflows from the terminal
- Dry Run Mode — Test workflows without executing actions
- OAuth Integration — Easy OAuth setup for Gmail, Outlook, Google services
- Scheduling — Background cron-based workflow scheduling
- Webhooks — Built-in HTTP server for event-driven workflows
- Templates — Create workflows from built-in templates
- Diagnostics — marktoflow doctor for system health checksmarktoflow gui
- Visual Designer — Launch the GUI with
`bash`
marktoflow run workflow.md
marktoflow run workflow.md --input key=value
marktoflow run workflow.md --agent copilot --model gpt-4o
marktoflow run workflow.md --verbose
marktoflow run workflow.md --dry-run
`bash`
marktoflow workflow validate workflow.md
`bash`
marktoflow connect gmail
marktoflow connect outlook
`bash`
marktoflow schedule workflow.md --cron "0 9 1-5"
marktoflow schedule start
`bash`
marktoflow serve --port 3000
marktoflow serve --socket # Slack Socket Mode
`bash`
marktoflow gui
marktoflow gui --port 3000 --open
`bash`
marktoflow new --list
marktoflow new code-review --output workflows/code-review.md
`bash`
marktoflow init # Initialize project
marktoflow version # Show version
marktoflow doctor # System diagnostics
marktoflow agents list # List available AI agents
marktoflow tools list # List available integrations
marktoflow history # View execution history
`bash
cat > workflows/standup.md << 'EOF'
---
workflow:
id: daily-standup
name: Daily Standup
tools:
jira:
sdk: 'jira.js'
auth:
host: '${JIRA_HOST}'
email: '${JIRA_EMAIL}'
apiToken: '${JIRA_API_TOKEN}'
slack:
sdk: '@slack/web-api'
auth:
token: '${SLACK_BOT_TOKEN}'
steps:
- action: jira.issues.searchIssues
inputs:
jql: 'assignee = currentUser() AND status = "In Progress"'
output_variable: issues
- action: slack.chat.postMessage
inputs:
channel: '#standup'
text: 'Working on: {{ issues.issues[0].fields.summary }}'
EOF
marktoflow schedule workflows/standup.md --cron "0 9 1-5"
marktoflow schedule start
``
See the contributing guide.
Apache-2.0