# Emporix MCP Server

Model Context Protocol (MCP) standardizes the way how the applications exchange context with LLMs and AI tools. It gives AI agents a simple and stable way to connect with tools, services, and data – that enables them to utilize their full AI capabilities.

The Emporix MCP Server provides a powerful bridge between the Emporix system and AI-driven platforms like Agents. It enables seamless integration, allowing AI to interact with real-time commerce data and execute business logic – all through secure and structured communication.

## Features

| Feature                                  | Description                                                                                                                                        |
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Transform Emporix APIs into AI tools     | Make your existing API endpoints easily accessible to AI agents, enabling intelligent automation and context-aware decision-making.                |
| Expose business logic to AI              | Maintain and utilize your sophisticated backend logic by exposing it to AI, ensuring accurate execution of rules and workflows without redundancy. |
| Enable real-time communication           | Allow the AI to both retrieve data from and push actions to the Emporix environment, ensuring dynamic and responsive interactions.                 |
| Ensure secure, contextual access to data | Leverage built-in authentication and authorization mechanisms to control AI access and preserve compliance with data governance policies.          |

## Emporix MCP Server instance

At Emporix, we offer a fully managed cloud-hosted version of the MCP Server, designed for seamless integration with AI agents and systems. The server uses the Streamable HTTP Protocol as its transport layer. The Streamable HTTP is a modern communication protocol that allows for bidirectional, real-time data streaming over a single HTTP connection - an ideal choice for real-time, low-latency communication that works effortlessly across various integration scenarios.

Emporix provides dedicated servers for different business domains, ensuring clear separation of responsibilities and optimized performance. The currently supported domains are:

* product
* order
* customer
* extensibility
* frontend-facing

Access each domain-specific server through the following endpoint structure:

```
https://api.emporix.io/mcp/{domain}/{TENANT}/{MCP_TOKEN}/mcp 

```

Replace `{domain}` with product, order, or customer according to your needs.

{% hint style="info" %}
To obtain the `MCP_TOKEN`, follow the instructions in [Retrieving Emporix MCP token](https://developer.emporix.io/agentic-commerce-intelligence/mcp-in-emporix/mcp/retrieving-mcp-token).
{% endhint %}

## Available tools

The Emporix MCP Service returns only these tools which the MCP token has all required scopes for to invoke the associated APIs. If you do not see a tool available, please verify that your MCP token includes the necessary scopes.

You can also manually limit the number of tools available to the agent by appending the MCP Streamable HTTP connection URL with the relevant tool in the query parameter. It helps you to reduce the input context sent to the LLM and can improve performance. For example:

```
https://api.emporix.io/mcp/{domain}/{TENANT}/{MCP_TOKEN}/mcp?tools=get-label 

```

{% hint style="success" %}
Select only the tools that your agent actually needs. Including unnecessary tools may increase the token load for the LLM and affect performance.
{% endhint %}

## Domains and tool scopes

MCP servers are split by domain. Switch between the tabs to see the scopes for different tools.

### Product domain tools

Here is a list of available tools in the **Product domain** along with the scopes required to access them.

{% tabs %}
{% tab title="Product tools" %}

| Tool Name                | Required Scopes                    |
| ------------------------ | ---------------------------------- |
| `get-product`            | `product.product_read_unpublished` |
| `get-products`           | `product.product_read_unpublished` |
| `upsert-product`         | `product.product_manage`           |
| `partial-update-product` | `product.product_manage`           |
| `delete-product`         | `product.product_manage`           |
| {% endtab %}             |                                    |

{% tab title="Price tools" %}

| Tool Name         | Required Scopes         |
| ----------------- | ----------------------- |
| `get-price`       | `price.price_read`      |
| `get-prices`      | `price.price_read`      |
| `upsert-price`    | `price.price_manage`    |
| `delete-price`    | `price.price_manage`    |
| `get-price-model` | `price.pricemodel_read` |
| `match-prices`    | `price.price_read`      |
| {% endtab %}      |                         |

{% tab title="Availability tools" %}

| Tool Name                           | Required Scopes                    |
| ----------------------------------- | ---------------------------------- |
| `get-availabilities-by-site`        | `availability.availability_read`   |
| `get-availabilities-by-product-ids` | `availability.availability_read`   |
| `upsert-availability`               | `availability.availability_manage` |
| `delete-availability`               | `availability.availability_manage` |
| {% endtab %}                        |                                    |

{% tab title="Catalog tools" %}

| Tool Name                | Required Scopes          |
| ------------------------ | ------------------------ |
| `get-catalog`            | `catalog.catalog_read`   |
| `get-catalogs`           | `catalog.catalog_read`   |
| `upsert-catalog`         | `catalog.catalog_manage` |
| `partial-update-catalog` | `catalog.catalog_manage` |
| `delete-catalog`         | `catalog.catalog_manage` |
| `get-category-catalogs`  | `catalog.catalog_read`   |
| {% endtab %}             |                          |

{% tab title="Category tools" %}

| Tool Name                                | Required Scopes                      |
| ---------------------------------------- | ------------------------------------ |
| `get-category`                           | `category.category_read_unpublished` |
| `get-categories`                         | `category.category_read_unpublished` |
| `upsert-category`                        | `category.category_manage`           |
| `partial-update-category`                | `category.category_manage`           |
| `delete-category`                        | `category.category_manage`           |
| `get-category-assignments`               | `category.category_read_unpublished` |
| `upsert-category-assignment`             | `category.category_manage`           |
| `delete-category-assignments`            | `category.category_manage`           |
| `delete-category-assignment-by-id`       | `category.category_manage`           |
| `delete-category-assignment-by-product`  | `category.category_manage`           |
| `get-categories-by-product-assignment`   | `category.category_read_unpublished` |
| `delete-category-assignments-by-product` | `category.category_manage`           |
| {% endtab %}                             |                                      |

{% tab title="Brand tools" %}

| Tool Name              | Required Scopes      |
| ---------------------- | -------------------- |
| `get-brand`            | `brand.brand_read`   |
| `get-brands`           | `brand.brand_read`   |
| `create-brand`         | `brand.brand_manage` |
| `partial-update-brand` | `brand.brand_manage` |
| `delete-brand`         | `brand.brand_manage` |
| {% endtab %}           |                      |

{% tab title="Label tools" %}

| Tool Name              | Required Scopes      |
| ---------------------- | -------------------- |
| `get-label`            | (none)               |
| `get-labels`           | (none)               |
| `create-label`         | `label.label_manage` |
| `update-label`         | `label.label_manage` |
| `partial-update-label` | `label.label_manage` |
| `delete-label`         | `label.label_manage` |
| {% endtab %}           |                      |
| {% endtabs %}          |                      |

### Order domain tools

Here is a list of available tools in the **Order domain** along with the scopes required to access them.

{% tabs %}
{% tab title="Return tools" %}

| Tool Name               | Required Scopes          |
| ----------------------- | ------------------------ |
| `get-return`            | `returns.returns_read`   |
| `get-returns`           | `returns.returns_read`   |
| `create-return`         | `returns.returns_manage` |
| `update-return`         | `returns.returns_manage` |
| `partial-update-return` | `returns.returns_manage` |
| `delete-return`         | `returns.returns_manage` |
| `change-returns-status` | `returns.returns_manage` |
| {% endtab %}            |                          |

{% tab title="Order tools" %}

| Tool Name                    | Required Scopes      |
| ---------------------------- | -------------------- |
| `get-order`                  | `order.order_read`   |
| `get-orders`                 | `order.order_read`   |
| `get-customer-orders`        | `order.order_read`   |
| `update-order-billing-data`  | `order.order_update` |
| `update-order-delivery-date` | `order.order_update` |
| {% endtab %}                 |                      |

{% tab title="Invoice tools" %}

| Tool Name      | Required Scopes                                                                   |
| -------------- | --------------------------------------------------------------------------------- |
| `send-invoice` | <p><code>email.invoice\_send</code><br><code>pdfmashup.invoice\_create</code></p> |
| {% endtab %}   |                                                                                   |
| {% endtabs %}  |                                                                                   |

### Customer domain tools

Here is a list of available tools in the **Customer domain** along with the scopes required to access them.

{% tabs %}
{% tab title="Customer tools" %}

| Tool Name                           | Required Scopes            |
| ----------------------------------- | -------------------------- |
| `get-customer`                      | `customer.customer_read`   |
| `get-customers`                     | `customer.customer_read`   |
| `upsert-customer`                   | `customer.customer_manage` |
| `partial-update-customer`           | `customer.customer_manage` |
| `change-customer-activation-status` | `customer.customer_manage` |
| `delete-customer`                   | `customer.customer_manage` |
| {% endtab %}                        |                            |

{% tab title="Legal entity tools" %}

| Tool Name             | Required Scopes                         |
| --------------------- | --------------------------------------- |
| `get-legal-entity`    | `customermanagement.legalentity_read`   |
| `get-legal-entities`  | `customermanagement.legalentity_read`   |
| `upsert-legal-entity` | `customermanagement.legalentity_manage` |
| `delete-legal-entity` | `customermanagement.legalentity_manage` |
| {% endtab %}          |                                         |

{% tab title="Location tools" %}

| Tool Name         | Required Scopes                      |
| ----------------- | ------------------------------------ |
| `get-location`    | `customermanagement.location_read`   |
| `get-locations`   | `customermanagement.location_read`   |
| `upsert-location` | `customermanagement.location_manage` |
| `delete-location` | `customermanagement.location_manage` |
| {% endtab %}      |                                      |

{% tab title="Contact assignment tools" %}

| Tool Name                   | Required Scopes                               |
| --------------------------- | --------------------------------------------- |
| `get-contact-assignment`    | `customermanagement.contactassignment_read`   |
| `get-contact-assignments`   | `customermanagement.contactassignment_read`   |
| `upsert-contact-assignment` | `customermanagement.contactassignment_manage` |
| `delete-contact-assignment` | `customermanagement.contactassignment_manage` |
| {% endtab %}                |                                               |

{% tab title="Customer email tools" %}

| Tool Name                | Required Scopes    |
| ------------------------ | ------------------ |
| `send-email-to-customer` | `email.email_send` |
| {% endtab %}             |                    |
| {% endtabs %}            |                    |

### Extensibility domain tools

Here is a list of available tools in the **Extensibility domain** along with the scopes required to access them.

| Tool Name                             | Required Scopes                |
| ------------------------------------- | ------------------------------ |
| `get-custom-types`                    |                                |
| `get-custom-type-schema`              |                                |
| `get-custom-type-instance`            | `schema.custominstance_read`   |
| `get-custom-type-instances`           | `schema.custominstance_read`   |
| `upsert-custom-type-instance`         | `schema.custominstance_manage` |
| `partial-update-custom-type-instance` | `schema.custominstance_manage` |

{% hint style="info" %}
To learn more about the Emorix MCP Server and how it works, check out also:

* [Retrieving Emporix MCP Token](https://developer.emporix.io/agentic-commerce-intelligence/mcp-in-emporix/mcp/retrieving-mcp-token)
* [Connecting Emporix MCP Server with Cursor](https://developer.emporix.io/agentic-commerce-intelligence/mcp-in-emporix/mcp/connect-cursor)
* [Connecting Emporix MCP Server with OpenAI](https://developer.emporix.io/agentic-commerce-intelligence/mcp-in-emporix/mcp/connect-openai)
  {% endhint %}

## Frontend MCP Server

The **Frontend MCP server** behaves differently from other domain-level Emporix MCP servers. Its primary role is to enable an AI agent operating on the storefront to perform actions **on behalf of a customer**. Because of this, the server always runs within a specific customer context. Its access is therefore intentionally limited to data associated with that individual customer, as determined by the customer token.

This is the key distinction: unlike other servers, the Frontend MCP server **requires a customer token and supporting contextual data**, which are injected automatically during a customer-initiated request. For this reason, it must be used together with Emporix Agents with the granted *Customer* scope and cannot function as a standalone component.

Furthermore, this server should be used only when an agent is triggered by a customer action (as defined by the required scopes in the [agent configuration](https://developer.emporix.io/agentic-commerce-intelligence/agentic-intelligence/agents#creating-a-custom-agent)). It cannot be used for other invocation types, since those would lack the necessary customer token and SaaS token.

### Frontend MCP tools

{% tabs %}
{% tab title="Customer & Account" %}

| Tool Name                 | Description                                                                                                                              |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `get-customer-info`       | View your account information, including personal details, contact information, and saved addresses.                                     |
| `update-customer-profile` | Update your account information such as name, email, phone number, company details, preferred language, currency, and site preferences.  |
| `get-companies-addresses` | View all company addresses associated with your account. This is useful for B2B customers who need to manage multiple company addresses. |
| `upsert-customer-address` | Add a new shipping or billing address to your account, or update an existing address.                                                    |
| {% endtab %}              |                                                                                                                                          |

{% tab title="Product & Cart" %}

| Tool Name           | Description                                                                                                  |
| ------------------- | ------------------------------------------------------------------------------------------------------------ |
| `get-products`      | Browse and search for products in the catalog. You can filter, sort, and navigate through pages of products. |
| `get-cart`          | View the contents of your shopping cart, including all items, quantities, and prices.                        |
| `modify-cart-items` | Add items to your cart, change quantities, or remove items. You can modify multiple items at once.           |
| {% endtab %}        |                                                                                                              |

{% tab title="Checkout & Payment" %}

| Tool Name             | Description                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `checkout`            | Complete your purchase by placing an order. You need to provide your shipping address, billing address, and selected payment method. |
| `get-payment-methods` | View the available payment options for your site, such as credit cards, bank transfers, or other payment methods.                    |
| {% endtab %}          |                                                                                                                                      |

{% tab title="Order & Return" %}

| Tool Name             | Description                                                                                                                   |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `get-customer-orders` | View your order history. You can see past orders, filter by invoice number or order ID, and browse through multiple pages.    |
| `get-returns`         | View your return history. You can see all return requests, their status, and browse through multiple pages.                   |
| `create-return`       | Request to return items from an order. You can specify which items from which orders you want to return and provide a reason. |
| {% endtab %}          |                                                                                                                               |

{% tab title="Quote" %}

| Tool Name           | Description                                                                                                                                 |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `get-quote`         | Request the details of a specific quote and its related information.                                                                        |
| `get-quotes`        | View your quote history. You can see all quotes, filter them by status (open, accepted, declined, etc.), and browse through multiple pages. |
| `get-quote-reasons` | View the list of available reasons you can select when declining a quote.                                                                   |
| `create-quote`      | Request a price quote for the items in your cart. You need to specify shipping and billing addresses.                                       |
| `update-quote`      | Respond to a quote by accepting it, declining it, or requesting changes. When declining, you can provide a reason and comment.              |
| {% endtab %}        |                                                                                                                                             |
| {% endtabs %}       |                                                                                                                                             |

{% hint style="info" %}
The Frontend MCP Server can be used in the predefined [Frontend Agent](https://developer.emporix.io/agentic-commerce-intelligence/agentic-intelligence/agent-library/frontend-agent).
{% endhint %}
