diff --git a/apps/docs/content/docs/en/custom-tools/index.mdx b/apps/docs/content/docs/en/custom-tools/index.mdx
new file mode 100644
index 00000000000..cc1787f93e1
--- /dev/null
+++ b/apps/docs/content/docs/en/custom-tools/index.mdx
@@ -0,0 +1,84 @@
+---
+title: Custom Tools
+description: Extend your agents with your own functions — defined by a schema and executed as JavaScript
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+
+Custom Tools let you define your own functions that agents can call, without needing an external MCP server. You write a JSON schema describing the function and the JavaScript code that runs when the agent invokes it.
+
+## What Is a Custom Tool?
+
+A custom tool has three parts:
+
+| Part | Description |
+|------|-------------|
+| **Schema** | OpenAI function-calling format — name, description, and parameters. This is what the agent sees when deciding whether to call the tool. |
+| **Code** | JavaScript that runs when the tool is called. Parameters come in as variables matching the schema. |
+| **Scope** | Custom tools are workspace-scoped and available to every agent in that workspace. |
+
+Use custom tools when you need tightly-scoped logic that doesn't warrant spinning up a full MCP server — one-off API calls, formatting helpers, internal utilities, etc.
+
+## Creating a Custom Tool
+
+1. Navigate to **Settings → Custom Tools**
+2. Click **Add**
+3. Fill out the **Schema** tab with your function definition
+4. Write your implementation in the **Code** tab
+5. Click **Save**
+
+
+You can also create a custom tool directly from an Agent block — click **Add tool… → Create Tool** in the tool dropdown. The schema editor has an AI-generation option that drafts the schema from a plain-English description.
+
+
+## Schema Format
+
+Custom tool schemas follow the OpenAI function-calling spec:
+
+```json
+{
+ "type": "function",
+ "function": {
+ "name": "get_weather",
+ "description": "Get the current weather for a city",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "city": {
+ "type": "string",
+ "description": "The city to get weather for"
+ }
+ },
+ "required": ["city"]
+ }
+ }
+}
+```
+
+The `name` must be lowercase, use underscores, and match what your code expects as input.
+
+## Using Custom Tools in Agents
+
+Once created, your tools become available in any Agent block:
+
+1. Open an **Agent** block
+2. In the **Tools** section, click **Add tool…**
+3. Under **Custom Tools**, click the tool you want to add
+4. The agent can now call the tool the same way it calls MCP tools or built-in tools
+
+## Custom Tools vs MCP Tools
+
+| | **Custom Tools** | **MCP Tools** |
+|---|---|---|
+| **Defined** | Inline — schema + code in Sim | External MCP server |
+| **Hosting** | Runs inside Sim | Runs on your server |
+| **Best for** | Small, workspace-specific helpers | Shared tools, third-party services, complex integrations |
+| **Setup** | One modal | Deploy and register a server |
+
+## Permission Requirements
+
+| Action | Required Permission |
+|--------|-------------------|
+| Create or update custom tools | **Write** or **Admin** |
+| Delete custom tools | **Admin** |
+| Use custom tools in agents | **Read**, **Write**, or **Admin** |
diff --git a/apps/docs/content/docs/en/mcp/deploy-workflows.mdx b/apps/docs/content/docs/en/mcp/deploy-workflows.mdx
index 1c031197ebb..08997e90b91 100644
--- a/apps/docs/content/docs/en/mcp/deploy-workflows.mdx
+++ b/apps/docs/content/docs/en/mcp/deploy-workflows.mdx
@@ -3,6 +3,7 @@ title: Deploy Workflows as MCP
description: Expose your workflows as MCP tools for external AI assistants and applications
---
+import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
import { Callout } from 'fumadocs-ui/components/callout'
import { FAQ } from '@/components/ui/faq'
@@ -18,10 +19,45 @@ MCP servers group your workflow tools together. Create and manage them in worksp
1. Navigate to **Settings → MCP Servers**
-2. Click **Create Server**
+
+
+
+
+
+2. Click **Add**
3. Enter a name and optional description
-4. Copy the server URL for use in your MCP clients
-5. View and manage all tools added to the server
+
+
+
+
+
+4. Click **Add Server**
+5. Click **Details** to view the MCP server
+
+
+
+
+
+6. Copy the server URL for use in your MCP clients
+7. View and manage all tools added to the server
## Adding a Workflow as a Tool
@@ -33,9 +69,21 @@ Once your workflow is deployed, you can expose it as an MCP tool:
1. Open your deployed workflow
2. Click **Deploy** and go to the **MCP** tab
+
+
+
+
+
3. Configure the tool name and description
4. Add descriptions for each parameter (helps AI understand inputs)
5. Select which MCP servers to add it to
+6. Click **Save Tool**
The workflow must be deployed before it can be added as an MCP tool.
@@ -54,27 +102,25 @@ Your workflow's input format fields become tool parameters. Add descriptions to
## Connecting MCP Clients
-Use the server URL from settings to connect external applications:
-
-### Claude Desktop
-Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
+Sim generates a ready-to-paste configuration for every supported client. To get it:
-```json
-{
- "mcpServers": {
- "my-sim-workflows": {
- "command": "npx",
- "args": ["-y", "mcp-remote", "YOUR_SERVER_URL"]
- }
- }
-}
-```
-
-### Cursor
-Add the server URL in Cursor's MCP settings using the same mcp-remote pattern.
+1. Navigate to **Settings → MCP Servers**
+2. Click **Details** on your server
+3. Under **MCP Client**, select your client — **Cursor**, **Claude Code**, **Claude Desktop**, **VS Code**, or **Sim**
+4. Copy the configuration, replacing `$SIM_API_KEY` with your Sim API key
+
+
+
+
-Include your API key header (`X-API-Key`) for authenticated access when using mcp-remote or other HTTP-based MCP transports.
+Every request must include the `X-API-Key` header for authenticated access.
## Server Management
diff --git a/apps/docs/content/docs/en/mcp/index.mdx b/apps/docs/content/docs/en/mcp/index.mdx
index 4e966165dc5..f6613de3d06 100644
--- a/apps/docs/content/docs/en/mcp/index.mdx
+++ b/apps/docs/content/docs/en/mcp/index.mdx
@@ -18,19 +18,42 @@ MCP is an open standard that enables AI assistants to securely connect to extern
- Execute custom tools and scripts
- Maintain secure, controlled access to external resources
-## Configuring MCP Servers
+## Adding an MCP Server as a Tool
-MCP servers provide collections of tools that your agents can use. Configure them in workspace settings:
+MCP servers provide collections of tools that your agents can use.
-1. Navigate to your workspace settings
-2. Go to the **MCP Servers** section
-3. Click **Add MCP Server**
-4. Enter the server configuration details
-5. Save the configuration
+To add one:
+
+1. Navigate to **Settings → MCP Tools**
+
+
+
+
+
+2. Click **Add** to open the configuration modal
+3. Enter a **Server Name** and **Server URL**
+4. Add any required **Headers** (e.g. API keys)
+5. Click **Add MCP** to save
+
+
+
+
You can also configure MCP servers directly from the toolbar in an Agent block for quick setup.
@@ -38,7 +61,7 @@ You can also configure MCP servers directly from the toolbar in an Agent block f
### Refresh Tools
-Click **Refresh** on a server to fetch the latest tool schemas and automatically update any agent blocks using those tools with the new parameter definitions.
+To auto-refresh an MCP tool already in use by an agent, go to **Settings → MCP Tools**, open the server's details, and click **Refresh**. This fetches the latest tool schemas and automatically updates any agent blocks using those tools with the new parameter definitions.
## Using MCP Tools in Agents
@@ -46,7 +69,7 @@ Once MCP servers are configured, their tools become available within your agent
1. Open an **Agent** block
-2. In the **Tools** section, you'll see available MCP tools
-3. Select the tools you want the agent to use
-4. The agent can now access these tools during execution
+2. In the **Tools** section, click **Add tool…**
+3. Under **MCP Servers**, click a server to see its tools
+
+
+
+
+
+4. Select individual tools, or choose **Use all N tools** to add every tool from that server
+5. The agent can now access these tools during execution
+
+
+If you haven't configured a server yet, click **Add MCP Server** at the top of the dropdown to open the setup modal without leaving the block.
+
## Standalone MCP Tool Block
@@ -65,7 +104,7 @@ For more granular control, you can use the dedicated MCP Tool block to execute s
+
+
+
+Each variable has:
- **Name**: A unique identifier used to reference the variable
-- **Value**: The data stored in the variable (supports various data types)
-- **Description** (optional): A note explaining the variable's purpose
+- **Type**: The data type (Plain, Number, Boolean, Object, Array)
+- **Value**: The data stored in the variable
+
+
+
+
## Accessing Variables
@@ -69,12 +92,12 @@ Variables can be accessed from any block in your workflow using the variable dro
Variables in Sim can store various types of data:
-
+
```
"Hello, World!"
```
- Text variables store strings of characters. They're useful for storing messages, names, and other text data.
+ Plain variables store strings of characters. They're useful for storing messages, names, and other text data.
```
diff --git a/apps/docs/public/static/blocks/mcp-add-modal.png b/apps/docs/public/static/blocks/mcp-add-modal.png
new file mode 100644
index 00000000000..f80bc53f9bf
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-add-modal.png differ
diff --git a/apps/docs/public/static/blocks/mcp-agent-dropdown.png b/apps/docs/public/static/blocks/mcp-agent-dropdown.png
new file mode 100644
index 00000000000..580286a18b6
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-agent-dropdown.png differ
diff --git a/apps/docs/public/static/blocks/mcp-agent-tools.png b/apps/docs/public/static/blocks/mcp-agent-tools.png
new file mode 100644
index 00000000000..31242e894ce
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-agent-tools.png differ
diff --git a/apps/docs/public/static/blocks/mcp-client-config.png b/apps/docs/public/static/blocks/mcp-client-config.png
new file mode 100644
index 00000000000..40887f50051
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-client-config.png differ
diff --git a/apps/docs/public/static/blocks/mcp-deploy-modal.png b/apps/docs/public/static/blocks/mcp-deploy-modal.png
new file mode 100644
index 00000000000..efb51451ace
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-deploy-modal.png differ
diff --git a/apps/docs/public/static/blocks/mcp-server-add-modal.png b/apps/docs/public/static/blocks/mcp-server-add-modal.png
new file mode 100644
index 00000000000..55b59a227f7
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-server-add-modal.png differ
diff --git a/apps/docs/public/static/blocks/mcp-server-details.png b/apps/docs/public/static/blocks/mcp-server-details.png
new file mode 100644
index 00000000000..b454438d897
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-server-details.png differ
diff --git a/apps/docs/public/static/blocks/mcp-servers-settings.png b/apps/docs/public/static/blocks/mcp-servers-settings.png
new file mode 100644
index 00000000000..b75ad706447
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-servers-settings.png differ
diff --git a/apps/docs/public/static/blocks/mcp-settings.png b/apps/docs/public/static/blocks/mcp-settings.png
new file mode 100644
index 00000000000..cb4c420814c
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-settings.png differ
diff --git a/apps/docs/public/static/blocks/mcp-tool-block.png b/apps/docs/public/static/blocks/mcp-tool-block.png
new file mode 100644
index 00000000000..d4c28cacb0d
Binary files /dev/null and b/apps/docs/public/static/blocks/mcp-tool-block.png differ
diff --git a/apps/docs/public/static/blocks/variables-menu.png b/apps/docs/public/static/blocks/variables-menu.png
new file mode 100644
index 00000000000..90e0c7dcf5d
Binary files /dev/null and b/apps/docs/public/static/blocks/variables-menu.png differ
diff --git a/apps/docs/public/static/blocks/variables-panel.png b/apps/docs/public/static/blocks/variables-panel.png
new file mode 100644
index 00000000000..66152d886ee
Binary files /dev/null and b/apps/docs/public/static/blocks/variables-panel.png differ