Skip to main content
The Kadoa MCP server exposes workflow management tools to AI assistants via the Model Context Protocol. This lets you create, run, and manage web scraping workflows using natural language from your AI assistant. Supported Clients: ChatGPT · Codex · Claude.ai · Claude Code · Claude Desktop · Cursor · Gemini CLI · Any MCP-compatible client Here it is in action. Claude creates a workflow from a template and starts it, all from a single message: Claude using the Kadoa MCP server to create and run a workflow from a template: the tool calls (list templates, get template, create workflow) and the resulting workflow ID, dashboard link, and email notification

Setup

A hosted MCP server is available at https://mcp.kadoa.com/mcp. No local install needed, just connect and sign in with your Kadoa account via OAuth.
claude mcp add kadoa --transport http https://mcp.kadoa.com/mcp

Connecting for the first time

When you add the server, your client opens a browser so you can sign in with your Kadoa account and grant access. The connection then stays authorized; if a session expires, your client prompts you to sign in again. There is nothing to install and no API key to manage.
The MCP server acts as you: every tool runs under your Kadoa role and active team, and each action is recorded in the workflow’s history. For automated or shared agents, connect with a read-only Viewer role and switch to a higher-privilege role only when you need write access.

Permissions

The tools you can use depend on your team role. Viewers and Compliance Officers have read-only access:
ToolMember / Admin / OwnerViewerCompliance Officer
list_workflows
get_workflow
get_workflow_history
fetch_data
export_data
create_workflow
run_workflow
update_workflow
approve_workflow
pause_workflow
delete_workflow
whoami
list_notification_channels
create_notification_channel
delete_notification_channel
list_notification_settings
configure_notifications
delete_notification_setting
list_variables
get_variable
create_variable
update_variable
delete_variable
create_template
get_template
list_templates
update_template
delete_template
create_template_version
list_template_schemas
save_workflow_as_template
list_changes
get_change
If a tool is not available for your role, you’ll receive an error message with instructions to contact your team admin.

Tools

The server exposes tools covering the full workflow lifecycle, notifications, and team management:
ToolDescription
create_workflowCreate an agentic navigation workflow from a prompt
list_workflowsList all workflows with status
get_workflowGet detailed workflow information including prompt, schedules, and notification config
get_workflow_historyList recent edit-audit entries for a workflow with field-level diffs
run_workflowExecute a workflow
fetch_dataGet extracted data from a workflow (paginated, with filters and sorting)
export_dataExport the full extracted dataset as a signed URL, ideal for large workflows
delete_workflowDelete a workflow
approve_workflowApprove and activate a workflow
pause_workflowPause an active workflow so it stops running on its schedule
update_workflowUpdate workflow configuration and schema
create_realtime_monitorCreate a real-time monitoring workflow
whoamiShow current user details and team memberships
team_listList all teams you belong to and see which is active
team_switchSwitch the active team by name or ID
list_notification_channelsList notification channels for a workflow or workspace
create_notification_channelCreate an email, webhook, Slack, or WebSocket notification channel
delete_notification_channelDelete a notification channel
list_notification_settingsList event-to-channel notification mappings
configure_notificationsSet up notifications for workflow events in one step
delete_notification_settingRemove a notification event-to-channel mapping
list_variablesList all variables in the current team scope
get_variableGet a specific variable by ID
create_variableCreate a key-value variable (STRING, NUMBER, BOOLEAN, or JSON)
update_variableUpdate a variable’s key, value, or data type
delete_variableDelete a variable (two-step confirmation)
create_templateCreate a reusable template for workflow configurations
get_templateGet a template by ID, including all published versions
list_templatesList all templates in the current team
update_templateUpdate a template’s name or description
delete_templateDelete a template (two-step confirmation)
create_template_versionPublish a version with prompt, schema, and notifications
list_template_schemasList schemas associated with a template
save_workflow_as_templateCreate a template from an existing workflow’s configuration
list_changesList detected data changes across real-time monitoring workflows
get_changeGet detailed information about a specific detected change
The status field returned by list_workflows and get_workflow shows the computed workflow state (Complete, Running, Failed, Paused, Scheduled, etc.) rather than just the raw lifecycle state. You can filter with list_workflows using the state parameter (ACTIVE, FAILED, PAUSED, PREVIEW).

Scheduling

The create_workflow tool accepts an interval parameter for recurring extractions (defaults to ONLY_ONCE). Use CUSTOM with cron expressions for fine-grained control. See Scheduling → for all available intervals and examples.

Updating workflows

update_workflow accepts description, tags, userPrompt, schedules, and limit in addition to schema changes. See Manage Workflows → for details.

Notifications

Six tools manage notification channels and event subscriptions: list_notification_channels, create_notification_channel, delete_notification_channel, list_notification_settings, configure_notifications, and delete_notification_setting. See Notifications → for channel types and setup examples.

Variables

Five tools manage reusable variables (@variableKey syntax in prompts): list_variables, get_variable, create_variable, update_variable, and delete_variable. See Variables → for details and examples.

Templates

Twelve tools manage reusable, versioned workflow configurations: create_template, get_template, list_templates, update_template, delete_template, create_template_version, list_template_schemas, list_template_workflows, link_workflows_to_template, unlink_workflows_from_template, apply_template_update, and save_workflow_as_template. See Templates → for details and examples.

Changes

Two tools let you inspect detected data changes from real-time monitoring workflows: list_changes returns structured diffs (added, removed, changed records) across one or more workflows, and get_change retrieves the full snapshot and diff for a specific change.

Fetching and exporting data

Two tools retrieve extracted data: use fetch_data for paginated reads (default 50 rows, max 500) with filters, sortBy, and order; use export_data for the full dataset. It returns a self-authenticating signed URL ideal for Claude for Excel (‘Get Data from Web’) or pandas/duckdb code execution.

Workflow history

get_workflow_history returns recent edit-audit entries for a workflow with field-level diffs (added, removed, and changed values) so you can see who modified what and when.

Usage Examples

Once the MCP server is configured, you manage the full workflow lifecycle through natural conversation. A few prompts by area. See the tools above for the full surface: Build and run Manage workflows
  • “Update the ‘Product Monitor’ schema to add a rating field”
  • “Pause the ‘Old Scraper’ workflow”
Get data and changes
  • “Export my ‘Product Monitor’ dataset”
  • “Show me recent changes detected by my real-time monitors”
Notifications, variables, and templates
  • “Email me when ‘Product Monitor’ finishes or fails”
  • “Save my ‘Product Monitor’ workflow as a template called ‘Product Scraper’”
Teams
  • “List my teams, then switch to Acme Corp”

Troubleshooting

“I don’t have access to Kadoa”
  • Verify the MCP server is configured in the correct config file
  • Restart your MCP client after configuration changes
  • Re-authenticate via OAuth if prompted
“Authentication failed”
  • Your OAuth session may have expired, so re-authenticate when prompted by your MCP client
  • If switching teams, verify the team exists with team_list before using team_switch