Workflow: MCP Server (McpTool, McpResource & McpPrompt)
Every organization gets its own MCP (Model Context Protocol) server whose tools, resources, and prompts are defined as workflows. AI assistants and agents (Claude, Claude Code, and any other MCP-compatible client) connect to your organization's MCP endpoint and can only see and call what your organization has explicitly defined — none of the platform's built-in tools are exposed there.
Three workflow types drive the MCP server:
McpTool— exposes the workflow as an MCP tool the AI can call with argumentsMcpResource— exposes the workflow as an MCP resource the AI can read (documentation, glossaries, live reference data)McpPrompt— exposes the workflow as an MCP prompt template users can invoke from their client (e.g., as a slash command)
MCP workflows are ideal when you need to:
- Give AI assistants safe, curated access to your TMS data and actions
- Build an org-specific AI toolset (order lookups, quote calculations, status updates) backed by workflow logic
- Publish org knowledge (shipping terms, process guides, live reference data) that AI assistants can read as resources
- Package repeatable AI tasks as prompts (order analysis, exception triage) that users trigger on demand
- Control exactly what an AI can do — the tool surface is precisely the set of
McpToolworkflows you activate
Endpoint
Each organization's MCP server is served at:
/public-api/v1/{orgUniqueId}/mcp
Where {orgUniqueId} is your organization's unique identifier (UUID format).
The server uses the MCP Streamable HTTP transport in stateless mode — clients POST JSON-RPC messages (initialize, tools/list, tools/call, resources/list, resources/read) directly to this URL.
Authentication
The MCP endpoint requires a Bearer token — either a user JWT or a Personal Access Token (PAT):
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...
In addition to a valid token, the caller must be a member of the organization in the URL. Access is rejected otherwise:
| Status | Condition |
|---|---|
401 | Missing or invalid token. The response includes a WWW-Authenticate: Bearer resource_metadata="..." challenge for OAuth-capable MCP clients |
403 | Valid token, but the user is not a member of the organization (system administrators are exempt) |
404 | Unknown organization identifier |
Unlike Public API workflows, MCP workflows do not have a per-workflow authentication setting — authentication is enforced once at the connection level for the whole server.
Server Configuration
The MCP server's identity and instructions come from the organization configuration named tms.mcp:
| Key | Applied to | Default |
|---|---|---|
name | Server name shown to MCP clients | "{orgUniqueId} MCP Server" |
version | Server version | "1.0.0" |
instructions | Server instructions — guidance the AI receives about how to use your tools | none |
Use instructions to orient the AI: describe your organization's terminology, when to use which tool, and any conventions it should follow. The configuration is optional — missing values fall back to the defaults above.
MCP Tools (workflowType: McpTool)
An McpTool workflow becomes a callable MCP tool. The tool's name, description, and input schema are generated from the workflow manifest.
YAML Structure
mcp:
name: "get_order_status"
description: "Look up an order's current status by order number"
timeout: 60
workflow:
name: "MCP / Get Order Status"
workflowId: "00000000-0000-0000-0000-000000000000"
workflowType: "McpTool"
executionMode: "Sync" # Required: must be Sync
isActive: true
inputs:
- name: "orderNumber"
type: "string"
props:
required: true
description: "The TMS order number"
outputs:
- name: "response"
mapping: "stepName.result"
activities:
- name: myActivity
steps:
- task: "SomeTask@1"
name: "stepName"
# ...
The mcp Section (Tools)
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | - | Tool name shown to the AI. Must match ^[a-zA-Z0-9_-]{1,64}$ (letters, digits, _, -). Must be unique within the organization |
description | string | No | - | Tool description — this is how the AI decides when to use the tool, so make it specific |
timeout | number | No | 60 | Workflow execution timeout in seconds |
If two active workflows declare the same tool name, the first one (by workflow ID) wins and a warning is logged.