Skip to content

Connect Adobe Commerce to ChatGPT: Manage Catalog and MSI Stock

Learn how to connect Adobe Commerce to ChatGPT using a managed MCP server. Execute catalog updates and MSI stock workflows with natural language.

Sidharth Verma Sidharth Verma · · 9 min read
Connect Adobe Commerce to ChatGPT: Manage Catalog and MSI Stock

If you need to connect Adobe Commerce (formerly Magento) to ChatGPT to automate headless catalog management, orchestrate Multi-Source Inventory (MSI) levels, or update complex configurable products, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between ChatGPT's tool calls and Adobe Commerce's REST APIs. You can either build and maintain this infrastructure yourself, or use a managed integration platform like Truto to dynamically generate a secure, authenticated MCP server URL.

If your team uses Claude, check out our guide on connecting Adobe Commerce to Claude or explore our broader architectural overview on connecting Adobe Commerce to AI Agents.

Giving a Large Language Model (LLM) read and write access to an enterprise e-commerce platform like Adobe Commerce is a massive engineering challenge. You have to handle complex Entity-Attribute-Value (EAV) data payloads, map dynamic custom attributes to MCP tool definitions, and deal with deeply nested searchCriteria arrays just to filter a simple product list.

This guide breaks down exactly how to use Truto to generate a secure, managed MCP server for Adobe Commerce, connect it natively to ChatGPT, and execute complex catalog workflows using natural language.

The Engineering Reality of the Adobe Commerce API

A custom MCP server is a self-hosted integration layer. While the open MCP standard provides a predictable way for models to discover tools, implementing it against Adobe Commerce's highly specific API is exceptionally painful.

If you decide to build a custom MCP server for Adobe Commerce, you own the entire API lifecycle. Here are the specific integration challenges that break standard CRUD assumptions when working with this platform:

The Nightmare of searchCriteria

Adobe Commerce does not use standard REST query parameters like ?status=active&price>100. Instead, it forces clients to encode complex, nested filtering logic into URL parameters known as searchCriteria. To filter a list of products by category and status, a custom MCP server has to instruct the LLM to generate arrays matching searchCriteria [filter_groups][0][filters][0][field]=category_id, along with the corresponding value and condition type parameters. LLMs routinely hallucinate or misformat this deeply nested structure. Truto abstracts this away by automatically injecting flattened filter_field, filter_value, and filter_condition_type parameters into the tool schemas, while automatically handling pagination via limit (defaulting to 100, max 300) so ChatGPT never has to calculate offsets.

EAV Complexity and Custom Attributes

Adobe Commerce's Entity-Attribute-Value architecture means that most custom data points aren't standard JSON keys on a product payload. They are objects inside a custom_attributes array (e.g., {"attribute_code": "color", "value": "red"}). An LLM attempting to update a product must know exactly which attribute codes exist and format the payload perfectly. If you build a custom MCP server, you must dynamically pull attribute sets and inject them into your JSON-RPC schemas so the LLM knows what fields are valid.

MSI vs Legacy Stock

Modern Adobe Commerce environments use Multi-Source Inventory (MSI) to track stock across multiple physical locations. However, the API still exposes the legacy CatalogInventory endpoints (stockItems), which will break or silently fail on MSI-enabled stores. A custom MCP server must actively hide deprecated endpoints from the LLM to prevent it from calling legacy stock updates that result in inventory reservation errors. Truto handles this mapping natively, providing distinct source_items.bulk_create tools for MSI.

How to Generate an Adobe Commerce MCP Server

Truto dynamically generates MCP tools based on the actual capabilities of the authenticated Adobe Commerce instance. Each MCP server is scoped to a single connected tenant.

You can spin up an MCP server for an Adobe Commerce account using two methods: via the Truto UI, or programmatically via the API.

Method 1: Via the Truto UI

If you are setting this up manually for internal use or testing, the dashboard is the fastest route:

  1. Log into your Truto dashboard and navigate to the Integrated Accounts page.
  2. Select your connected Adobe Commerce instance.
  3. Click the MCP Servers tab.
  4. Click Create MCP Server.
  5. Select your desired configuration. For example, you can name it "Adobe Commerce Catalog Admin", check the read and write method filters, and restrict tags to products and inventory.
  6. Click Save and copy the generated MCP server URL (it will look like https://api.truto.one/mcp/<secure-token>).

Method 2: Via the Truto API

If you are provisioning MCP servers programmatically for your customers, you will use the Truto API. This single POST call validates the underlying tools, generates a cryptographically signed token, and provisions the server in Truto's edge infrastructure.

curl -X POST https://api.truto.one/integrated-account/$INTEGRATED_ACCOUNT_ID/mcp \
  -H "Authorization: Bearer $TRUTO_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "ChatGPT Merchandising Agent",
    "config": {
      "methods": ["read", "write", "custom"],
      "tags": ["catalog", "msi_inventory", "pricing"]
    },
    "expires_at": "2026-12-31T23:59:59Z"
  }'

The response returns the self-contained URL required to connect the client:

{
  "id": "mcp_abc123",
  "name": "ChatGPT Merchandising Agent",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Connecting the MCP Server to ChatGPT

Once you have the url from Truto, you need to register it with ChatGPT. The URL acts as the transport endpoint.

Method A: Via the ChatGPT UI (Custom Connectors)

For enterprise users leveraging ChatGPT directly in the browser or desktop app:

  1. Open ChatGPT and navigate to Settings -> Apps -> Advanced settings.
  2. Ensure Developer mode is toggled on (this exposes the MCP capabilities).
  3. Under MCP servers / Custom connectors, click to add a new server.
  4. Name: Enter a descriptive label (e.g., "Adobe Commerce (Truto)").
  5. Server URL: Paste the Truto MCP URL (https://api.truto.one/mcp/<token>).
  6. Save the configuration.

ChatGPT will immediately send an initialize JSON-RPC handshake to the URL. Truto responds with the server capabilities, and ChatGPT automatically calls tools/list to populate the agent's context window with the available Adobe Commerce tools.

Method B: Via Manual Config File (SSE Client Wrapper)

If you are using an AI framework or a custom client that requires a standard MCP configuration file (like claude_desktop_config.json or a programmatic LangChain/Cursor setup), you can bridge standard standard I/O to Truto's HTTP SSE (Server-Sent Events) endpoint using the official MCP CLI wrapper.

Create or update your MCP config file to use the npx command to run the remote SSE client:

{
  "mcpServers": {
    "adobe-commerce-truto": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/<token>"
      ]
    }
  }
}

This tells the AI client to execute an SSE bridge that maintains a persistent connection to the Truto edge router.

Security and Access Control

Exposing an ERP or commerce platform to an autonomous agent requires strict boundaries. Truto provides four native security mechanisms to lock down your MCP server configurations:

  • Method Filtering: Limit the server strictly to read operations to prevent ChatGPT from modifying stock or placing accidental orders, or selectively allow write operations for specific environments.
  • Tag Filtering: Restrict the AI's visibility by scoping the server to specific resource tags. An agent designed to update content can be restricted to cms_blocks and cms_pages, entirely blinding it to customers or orders.
  • Extra Authentication (require_api_token_auth): By default, possessing the MCP URL is enough to invoke tools. Enabling this flag forces the client to also pass a valid Truto API token in the Authorization header, adding a strict secondary identity layer.
  • Automatic Expiration (expires_at): Issue short-lived MCP URLs to temporary agents, contractors, or specific automated pipeline runs. Truto automatically destroys the token at the deadline, severing access.

Hero Tools for Adobe Commerce

Truto normalizes dozens of Adobe Commerce endpoints into flat, LLM-friendly schemas. Here are six high-leverage tools available for your ChatGPT workflows.

list_all_adobe_commerce_products

Retrieves a filtered list of products. Because Truto flattens the searchCriteria arrays, ChatGPT can easily look up items by SKU, attribute set, or category without wrestling with complex URL encoding.

"Fetch the first 50 products that belong to the 'Summer Collection' category. Return their SKUs, names, and current prices."

adobe_commerce_source_items_bulk_create

This is the critical tool for Multi-Source Inventory (MSI). It creates or updates stock quantities for specific SKUs at specific physical source locations (warehouses or stores).

"We just received a shipment at the Dallas warehouse (source code: TX-DAL). Update the inventory for SKU 'tshirt-vneck-red-m' to 140 units, and set its status to in-stock."

adobe_commerce_tier_prices_bulk_update

Replaces all tier prices for a given set of SKUs. Essential for B2B catalog management where pricing scales by volume or customer group.

"Update the tier pricing for the 'Industrial Coffee Maker' (SKU: CM-PRO-900). If the customer group is 'Wholesale' and they buy 10 or more, the price should drop to $249.99."

create_a_adobe_commerce_configurable_product_child

Links a simple product (a specific variant) to a parent configurable product. This is notoriously difficult via raw API but abstracted cleanly here.

"Link the simple product SKU 'shoes-run-blue-10' to the parent configurable product SKU 'shoes-run-parent'."

update_a_adobe_commerce_order_address_by_id

Updates the billing or shipping address of an existing order. Crucial for customer service agents handling post-purchase correction requests.

"The customer for order #10004523 reached out. Update the shipping address on that order to 123 New Tech Lane, Austin, TX 78701."

create_a_adobe_commerce_product_attribute

Creates a new custom attribute (e.g., 'material' or 'brand') in the catalog's EAV structure so it can be assigned to products.

"Create a new product attribute called 'fabric_care'. It should be a text field, visible on the frontend, and not required."

Note: This is a curated selection of tools. For the complete list of available Adobe Commerce operations, schemas, and required parameters, visit the Truto Adobe Commerce integration page.

Workflows in Action

When ChatGPT is equipped with these MCP tools, it acts as a highly capable orchestrator that can execute complex chained tasks based on natural language intent.

Workflow 1: Flash Sale Pricing Update

Persona: E-commerce Merchandiser

"We are running a weekend flash sale for our VIP tier. Set up a special price of $45.00 for all variants of the 'Classic Hoodie' starting today and ending on Sunday. Only apply this to the 'VIP Customers' group."

Step-by-step execution:

  1. ChatGPT calls list_all_adobe_commerce_products filtering by the parent SKU to discover all simple child SKUs associated with the 'Classic Hoodie'.
  2. It calls list_all_adobe_commerce_customer_groups to find the internal integer ID for 'VIP Customers'.
  3. It calls adobe_commerce_special_prices_search or adobe_commerce_tier_prices_bulk_update constructing a JSON payload that loops through every discovered child SKU, setting the price to $45.00, mapped to the VIP customer group ID, and applying the requested start/end datetimes.

Outcome: The merchandiser successfully schedules a massive pricing update across dozens of variants without manually exporting CSVs or navigating the slow Adobe Commerce admin panel.

Workflow 2: Resolving an Out-of-Stock Allocation Issue

Persona: Fulfillment / Warehouse Operations

"Order #00008892 is blocked because the 'Brooklyn' warehouse is out of stock for SKU 'desk-lamp-led'. Check if the 'Jersey' warehouse has inventory. If they have more than 5 units, adjust the stock source link for this order."

sequenceDiagram
    participant User as User
    participant ChatGPT as ChatGPT
    participant MCP as Truto MCP Server
    participant API as Adobe Commerce API

    User->>ChatGPT: "Check inventory for desk-lamp-led in Jersey..."
    ChatGPT->>MCP: Call list_all_adobe_commerce_source_items<br>(sku: desk-lamp-led)
    MCP->>API: GET /rest/V1/inventory/source-items
    API-->>MCP: Returns stock levels for all sources
    MCP-->>ChatGPT: JSON result showing Jersey has 12 units
    ChatGPT->>MCP: Call create_a_adobe_commerce_order_comment<br>(order_id: 00008892)
    MCP->>API: POST /rest/V1/orders/00008892/comments
    API-->>MCP: Success
    MCP-->>ChatGPT: Comment added
    ChatGPT-->>User: "I confirmed the Jersey warehouse has 12 units. I have updated the order notes for the fulfillment team to re-route."

Step-by-step execution:

  1. ChatGPT calls list_all_adobe_commerce_source_items filtering by sku: desk-lamp-led. It receives the MSI array showing stock levels per source_code.
  2. It analyzes the JSON to confirm source_code: jersey has quantity: 12.
  3. It calls create_a_adobe_commerce_order_comment to document the stock availability on the order, or invokes shipping tools to alert the specific warehouse.

Outcome: Fulfillment operations are unblocked in seconds, dynamically interacting with the MSI system without human intervention.

Handling Rate Limits in Production

When unleashing AI agents on large datasets, you will inevitably hit vendor rate limits.

It is critical to understand that Truto does not retry, throttle, or apply backoff on rate limit errors. If your ChatGPT agent loops through 500 catalog updates in 10 seconds and trips Adobe Commerce's threshold, the upstream API will return an HTTP 429. Truto strictly acts as a pass-through layer, relaying that 429 error directly back to the calling client.

To help your agents gracefully recover, Truto normalizes the upstream rate limit information into standardized headers per the IETF specification (ratelimit-limit, ratelimit-remaining, ratelimit-reset). The caller (your application or the AI framework) must read these headers and implement its own retry and backoff mechanisms. Do not assume the MCP server will absorb the limit for you.

A Better Way to Manage Commerce Data

Connecting ChatGPT to Adobe Commerce shouldn't mean spending a sprint writing EAV payload parsers and wrestling with deeply nested searchCriteria strings. By deploying a managed MCP server via Truto, you immediately abstract away the platform's legacy architectural quirks, exposing clean, LLM-optimized tools for catalog management, MSI stock orchestration, and order updates.

Your engineers get to stop maintaining brittle point-to-point connector code, and your users get the power to execute complex e-commerce operations entirely through natural language.

FAQ

How do I securely expose Adobe Commerce data to ChatGPT?
By using a Model Context Protocol (MCP) server. Truto generates a secure, tokenized MCP endpoint mapped specifically to your Adobe Commerce instance, translating JSON-RPC tool calls from ChatGPT into authenticated REST API requests.
Does ChatGPT understand Adobe Commerce's MSI (Multi-Source Inventory) system?
Yes, if provided the right tools. Truto's auto-generated tools explicitly expose MSI endpoints like `adobe_commerce_source_items_bulk_create`, allowing the LLM to manage stock across different sources rather than relying on deprecated legacy inventory endpoints.
How does Truto handle Adobe Commerce API rate limits?
Truto passes HTTP 429 rate limit errors directly to the caller and normalizes the upstream headers into standard IETF formats (`ratelimit-limit`, `ratelimit-remaining`, `ratelimit-reset`). The caller (or AI agent framework) is responsible for implementing retry and backoff logic.
Can I restrict the AI agent to read-only operations?
Yes. When generating the MCP server in Truto, you can configure method filtering to only allow `read` operations (like GET and LIST), effectively blocking ChatGPT from modifying catalog data or placing orders.

More from our Blog