Create Workflow MCP Server

Publish a new MCP server for a workspace, optionally seeding it with workflows to expose as tools. Every workflow named in workflowIds must already be deployed. Setting isPublic lets any MCP client holding the server URL execute the workflows it publishes without a Sim API key. A workspace API key is rejected with 403; use a personal API key.

POST/api/v2/workflow-mcp-servers
X-API-Key<token>

Your Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.

In: header

Request Body

application/json

A new workspace-published MCP server and the workflows it exposes.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://www.sim.ai/api/v2/workflow-mcp-servers" \  -H "X-API-Key: YOUR_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "workspaceId": "9f4c2a10-3b7e-4d58-8f6a-2c1d0e5b7a94",    "name": "Support agents",    "workflowIds": [      "3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36"    ]  }'
{
  "data": {
    "id": "wfmcp_01J8ZK3QW4M6X2R9T7B5C0V2",
    "name": "Support agents",
    "description": "Ticket triage and escalation workflows.",
    "isPublic": false,
    "mcpServerUrl": "https://www.sim.ai/api/mcp/serve/wfmcp_01J8ZK3QW4M6X2R9T7B5C0V2",
    "createdAt": "2026-06-12T10:30:00.000Z",
    "updatedAt": "2026-06-12T10:30:00.000Z"
  }
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "API key required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "CONFLICT",
    "message": "API key name already exists"
  }
}
{
  "error": {
    "code": "PAYLOAD_TOO_LARGE",
    "message": "Request body is too large"
  }
}
{
  "error": {
    "code": "UNSUPPORTED_MEDIA_TYPE",
    "message": "Request body must be sent as application/json"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}