The TogoFlow MCP server lets external AI assistants call your published workflows as tools. Connect Claude Code, Cursor, or any MCP client that supports Streamable HTTP, then run workflows by chatting — for example, "Send my weekly sales report" or "List workflows I can run."
What the MCP server exposes
| Tool | Purpose |
|---|---|
list_workflows | List published workflows enabled for MCP in your organization |
run_workflow | Execute a workflow by ID with optional input |
get_execution_status | Check whether an execution is still running (compact, no large output) |
get_execution_result | Fetch execution output (compact by default; optional full payload) |
When you have 15 or fewer MCP-enabled workflows, each workflow may also appear as its own named tool (for example wf_weekly_sales_report). If you enable more than 15, only the meta-tools above are listed — use list_workflows and run_workflow instead.
Why meta-tools? AI clients work best with a small tool list. TogoFlow keeps the default set small and only adds per-workflow tools when the count stays manageable.
Prerequisites
- A TogoFlow account and organization.
- A published workflow with Expose to AI (MCP) enabled.
- An organization API key with MCP scopes (new keys include these by default).
Step 1 — Enable a workflow for MCP
- Open your workflow in the editor at app.togoflow.ai.
- Go to the AI / MCP tab.
- Turn on Expose to AI (MCP).
- Optionally set:
- Tool name — override the auto-generated name (default:
wf_+ slugified workflow name). - AI description — text the AI uses to decide when to call this workflow. If empty, TogoFlow uses your workflow description.
- Tool name — override the auto-generated name (default:
- Publish the workflow. Only published workflows are callable via MCP.
Step 2 — Create an API key
- Go to Settings → Credentials → API Keys.
- Click Create API Key.
- Copy the key immediately (
wk_...) — it is only shown once.
New API keys are created with these scopes:
| Scope | Allows |
|---|---|
mcp:use | Connect to the MCP endpoint |
workflows:read | Call list_workflows |
workflows:execute | Call run_workflow and named workflow tools |
executions:read | Call get_execution_status and get_execution_result |
Existing keys without scopes cannot use MCP. Create a new key if yours was created before scoped keys were enforced.
See API Keys for general key management and security practices.
Step 3 — Connect your AI client
Endpoint
https://api.togoflow.ai/api/v1/mcp
Authentication is API-key only. Pass your key as:
Authorization: Bearer wk_YOUR_API_KEY
or:
X-API-Key: wk_YOUR_API_KEY
JWT session tokens are not accepted on the MCP endpoint.
Claude Code
Add to ~/.claude.json (or your project's Claude Code MCP config):
{
"mcpServers": {
"togoflow": {
"type": "http",
"url": "https://api.togoflow.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer wk_YOUR_API_KEY"
}
}
}
}
Restart Claude Code, then ask it to list or run your workflows.
Cursor
- Open Cursor Settings → MCP.
- Add a new HTTP MCP server with the production URL above.
- Set the header
Authorization: Bearer wk_YOUR_API_KEY. - Save and reload MCP tools in the chat panel.
Other MCP clients
Any client that supports Streamable HTTP MCP can connect to POST /api/v1/mcp with the same URL and headers. The server is stateless — no session setup is required beyond the API key.
How workflow execution works
When the AI calls run_workflow (or a named workflow tool):
- TogoFlow verifies the workflow is published, MCP-enabled, and belongs to your organization.
- Execution limits and node credentials are checked (same as a manual run).
- The workflow runs in unattended mode (no approval prompts in the browser).
- The server waits up to 60 seconds by default for completion, then returns a compact result.
- If the workflow takes longer, you get an
executionIdand statusrunning— poll withget_execution_statusorget_execution_result.
| Parameter | Default | Max |
|---|---|---|
waitTimeoutMs on run_workflow | 60,000 ms | 300,000 ms |
Passing input to a workflow
Use the input object on run_workflow (or the tool's own parameters for named workflow tools). Values are available inside the workflow as {{inputs.*}}.
Example request the AI might make:
run_workflow({
"workflowId": "WRK_abc123",
"input": {
"recipient": "[email protected]",
"reportDate": "2026-07-15"
}
})
Input fields can also be inferred from your workflow's start node (webhook required fields) and workflow variables.
Result size
Tool results are kept compact (~4 KB) so they do not overwhelm the AI's context. If output is truncated, the response includes a message to call get_execution_result with includeFullOutput: true (up to ~32 KB).
Example conversation
Once connected, you can chat naturally:
- "What TogoFlow workflows can I run?" → AI calls
list_workflows - "Run the weekly sales report for last Monday" → AI calls
run_workfloworwf_weekly_sales_report - "Is execution EXC_xyz still running?" → AI calls
get_execution_status
Security
- Opt-in exposure — workflows are hidden until you enable MCP on each one.
- Published only — draft workflows cannot be executed.
- Scoped API keys — revoke keys anytime in Settings; keys without
mcp:usecannot connect. - Organization isolation — keys only see workflows in their organization.
- Rate limiting — the MCP endpoint is throttled to prevent abuse.
Rotate keys periodically and revoke any key you no longer use.
Troubleshooting
| Problem | Fix |
|---|---|
| 401 Unauthorized | Use a wk_... API key, not a JWT. Check the key is copied correctly. |
| 403 Missing scopes | Create a new API key (includes MCP scopes by default) or add mcp:use, workflows:execute, executions:read. |
Workflow not in list_workflows | Publish the workflow and enable Expose to AI (MCP) in the AI / MCP tab. |
| 403 Workflow not enabled for MCP | Turn on MCP exposure for that workflow. |
| Execution requires authentication | Connect OAuth or API credentials for nodes that need them, then re-run. |
| Result truncated | Call get_execution_result with includeFullOutput: true. |
| Tool not found (named tool) | You may have more than 15 MCP workflows — use list_workflows + run_workflow instead. |
| Timeout / still running | Poll get_execution_status with the returned executionId. |
Related docs
- API Keys — create and manage organization API keys
- Workflow Execution — how runs, logs, and debugging work in the app
- Start Node — webhook and manual trigger inputs
- App Integrations — connecting Gmail, Slack, and other services your workflows use