> This page is for Tools.

> 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.

# Tools Overview

Tools covers everything you build in Tool Studio to connect the Moveworks AI Assistant to your business systems and content: the connectors that hold a system's credentials, the plugins and MCP servers the assistant calls, the actions and system triggers that automate work in the background, and the logs you read once a tool is live. Moveworks offers four **tool frameworks**, each optimized for a different kind of connection: **Search** to find content, **Plugins** for reliable write actions that respect business rules, **MCP** for live reads and reversible actions in productivity apps, **Agent-to-Agent (A2A)** to delegate work to other agents.

#### [Quickstart Guides](/tool-studio/quickstart-guide)

Build your first plugin in minutes against the Purple Suite mock APIs.

#### [Tool Frameworks](/tool-studio/tool-frameworks)

Search, Plugins, MCP, and A2A, and when to use each.

#### [Cookbooks](/tool-studio/cookbooks)

Collection of best practices and recommendations for common types of use cases.

# New to Tool Studio? Start Here

#### Set up the Purple Suite

Every quickstart uses the Purple Suite mock APIs. Complete [Purple Suite Setup](/tool-studio/quickstart-guide/purple-suite-setup) once to create your instance and connector.

#### Build your first plugin

Follow [Quickstart #1: Build Your First Plugin](/tool-studio/quickstart-guide/quickstart-build-your-first-plugin) to build a working plugin in minutes.

#### Understand the architecture

Read [Core Concepts](/tool-studio/core-concepts), starting with [Assistants, Agents, & Plugins](/tool-studio/core-concepts/assistants-agents-plugins), to understand how the pieces fit together, then [Choosing the Right Tool Framework](/tool-studio/cookbooks/choosing-the-right-tool-framework) before you pick a framework for a real use case.

#### Learn the Golden Rule

Read [The Golden Rule](/tool-studio/guides/best-practices/the-golden-rule) before building anything complex — it's the most important design pattern.

#### Build with the reference below

Use the By Job and Quick Reference sections on this page to find specific docs as you build.

#### Test before you ship

Review [Testing & Error Handling](/tool-studio/guides/getting-started/testing-and-error-handling) and the [Plugin Go-Live Checklist](/tool-studio/development-and-testing/plugin-critique-checklist) before publishing your plugin.

# Pick a Framework

Match the framework to the kind of work the assistant needs to do. An assistant can use several frameworks at once: when users chat, the assistant decides which tool to use to search for information, analyze data, or take action.

#### [Search](/tool-studio/enterprise-search/search-connectors)

Find content and files across your systems, such as knowledge base articles and attachments.

#### [Plugins](/tool-studio/conversation-process)

Reliable, agent-safe write actions against enterprise APIs, with step order and business rules enforced.

#### [MCP Workspace](/tool-studio/mcp-workspace/overview)

Live reads and reversible operations on productivity apps through a connected MCP server.

#### [Agent-to-Agent (A2A)](/tool-studio/a2a/connect-to-other-ai-agents)

Delegate open-ended tasks to other agents and existing AI investments.

When no built-in search connector covers a source, build one with [Content Gateway](/tool-studio/enterprise-search/content-gateway), starting from its [Starter Code](/api-reference/content-gateway/starter-code). Plugins that users activate by chatting are [conversational plugins](/tool-studio/core-concepts/conversational-plugins); plugins activated by system events are ambient agents. For the side-by-side comparison, read [Choosing the Right Tool Framework](/tool-studio/cookbooks/choosing-the-right-tool-framework). Productivity Assistants on the Agentic Orchestrator use the same plugins, MCP servers, and A2A agents; [Tool Orchestration](/harness/agentic-orchestrator/tool-orchestration) explains how the Orchestrator exposes them.

# By Job

#### [Build your first tool](/tool-studio/quickstart-guide/quickstart-build-your-first-plugin)

Quickstart #1 walks through a working plugin end to end.

#### [Connect a system](/tool-studio/connectors)

Create a connector that holds a system's base URL and authentication; every HTTP action inherits it.

#### [Automate on events or schedules](/tool-studio/automation)

Pair actions with webhook or scheduled system triggers to build ambient agents that run without a user prompt.

#### [Let ToolSmith build it](/tool-studio/toolsmith/overview)

Describe the workflow, review the proposed plan, and ToolSmith builds or edits the plugin for you.

#### [Test and debug](/tool-studio/development-and-testing)

Launch to yourself, read the logs, and work through common errors before publishing.

#### [Watch it run](/tool-studio/agent-telemetry)

Execution logs, MCP tool call logs, assistant analytics, and the Data API once a tool is live.

Event-driven and scheduled plugins follow the ambient agent pattern; [Ambient Agents](/ai-assistant/ambient-agents) explains the Listen → Understand → Act cycle. Systems behind your firewall connect through the [Moveworks On-Prem Agent](/tool-studio/moveworks-agent). If another system needs to call Moveworks APIs, create its credentials under [API Credentials](/api-reference/api-credentials).

# Quick Reference

Starting from an outcome and not sure which primitive to use? Start here.

| I want to…                                | Use                                                                                                                                              |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| Call an API                               | [HTTP Action](/tool-studio/actions/http-actions)                                                                                                 |
| Run custom code (APIthon)                 | [Script Action](/tool-studio/actions/script-actions)                                                                                             |
| Orchestrate multiple actions              | [Compound Action](/tool-studio/actions/compound-actions)                                                                                         |
| Call an LLM inline                        | [generate_text_action / generate_structured_value_action](/tool-studio/actions/llm-actions)                                                      |
| Send a message to a user                  | [`notify`](/tool-studio/actions/compound-actions/notify) expression                                                                              |
| Branch on a condition                     | [`switch`](/tool-studio/actions/compound-actions/switch) expression                                                                              |
| Handle an API failure                     | [`try_catch` / `raise`](/tool-studio/actions/compound-actions/try-catch-and-raise-error)                                                         |
| Loop over a list                          | [`for`](/tool-studio/actions/compound-actions/for) expression                                                                                    |
| Run actions concurrently                  | [`parallel`](/tool-studio/actions/compound-actions/parallel) expression                                                                          |
| End a compound action and return data     | [`return`](/tool-studio/actions/compound-actions/return) expression                                                                              |
| Look up a user by email                   | [`get_user_by_email`](/tool-studio/actions/built-in-actions#get_user_by_email)                                                                   |
| Look up many users at once                | [`batch_get_users_by_email`](/tool-studio/actions/built-in-actions#batch_get_users_by_email)                                                     |
| Request human approval                    | [`create_generic_approval_request`](/tool-studio/actions/built-in-actions#create_generic_approval_request)                                       |
| Send batch chat notifications             | [`batch_send_plaintext_chat_notification`](/tool-studio/actions/built-in-actions#batch_send_plaintext_chat_notification)                         |
| Collect user input                        | [Slots](/tool-studio/conversation-process/slots)                                                                                                 |
| Validate a slot value                     | [Validation policy](/tool-studio/guides/best-practices/slot-best-practices#missing-validation-policy) with DSL                                   |
| Write a condition or validation rule      | [DSL Reference](/api-reference/configuration-languages/dsl)                                                                                      |
| Reshape an API response                   | [Data Mappers](/api-reference/configuration-languages/mapper/examples-parsing-a-streamed-response): MAP(), MERGE(), FILTER(), RENDER(), LOOKUP() |
| Branch a conversation on an action result | [Decision Policy](/tool-studio/conversation-process/control-flow#pattern-action--decision-policy--branch)                                        |
| Display a knowledge article or form       | [Content Activity](/tool-studio/conversation-process/activities/content-activities)                                                              |
| Handle large API responses (>7K tokens)   | [Response Sizes / SDA](/tool-studio/conversation-process/activities/response-sizes)                                                              |

#### [Actions](/tool-studio/actions)

HTTP, Script, Compound, LLM, and Built-in actions

#### [Conversation Process](/tool-studio/conversation-process)

Slots, resolver strategies, activities, and control flow

#### [Natural Language Triggers](/tool-studio/core-concepts/conversational-plugins/natural-language-triggers)

Conversational plugin activation

#### [System Triggers](/tool-studio/system-triggers)

Webhooks and scheduled triggers

#### [Data Bank](/tool-studio/core-concepts/data-bank)

Reference patterns: data.*, meta_info.*, response, value

#### [Data Types](/tool-studio/core-concepts/data-types)

Built-in and custom data types

# Guides & Best Practices

#### [The Golden Rule](/tool-studio/guides/best-practices/the-golden-rule)

The single most important pattern for building reliable plugins

#### [Decision Frameworks](/tool-studio/guides/getting-started/decision-frameworks)

When to use compound actions vs conversation processes, slot types, and more

#### [Plugin Building Masterclass](/tool-studio/guides/plugin-building-masterclass)

Build a plugin end to end, from the downstream API through launch, testing, and operation

#### [Slot Best Practices](/tool-studio/guides/best-practices/slot-best-practices)

Anti-patterns and best practices for slot design

#### [Conversation Process Best Practices](/tool-studio/guides/best-practices/conversation-process-best-practices)

Anti-patterns and best practices for conversation processes

#### [LLM Action Best Practices](/tool-studio/guides/best-practices/llm-action-best-practices)

When NOT to use LLM actions and the decision matrix

The Guides tab also covers [Testing & Error Handling](/tool-studio/guides/getting-started/testing-and-error-handling), [Pass Data to Dynamic Resolvers with Strategy Mapping](/tool-studio/guides/getting-started/pass-data-to-dynamic-resolvers-with-strategy-mapping), [Access Control Best Practices](/tool-studio/guides/best-practices/access-control-best-practices), [Building a Conversational Plugin](/tool-studio/guides/architecture/building-a-conversational-plugin), [Building an Ambient Agent](/tool-studio/guides/architecture/building-an-ambient-agent), [Choose How to Connect External Systems to Moveworks](/tool-studio/guides/architecture/choose-how-to-connect-tool-studio), and [LLM Orchestration Patterns](/tool-studio/guides/architecture/orchestration-patterns).

# Samples

You can view over 100 pre-built AI agents on our [AI Agent Marketplace](https://aka.mw/marketplace) and import example templates to better understand how they are built.

![](https://files.readme.io/8c69e09ceaf6dea2c55ef9838b172d79b3466c525d9cd9bc0e3ac8176ad97104-CleanShot_2025-06-30_at_17.49.09.gif)

# How Tools Fits With the Rest of the Platform

Tools describes what the assistant can call. The [Harness](/harness/overview) explains how the [Agentic Reasoning Engine](/harness/agentic-reasoning-engine) decides which of your tools to use in a conversation, and [Why Plugins](/tool-studio/why-plugins) explains how plugins follow your business rules every time once selected. Who can launch and use each plugin or MCP server is set through launch configuration in [Platform Management](/platform-management/access-control/end-user-access-control).