> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.moveworks.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.moveworks.com/_mcp/server.

# Choose how to connect external systems to Moveworks

Suppose you have an external system that employees need to use from a [Moveworks AI Assistant](/ai-assistant/introduction-to-assistant), whether they access it through Employee Web, Slack, Microsoft Teams, or another channel. Should you connect the system directly to Moveworks, or connect it to Moveworks through ServiceNow?

This guide helps you answer that question. It covers four ways to make an external system available in a Moveworks AI Assistant:

* Use [**Enterprise Search**](/ai-assistant/enterprise-search/overview) to make documents and knowledge searchable.
* Connect an [**MCP server**](/agent-studio/mcp-workspace/overview) through MCP Workspace in Agent Studio.
* Connect [**through ServiceNow via MCP**](https://www.servicenow.com/docs/r/zurich/intelligent-experiences/create-tool-mcp-server.html) when ServiceNow already provides a suitable workflow or access to the data.
* Build a [**Moveworks plugin**](/agent-studio/core-concepts/assistants-agents-plugins#plugins) in Agent Studio.

If the experience will live in ServiceNow instead of a Moveworks AI Assistant, connect the external system directly to ServiceNow. That scenario is outside the scope of this guide.

This is a lightweight framework to help you compare the options available to connect your Moveworks AI Assistant to external tools. You can read our [full guide on the different tools available](/agent-studio/cookbooks/choosing-the-right-tool-framework) to learn more about each of the options.

## Understand the connection strategies

In every strategy, the employee interacts with a Moveworks AI Assistant. What changes is the path between the assistant and the external system.

```mermaid
flowchart LR
    Assistant[Moveworks AI Assistant]

    Assistant -->|Searches| Search[Enterprise Search]
    Search --> Content[External system documents<br />and knowledge]

    Assistant -->|Calls tools| MCP[MCP Workspace<br />in Agent Studio]
    MCP --> ExternalMCP[External system<br />MCP server]
    ExternalMCP --> App[External system APIs<br />and records]

    MCP --> ServiceNowMCP[ServiceNow MCP server]
    ServiceNowMCP --> ServiceNow[ServiceNow workflow<br />or data access]
    ServiceNow --> App

    Assistant -->|Runs| Plugin[Moveworks plugin<br />in Agent Studio]
    Plugin --> App

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef servicenow fill:#fff3e0,stroke:#ef6c00,color:#111;
    classDef external fill:#e8f5e9,stroke:#2e7d32,color:#111;
    class Assistant,Search,MCP,Plugin moveworks;
    class ServiceNowMCP,ServiceNow servicenow;
    class Content,ExternalMCP,App external;
```

### Enterprise Search

Enterprise Search retrieves unstructured content such as documents, files, and knowledge articles. Configure an [Enterprise Search](/ai-assistant/enterprise-search/overview) connector to either index content from the external system in Moveworks or perform a real-time search.

Depending on the connector's [implementation approach](/ai-assistant/search-connectors#what-are-the-various-implementation-approaches), authentication uses administrator-configured credentials or [user consent](/ai-assistant/enterprise-search/permissions#user-consent-permissions).

```mermaid
flowchart LR
    Assistant[Moveworks AI Assistant] --> SearchPlugin[Enterprise Search<br />plugin]
    SearchPlugin --> Live[Live API]
    SearchPlugin --> Indexed[Indexed content]

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef external fill:#e8f5e9,stroke:#2e7d32,color:#111;
    class Assistant,SearchPlugin,Indexed moveworks;
    class Live external;
```

### MCP server through MCP Workspace

An MCP server is a set of tools that AI assistants can call through the open [Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro) to work with structured data. The same server may work with Moveworks and other MCP-compatible assistants. An administrator can [connect an existing server](/agent-studio/mcp-workspace/connect-and-manage-servers) through MCP Workspace in Agent Studio, or a developer can [build a custom server](/agent-studio/mcp-workspace/build-a-custom-mcp-server) when needed. Employees [consent to the connection and sign in](/agent-studio/mcp-workspace/connect-and-manage-servers#what-users-do-the-first-time) with their account in the connected system.

For current availability and access details, see [MCP Workspace](/agent-studio/mcp-workspace/overview).

```mermaid
flowchart LR
    Assistant[Moveworks AI Assistant] --> Server[MCP server]
    Server --> Tool[Tool call]
    Tool --> API[External system API]

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef external fill:#e8f5e9,stroke:#2e7d32,color:#111;
    class Assistant moveworks;
    class Server,Tool,API external;
```

MCP Servers are recommended for read operations, or reversible operations (like changing the status of an item). **We do not recommend using MCP servers for destructive operations.**

Be aware that:

* [MCP Workspace does not provide a confirmation step](/agent-studio/mcp-workspace/limitations-and-troubleshooting) before calling a tool, so a write (including a destructive action) can run without approval.
* [MCP Workspace controls access at the server level](/agent-studio/mcp-workspace/limitations-and-troubleshooting#current-limitations), not per tool. When a server is enabled, the Moveworks AI Assistant can use any tool the server exposes to an employee under that employee's upstream permissions. Review the full tool inventory before enabling the server.
* Unlike a Moveworks plugin, an MCP server connected through MCP Workspace does not use Moveworks [slots](/agent-studio/conversation-process/slots) to guide how the Assistant collects inputs.

### ServiceNow through MCP

Moveworks connects to a ServiceNow MCP server through MCP Workspace to access structured data or actions. A ServiceNow administrator [configures the connection](https://www.servicenow.com/docs/r/intelligent-experiences/configure-client-connect-server.html) and [publishes the tools](https://www.servicenow.com/docs/r/zurich/intelligent-experiences/create-tool-mcp-server.html) that ServiceNow exposes.

```mermaid
flowchart LR
    Assistant[Moveworks AI Assistant] --> Server[ServiceNow MCP server]
    Server --> Tool[Tool published by<br />a ServiceNow administrator]
    Tool --> Capability[ServiceNow capability<br />REST API, Action, Knowledge Graph,<br />Subflow, or Now Assist skill]

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef servicenow fill:#fff3e0,stroke:#ef6c00,color:#111;
    class Assistant moveworks;
    class Server,Tool,Capability servicenow;
```

The employee [signs in with their ServiceNow account](/agent-studio/mcp-workspace/connect-and-manage-servers#what-users-do-the-first-time), and the Assistant calls the published tool. If the tool calls a third-party system, the downstream identity depends on the underlying [workflow and connection configuration](https://www.servicenow.com/docs/r/integrate-applications/integration-hub/managing-connections-integration-hub.html).

Use this option for reads and reversible writes only. **Do not use ServiceNow through MCP for destructive writes,** based on [the same considerations as any MCP server](#mcp-server-through-mcp-workspace).

### Moveworks plugin

Developers can build a plugin in Agent Studio that connects to structured data and actions through an external system's API. The connection can use [each employee's consent and OAuth sign-in](/agent-studio/connectors/http-connectors/oauth-20-authorization-code) or [connector credentials](/agent-studio/connectors/http-connectors).

[Slots](/agent-studio/conversation-process/slots) define the inputs the plugin needs. For each slot, the developer can tell the Assistant to infer a value or always ask for it, validate the value, and use a [resolver](/agent-studio/core-concepts/agentic-automation-engine/slot-resolvers) to match it to a record in the external system.

```mermaid
flowchart LR
    Assistant[Moveworks AI Assistant] --> Plugin[Moveworks plugin]
    Plugin --> Inputs[Slots and resolvers<br />Collect and validate inputs]
    Inputs --> API[External system API]

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef external fill:#e8f5e9,stroke:#2e7d32,color:#111;
    class Assistant,Plugin,Inputs moveworks;
    class API external;
```

The plugin can read data or perform reversible and destructive writes. It can [apply company rules](/agent-studio/core-concepts/agentic-automation-engine/policies), [ask for confirmation](/agent-studio/conversation-process/activities#activity-confirmation-policies), and [coordinate multiple actions](/agent-studio/core-concepts/agentic-automation-engine/action-orchestrator) before calling the external system.

### Compare capabilities

Your use case will narrow the available strategies. Start with four questions:

* What kind of data does the Assistant need?
* Whose credentials should the connection use?
* Can you configure an existing connection, or do you need to build one?
* Does the Assistant need to read data, change it, or both?

| Strategy                                                                                             | Data type    | Authentication                                                                                                                                                      | What you configure or build                                                                                                                                                            | Operations                                |
| ---------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| [**Enterprise Search**](/agent-studio/cookbooks/choosing-the-right-tool-framework#enterprise-search) | Unstructured | [Connector credentials](/ai-assistant/search-connectors) or [user consent](/ai-assistant/enterprise-search/permissions), depending on the connector and search mode | [Configure an Enterprise Search connector](/ai-assistant/search-connectors)                                                                                                            | Read                                      |
| [**MCP server**](/agent-studio/cookbooks/choosing-the-right-tool-framework#mcp)                      | Structured   | [User consent](/agent-studio/mcp-workspace/connect-and-manage-servers)                                                                                              | [Configure an MCP server connection](/agent-studio/mcp-workspace/connect-and-manage-servers); [build a custom server](/agent-studio/mcp-workspace/build-a-custom-mcp-server) if needed | Read, reversible write                    |
| [**ServiceNow through MCP**](/agent-studio/cookbooks/choosing-the-right-tool-framework#mcp)          | Structured   | [User consent to ServiceNow](/agent-studio/mcp-workspace/connect-and-manage-servers); downstream identity depends on the workflow and connection configuration      | [Build and publish a ServiceNow MCP tool](https://www.servicenow.com/docs/r/intelligent-experiences/create-tool-mcp-server.html) backed by a workflow or data access                   | Read, reversible write                    |
| [**Moveworks plugin**](/agent-studio/cookbooks/choosing-the-right-tool-framework#plugins)            | Structured   | [User consent](/agent-studio/connectors/http-connectors/oauth-20-authorization-code) or [connector credentials](/agent-studio/connectors#what-is-a-connector)       | [Build a plugin in Agent Studio](/agent-studio/quickstart-guide/quickstart-build-your-first-plugin)                                                                                    | Read, reversible write, destructive write |

> **MCP servers define what inputs a tool accepts. In a plugin, you define and control how inputs are collected, resolved, and validated.**

With MCP, the Moveworks AI Assistant works from the [input schema](https://modelcontextprotocol.io/specification/2025-11-25/server/tools) exposed by the server and may infer values from the employee's request. When you connect to an MCP server, you also depend on the tool definitions and behavior that server provides.

With a Moveworks plugin, you own the tool and can use [slots](/agent-studio/conversation-process/slots), [resolvers](/agent-studio/core-concepts/agentic-automation-engine/slot-resolvers), [policies](/agent-studio/core-concepts/agentic-automation-engine/policies), and [confirmation](/agent-studio/conversation-process/activities#activity-confirmation-policies) to put explicit guardrails around each input and action.

For a deeper comparison, see [Choosing the right tool framework](/agent-studio/cookbooks/choosing-the-right-tool-framework).

## Choose a connection pattern

Use the flow below to choose a connection strategy.

```mermaid
flowchart TD
    Start([I need to connect an external system]) --> Docs{Am I finding documents,<br />files, or knowledge articles?}
    Docs -->|Yes| Search[Use Enterprise Search]
    Docs -->|No| PluginControls{Does Moveworks need to control<br />input collection and validation,<br />business rules, confirmation, or ordered steps?}
    PluginControls -->|Yes| Plugin[Build a Moveworks plugin]
    PluginControls -->|No| SN{Is the required data or action available<br />through a ServiceNow MCP tool?}
    SN -->|Yes| SNPath[Use the ServiceNow tool<br />through MCP]
    SN -->|No| DirectMCP[Connect an MCP server]

    classDef moveworks fill:#f3e5f5,stroke:#7b1fa2,color:#111;
    classDef servicenow fill:#fff3e0,stroke:#ef6c00,color:#111;
    classDef external fill:#e8f5e9,stroke:#2e7d32,color:#111;
    class Start,Search,Plugin moveworks;
    class SNPath servicenow;
    class DirectMCP external;
```

## Recommendations

### Treat actions that change data differently from reads

Use MCP (including ServiceNow through MCP) for reads and low-impact writes that are easy to undo.

For destructive writes and high-stakes workflows, use a plugin. See [Choosing the right tool framework](/agent-studio/cookbooks/choosing-the-right-tool-framework#mcp) for more guidance.

### Decide whose account performs the action

An [MCP connection uses each employee's account](/agent-studio/mcp-workspace/connect-and-manage-servers) in the connected system. A plugin can use [each employee's account](/agent-studio/connectors/http-connectors/oauth-20-authorization-code) or [connector credentials](/agent-studio/connectors#what-is-a-connector).

When connecting through ServiceNow, the MCP call uses the employee's ServiceNow account, but the workflow and downstream connection may use different identities. Test which identity and permissions each system records.

## Anti-patterns

* **Using ServiceNow only as an extra hop:** connect through ServiceNow only when it already provides a suitable workflow or access to the data.
* **Enabling an MCP server without checking every tool:** MCP Workspace cannot enable or disable individual tools. Inspect the full tool inventory during testing, including with representative users.
* **Expecting MCP to add plugin safeguards:** an MCP connection does not add Moveworks input checks or [confirmation](/agent-studio/mcp-workspace/limitations-and-troubleshooting). Use a [plugin](/agent-studio/core-concepts/assistants-agents-plugins#plugins) when the process requires these safeguards.