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

# Quickstart #4: Structured Data Analysis (SDA)

# Background & Objectives

This guide will walk you through how to build Tool Studio plugins that **return large volumes of data** to the AI Assistant.

In this quickstart guide, you will

* Build a plugin that fetches 500 accounts from a mock CRM
* Set up the plugin to work alongside our [Code Interpreter plugin](/harness/agentic-reasoning-engine/code-interpreter)

At the end, your AI Assistant will be able to handle requests like this

![](https://files.readme.io/5805b698892baee037d7f8a2f87c8b830d7f0fe6a21a0d73be61900012b31b1c-image.png)

# Prerequisites

* Access to Tool Studio
* Access to [Structured Data Analysis](https://community.moveworks.com/ideas/structured-data-analysis-2130).
* A Purple Suite instance and connector. Follow the [Purple Suite Setup](/tool-studio/quickstart-guide/purple-suite-setup) guide if you haven't set one up yet.

# Define your plugin

#### Navigate to Tool Studio

Go to **Tool Studio**. In the **Plugins** tab, select **Create**

#### Define your plugin

Define your plugin.

> **SDA Tip!**
>
> It's important to be descriptive about the data that an SDA plugin returns.

| Attribute          | Value                                                                                                                                                                                                                                                                                  |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Plugin Title       | Fetch Accounts                                                                                                                                                                                                                                                                         |
| Plugin Description | Returns all Accounts with ID, name, industry, territory, created/modified dates, last contact & renewal dates, ARR & MRR, employee count, opportunities (total/open/won/lost), avg deal size, churn rate, NPS, support tickets, offices, market share %, growth rate & funding amount. |

# Create a trigger

#### Add a Conversational Trigger

In the Plugin Editor, add a **Conversational Trigger** and fill it out

![](https://files.readme.io/a8a55337e336f410bd3ef93a36ba3ab5f3d47bb3490f218659235dad5e361a06-CleanShot_2025-06-11_at_19.31.442x.png)

\


# Build your process

## Connect to the mock CRM

We need an HTTP action that will fetch the large volume of data from the external system.

#### Create a new HTTP Action

Click **⊕** in the tab bar and create a new HTTP Action

#### Select Import

Select the **Import** option (next to the **Test** button)

#### Import the API call

Import the following API call

```shell
curl -X GET "https://marketplace.moveworks.com/api/purple-suite/crm/accounts?limit=500" \
  -H "Authorization: Bearer YOUR_PAT" \
  -H "X-Instance-ID: YOUR_INSTANCE_ID"
```

> **Note**
>
> Replace `YOUR_PAT` and `YOUR_INSTANCE_ID` with the values from the **Set up the Purple API** section. If you already set up a connector, the auth headers will be handled automatically when you test the action.

#### Test

Hit **Test**

#### Name your HTTP Action

Name your HTTP Action. It should look something like this.

![](https://files.readme.io/adc9138c37e9a71385cc63b6d2f573a97df0825ac2462258c6414099c4ae478c-image.png)

\


#### Save

Save your HTTP action

## Attach a Conversational Process

Now let's connect the HTTP action to your plugin & prepare it for analysis

#### Add a Conversational Process

In the Plugin Editor, add a **Conversational Process** & create a new one.

#### Add an action-based activity

In the **Conversational Process Editor** add an action-based activity.

#### Choose your HTTP Action

Choose the HTTP Action you just built.

#### Configure the Output Mapper

In the activity configuration, under **Output Mapper**, we will rename the fields to make them more friendly for SDA.

> **SDA Tip!**
>
> It's important to name fields succinctly & clearly to maximize the performance of SDA against various queries.

```yaml
MAP():
  items: response.data
  converter:
    AccountID: item.id
    AccountName: item.name
    AnnualRecurringRevenue: item.annualRecurringRevenue
    AverageDealSize: item.averageDealSize
    ChurnRate: item.churnRate
    ClosedLostOpportunities: item.closedLostOpportunities
    ClosedWonOpportunities: item.closedWonOpportunities
    DateCreated: item.createdAt
    DateLastModified: item.lastModifiedAt
    Employees: item.employees
    FundingAmount: item.fundingAmount
    GrowthRate: item.growthRate
    Industry: item.industry
    LastContactDate: item.lastContactDate
    MarketShare: item.marketSharePct
    MonthlyRecurringRevenue: item.monthlyRecurringRevenue
    NetPromoterScore: item.netPromoterScore
    NextRenewalDate: item.nextRenewalDate
    OfficeCount: item.officeCount
    OpenOpportunities: item.openOpportunities
    SupportTickets: item.supportTickets
    Territory: item.territory
    TotalOpportunities: item.totalOpportunities
```

# Launch it

#### Launch to yourself

Under **Audience Settings** you can launch it to yourself for testing.

![](https://files.readme.io/b124cd8f6b8146464280b0a1b5ad572b5aece4c10edee322b90f21a80c0b9b5c-CleanShot_2025-06-11_at_19.52.472x.png)

# Test it!

#### Try it out

Try it out! You should see something like the following.

![](https://files.readme.io/5805b698892baee037d7f8a2f87c8b830d7f0fe6a21a0d73be61900012b31b1c-image.png)

> **Not seeing the right results?**
>
> Verify that SDA is running by checking for the **Running analysis** progress update
>
> ![](https://files.readme.io/7328853acf8c2e37533418602fd66bf46d7be6863cab841358e9be8b4f8dfc58-image.png)

Here are some other questions you could try:

* What's the total ARR of customers in the Tech industry?
* Which industry is performing best in Europe?
* Which accounts have the most support tickets and are up for renewal soon?

# Next Steps

Start building your own plugins for Structured Data Analysis!

* [Learn more about Code Interpreter!](/harness/agentic-reasoning-engine/code-interpreter)
* [FAQs & Best Practices for Structured Data Analysis](/tool-studio/conversation-process/activities/response-sizes)

> **Info**
>
> **Next step: Test your plugin.** See our [Testing & Error Handling guide](/tool-studio/guides/getting-started/testing-and-error-handling) for how to test, debug, and handle errors in production.