Skip to main content

Overview

Felix exposes an MCP (Model Context Protocol) server that lets AI assistants create, manage, and run workflows on your behalf. Any MCP-compatible client — Claude Code, Claude Desktop, Cursor, or custom agents — can connect to it. The MCP server provides the same capabilities as the REST API, packaged as tool calls that AI models can invoke directly.

Endpoint

https://felix.so/api/mcp
Authentication uses the same x-api-key header as the REST API.

Connecting from Claude Code

claude mcp add felix --type http \
  --url https://felix.so/api/mcp \
  --header "x-api-key=YOUR_API_KEY"
Get your API key from Profile. Once connected, Claude Code can use Felix tools directly in conversation:
> Create a workflow that scrapes Hacker News and extracts the top stories

Felix is creating your workflow...
Workflow created: https://felix.so/app/workflows-v3/550e8400-...
The planning agent is now designing your workflow. Open the link to watch progress.

Connecting from Claude Desktop

Add to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
  "mcpServers": {
    "felix": {
      "type": "http",
      "url": "https://felix.so/api/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}
Restart Claude Desktop after saving.

Available Tools

ToolDescription
list_workflowsList or search workflows in your organization (paginated)
get_workflowGet workflow details including input schema and required integrations
create_workflowCreate a workflow from a prompt and start the planning agent
run_workflowExecute a workflow and wait for results (metadata by default, optionally inline content)
get_executionGet execution status and results (includes inline content by default)
list_executionsList executions for a workflow (paginated)

create_workflow

Creates a new workflow and starts the planning agent to design it based on your prompt. Parameters:
ParameterTypeRequiredDescription
promptstringYesWhat should this workflow do?
namestringNoWorkflow name (defaults to auto-generated)
descriptionstringNoWorkflow description
Returns: Workflow ID, name, URL to view in the UI, and status "planning".

run_workflow

Executes a workflow and waits for it to complete (up to 10 minutes). Returns execution metadata (status, IDs, output filenames, and presigned URLs). Use get_execution to fetch inline file content when needed, or pass include_outputs: true to get it in the same call. If the workflow has an input schema (human checkpoint on step 1), you must provide matching input data. Parameters:
ParameterTypeRequiredDescription
workflow_idstring (uuid)YesThe workflow to execute
inputobjectNoInput data matching the workflow’s input_schema
waitbooleanNoWait for completion (default: true). Set false for fire-and-forget.
include_outputsbooleanNoInclude inline file content in results (default: false).
Returns: Execution ID, workflow ID, workflow name, final status, URL, and results array with filenames and presigned URLs. When include_outputs is true, text-based files also include inline content.

get_execution

Retrieves the current status of an execution. When status is finished, includes result files with inline text content and presigned download URLs (valid for 1 hour) by default. Parameters:
ParameterTypeRequiredDescription
workflow_idstring (uuid)YesThe workflow ID
execution_idstring (uuid)YesThe execution ID
include_outputsbooleanNoInclude inline file content in results (default: true). Set false to get metadata only.

list_workflows / list_executions

Both support pagination via limit (1-100) and cursor parameters.

get_workflow

Returns workflow details including input_schema (JSON Schema) if the workflow’s first step is a human checkpoint, and required_integrations listing any external services the workflow needs.

Example: End-to-End with Claude Code

> Create a workflow that takes a company name as input, researches it online,
  and generates a one-page company brief

✓ Workflow created: https://felix.so/app/workflows-v3/abc123...
  Planning agent is building your workflow now.

> Run the "Company Brief" workflow with company name "Anthropic"

Running workflow... (waiting for results)

✓ Execution finished.
  Results:
  - brief.md:
    # Anthropic — Company Brief
    Anthropic is an AI safety company founded in 2021...
Since run_workflow waits for completion by default, the AI assistant gets the results in a single step — no polling loop needed.