Skip to content

MCP servers

Deploy workflow as MCP tool

Deploy a workflow as an MCP tool using its deployed input schema. The workflow must already be deployed. Each server has at most one tool per workflow; repeating the call replaces the tool and returns `200` with `updated: true`. Requires workspace Admin access. Workspace API keys return `403`; use a personal API key or scoped OAuth token. OAuth scope: `api:write`.

POST/api/v2/workflow-mcp-servers/{serverId}/tools

Deploy a workflow as an MCP tool using its deployed input schema. The workflow must already be deployed. Each server has at most one tool per workflow; repeating the call replaces the tool and returns 200 with updated: true. Requires workspace Admin access. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:write.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:write

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:write.

Path parameters

serverIdstringRequired

Unique workflow-MCP server identifier.

minLength
1

Request body

Required

The deployed workflow and tool metadata presented to MCP clients.

object

The deployed workflow and tool metadata presented to MCP clients.

4 fields
workflowIdstringRequired

Workflow to expose as an MCP tool. It must already be deployed.

minLength
1
toolNamestring

Name MCP clients call. Normalized to the MCP tool-name grammar, and derived from the workflow name when omitted.

minLength
1
maxLength
128
toolDescriptionstring

Description shown to MCP clients. Derived from the workflow name when omitted.

maxLength
2000
parameterDescriptionsarray

Per-field description overrides applied to the schema generated from the deployed workflow inputs. A name matching no input field is ignored.

maxItems
100
Schema details
Array itemobject
2 fields
namestringRequired

Input field of the deployed workflow to describe.

minLength
1
descriptionstringRequired

Text MCP clients see for that field.

minLength
1
maxLength
2000

Additional properties are not allowed.

Additional properties are not allowed.

Request example 1

json
{
  "workflowId": "3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36",
  "toolName": "triage_ticket"
}

Responses

200

The deployed MCP tool registration.

object

The deployed MCP tool registration.

1 field
dataobjectRequired

Response data.

10 fields
idstringRequired

Unique tool identifier.

serverIdstringRequired

Server exposing this MCP tool.

workflowIdstringRequired

Workflow this tool executes.

toolNamestringRequired

Name an MCP client calls. Derived from the supplied name or the workflow name, normalized to the MCP tool-name grammar.

toolDescriptionvalueRequired

Description shown to MCP clients.

Schema details

Any of

Option 1string
Option 2null
mcpServerUrlstringRequired

Endpoint an MCP client connects to.

apiEndpointstringRequired

Sim execution endpoint this tool calls through.

updatedbooleanRequired

False for a new registration, true when an existing registration for this workflow was replaced. Repeating the operation returns 200 with true instead of a duplicate conflict.

createdAtstringRequired

ISO 8601 timestamp when the tool was created.

format
date-time
updatedAtstringRequired

ISO 8601 timestamp when the tool was last modified.

format
date-time

Additional properties are not allowed.

Additional properties are not allowed.

Response example 1

json
{
  "data": {
    "id": "wfmcptool_01J8ZK3QW4M6X2R9T7B5C0V3",
    "serverId": "wfmcp_01J8ZK3QW4M6X2R9T7B5C0V2",
    "workflowId": "3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36",
    "toolName": "triage_ticket",
    "toolDescription": "Execute Ticket triage workflow",
    "mcpServerUrl": "https://www.sim.ai/api/mcp/serve/wfmcp_01J8ZK3QW4M6X2R9T7B5C0V2",
    "apiEndpoint": "https://www.sim.ai/api/v2/workflows/3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36/execute",
    "updated": false,
    "createdAt": "2026-06-12T10:30:00.000Z",
    "updatedAt": "2026-06-12T10:30:00.000Z"
  }
}

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit