Skip to content

Connect Active Ants to ChatGPT: Manage Fulfillment and Inventory

Roopendra Talekar Roopendra Talekar 10 min read AI & Agents
Elaichi from the team behind Truto

Active Ants in ChatGPT, in about a minute.

The best way to connect Active Ants to ChatGPT is Elaichi: connect Active Ants to Elaichi once, then add Elaichi to ChatGPT as a connector. Two steps, about a minute, with a 14‑day free trial and no credit card required.

  • No credit card required
  • 500+ connectors
  • Credentials vaulted, never read back
  1. Start your free trial

    14 days free, no credit card required.

  2. Connect Active Ants

    Once, in Elaichi. ChatGPT never gets more access than you have.

  3. Add Elaichi to ChatGPT

    In ChatGPT, open Plugins, press +, and paste the URL into Server URL. Sign in and approve.

    https://api.elaichi.ai/mcp
TrutoFor product teams

Building Active Ants into your own product? This guide is for you.

Connect Active Ants to ChatGPT via an MCP server to let AI agents automate order cancellations, track inventory, and manage inbound shipments without writing custom integration code.

The developer guide

Learn how to connect Active Ants to ChatGPT using Truto's managed MCP servers. Automate fulfillment, manage orders, and track inventory with AI agents.

If you want to connect Active Ants to ChatGPT so your AI agents can manage ecommerce fulfillment, update inventory levels, cancel orders, and track inbound shipments, you need a Model Context Protocol (MCP) server. This server acts as the translation layer between ChatGPT's tool calling capabilities and the highly structured Active Ants REST API.

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

Giving a Large Language Model (LLM) read and write access to a 3PL and warehouse management system is an engineering challenge. You either spend weeks building, hosting, and maintaining a custom MCP server to translate LLM JSON arguments into Active Ants's strict JSON:API payload structures, or you use a managed infrastructure layer to dynamically generate a secure, authenticated MCP server URL.

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

The Engineering Reality of the Active Ants API

Building a custom MCP server means owning the entire integration lifecycle. While the MCP standard handles how models discover tools, it does not magically fix the complexities of the underlying vendor API. Active Ants presents several unique integration challenges that break standard CRUD assumptions.

If you build this yourself, your custom server code must handle the following realities:

Strict JSON:API Implementation and Hydration

Active Ants heavily utilizes the JSON:API specification. Responses are heavily nested with attributes, relationships, and included resources. If an LLM needs to view an order and its shipping address, a standard GET request only returns relational identifiers. Your MCP server must dynamically inject include=deliveryAddress,orderItems into the query parameters, and then parse the flattened included array to stitch the relationships back together before handing the context back to the LLM. If you fail to do this, the LLM will hallucinate the delivery details.

Destructive PUT Updates

When an LLM wants to update an order or a product in Active Ants, it cannot perform a partial PATCH. The Active Ants API enforces full replacement updates. Omitted mutable fields are erased entirely. If your LLM tries to update just the status of a product via update_a_active_ants_product_by_id, but fails to include the name and hsCodes, the API will wipe those existing fields. Your MCP server must enforce a read-modify-write pattern, fetching the current state first, applying the LLM's delta, and submitting the complete payload.

Asynchronous and Partial Cancellations

Canceling an order (delete_a_active_ants_order_by_id) or an item (delete_a_active_ants_order_item_by_id) in Active Ants is not a guaranteed synchronous operation. The server attempts to cancel each order item, but this only succeeds if the items have not yet shipped. This means cancellations can be partial. The LLM must be equipped with tools that understand and parse these partial success responses, looking at the messageCode and remaining quantities rather than assuming a 200 OK means the entire order was stopped.

Rate Limiting and 429 Exhaustion

Active Ants enforces rate limits on their endpoints to protect warehouse operations. A critical operational reality: Truto does not automatically retry, throttle, or apply backoff on rate limit errors. When the Active Ants API returns an HTTP 429 Too Many Requests, Truto passes that error directly to the caller. Truto normalizes the upstream rate limit information into standardized headers (ratelimit-limit, ratelimit-remaining, ratelimit-reset) per the IETF specification. The caller (or the LLM orchestration layer) is strictly responsible for handling the backoff and retry logic.

Active Ants to ChatGPT Quickstart Guide

If you want the fastest path from a fresh Truto account to ChatGPT calling the Active Ants API, follow these steps. You can configure this via the Truto dashboard or entirely programmatically via the API.

What you need:

  • A Truto account with API access.
  • Active Ants API credentials (username, password, or OAuth depending on the client setup).
  • A ChatGPT Pro, Plus, Business, Enterprise, or Education seat with Developer mode enabled.

Step 1: Connect Active Ants as an Integrated Account

First, you need to establish the connection to the specific Active Ants tenant.

In the Truto dashboard, navigate to Integrated Accounts -> New Integrated Account, select Active Ants, and complete the authentication flow. Truto securely stores the credentials and handles token lifecycles, ensuring the LLM never interacts with an expired token.

Step 2: Get your Integrated Account ID

Once connected, grab your integrated_account_id. You can copy this directly from the Truto UI on the account detail page, or list your accounts via the API:

curl https://api.truto.one/integrated-account \
  -H "Authorization: Bearer $TRUTO_API_TOKEN"

Step 3: Generate the Active Ants MCP Server

Next, generate a scoped MCP server specifically for this Active Ants account. You can do this via the UI or the API.

Method A: Via the Truto UI

  1. Navigate to the integrated account page for your Active Ants connection.
  2. Click the MCP Servers tab.
  3. Click Create MCP Server.
  4. Select your desired configuration (e.g., filter to read and write methods, select tags like orders and products).
  5. Copy the generated MCP server URL.

Method B: Via the API Make a POST request to scope an MCP endpoint to the account. This returns a cryptographic token URL.

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": "Active Ants Fulfillment MCP",
    "config": {
      "methods": ["read", "write", "delete"],
      "tags": ["orders", "products", "stock", "shipments"]
    }
  }'

Response:

{
  "id": "mcp_abc123",
  "name": "Active Ants Fulfillment MCP",
  "url": "https://api.truto.one/mcp/a1b2c3d4e5f6..."
}

Treat the url as a sensitive secret - it contains routing and authentication data for this specific tenant.

Step 4: Connect the MCP Server to ChatGPT

You can connect this server to ChatGPT using the desktop UI or via a manual configuration file if you are running a local proxy.

Method A: Via the ChatGPT UI

  1. Open ChatGPT and go to Settings -> Apps -> Advanced settings.
  2. Enable Developer mode.
  3. Under MCP servers / Custom connectors, click to add a new server.
  4. Name: "Active Ants"
  5. Server URL: Paste the https://api.truto.one/mcp/<token> URL you generated in Step 3.
  6. Save. ChatGPT will immediately connect, perform the JSON-RPC handshake, and load the fulfillment tools.

Method B: Via Manual Config File (SSE Transport) If you are wrapping the connection or using an environment that requires a config file (like Claude Desktop or a custom LangChain setup bridging to ChatGPT), define the server using the SSE transport wrapper:

{
  "mcpServers": {
    "active-ants-prod": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sse",
        "https://api.truto.one/mcp/a1b2c3d4e5f6..."
      ]
    }
  }
}

Active Ants MCP Hero Tools

When you connect Active Ants to ChatGPT using Truto, the LLM gains access to dynamically generated tools derived directly from the API documentation. Here are the highest-leverage hero tools for managing warehouse operations and fulfillment.

1. list_all_active_ants_orders

Retrieves a paginated list of orders placed in Active Ants. It supports filtering by order date (orderedOn), externalOrderNumber, or custom references. Crucially, the LLM can pass the include parameter to hydrate relational data like orderItems, deliveryAddress, or billingAddress in a single call.

"Find the Active Ants order with external reference 'WEB-84729'. Include the delivery address and order items in the response so I can see what they bought."

2. get_single_active_ants_order_by_id

Fetches a specific order using the internal Paxon/Active Ants ID. This is required before attempting to update or cancel an order, as the LLM needs the exact state and nested IDs of the order items.

"Retrieve the full details for Active Ants order ID 99281, including the current fulfillment status and tracking links if available."

3. delete_a_active_ants_order_item_by_id

Cancels a specific orderItem rather than the entire order. This is highly useful for partial cancellations when a customer changes their mind about one item in a larger cart. The tool returns a response indicating whether the cancellation succeeded fully, partially, or failed because the item is already picked and packed.

"Cancel order item ID 445102. Check the response to confirm if it was successfully halted before it shipped, and let me know the result."

4. list_all_active_ants_stock_levels

Retrieves current stock levels across all products in the warehouse. This returns aggregated, actionable stock metrics rather than transient individual stock location records, making it the primary tool for inventory checks.

"Check the current stock levels for SKU 'PROD-X100'. How many units are available for sale versus currently reserved for pending orders?"

5. update_a_active_ants_product_by_id

Updates an existing product catalog record. Because the Active Ants API requires a full replacement for updates, the LLM must execute a get_single_active_ants_product_by_id call first to load the existing schema, modify the targeted fields, and pass the complete object back to this tool.

"Fetch product ID 8831. Update its name to 'Wireless Keyboard V2' and change the status to active. Make sure to include all existing dimensions and HS codes in the update payload."

6. create_a_active_ants_inbound_packing_slip

Registers expected inbound inventory to a specific Active Ants warehouse facility. The LLM must supply the expectedIn warehouse ID, a unique reference, and the related inboundPackingSlipItems defining the SKUs and quantities arriving on the truck.

"Create an inbound packing slip for our Amsterdam warehouse. The reference is 'PO-2024-11'. We are expecting 500 units of SKU 'COFFEE-MUG-BLK' next Tuesday."

To view the complete schema details, query parameters, and the full list of available Active Ants endpoints, visit the Active Ants integration page.

Workflows in Action

Once the MCP server is connected to ChatGPT, your team can execute complex, multi-step warehouse workflows using conversational prompts. The LLM acts as an autonomous agent, chaining tool calls together to handle fulfillment logistics.

Scenario 1: Intercepting and Canceling a Shipped Order

Customer support needs to cancel an order, but they aren't sure if the warehouse has already shipped it.

"A customer just requested to cancel their order with external reference 'SHOPIFY-9921'. Find the order, check if it has shipped, and if it hasn't, cancel the order items. Tell me the final status."

How the agent executes this:

  1. Calls list_all_active_ants_orders with the filter externalOrderNumber=SHOPIFY-9921 and include=orderItems.
  2. Inspects the order status. If the status is pending or processing, it extracts the internal Active Ants order ID.
  3. Calls delete_a_active_ants_order_by_id using the internal ID.
  4. Evaluates the messageCode in the response to determine if the cancellation was fully successful or partially rejected due to warehouse picking status.
  5. Summarizes the outcome to the user.
sequenceDiagram
    participant User
    participant Agent as ChatGPT (Agent)
    participant MCP as Truto MCP Server
    participant API as Active Ants API

    User->>Agent: "Cancel order SHOPIFY-9921 if unshipped"
    Agent->>MCP: list_all_active_ants_orders(externalOrderNumber, include)
    MCP->>API: GET /orders?filter...
    API-->>MCP: Order Data + Items
    MCP-->>Agent: JSON Result
    
    opt If Order Not Shipped
        Agent->>MCP: delete_a_active_ants_order_by_id(id)
        MCP->>API: DELETE /orders/{id}
        API-->>MCP: Cancellation Status
        MCP-->>Agent: JSON Result
    end
    
    Agent-->>User: "Order successfully intercepted and canceled."

Scenario 2: Processing New Inventory Arrivals

The operations team needs to alert the 3PL about a new supplier delivery.

"We have a shipment arriving at the main warehouse on Friday. It contains 200 units of SKU 'DESK-LAMP-01' and 50 units of 'LED-BULB-02'. The PO reference is 'INBOUND-884'. Please create the inbound packing slip for this delivery."

How the agent executes this:

  1. Calls list_all_active_ants_products twice (or searches) to verify that both SKUs exist in the Active Ants catalog and to retrieve their internal product IDs.
  2. Calls create_a_active_ants_inbound_packing_slip passing reference: 'INBOUND-884', the target warehouse ID, and embeds the two items in the data.included relationship array with their respective product IDs and quantities.
  3. Returns the newly created packing slip ID to the operations team for tracking.

Scenario 3: Investigating Stock Discrepancies

A sales rep wants to know why an item is showing out of stock on the storefront.

"Look up the stock levels for SKU 'WINTER-JACKET-M'. Are there any units currently stuck in returns or damaged stock?"

How the agent executes this:

  1. Calls list_all_active_ants_products filtering by sku=WINTER-JACKET-M to get the product ID.
  2. Calls get_single_active_ants_stock_level_by_id using that product ID.
  3. Calls list_all_active_ants_stocks filtering by the product ID to view specific physical stock locations, identifying any batches marked with negative characteristics like quarantine or damage.
  4. Formats a clear breakdown of sellable vs. unsellable stock for the user.

Security and Access Control

Connecting an LLM to a warehouse management API requires strict access control. Truto's MCP servers provide multiple layers of security to ensure the LLM only performs authorized actions:

  • Method Filtering: At server creation time, you can restrict the server to specific HTTP methods using config.methods. Setting this to ["read"] ensures ChatGPT can only view stock and orders, but cannot create packing slips or cancel shipments.
  • Tag Filtering: You can constrain the server's scope to specific functional areas using config.tags. By passing ["stock", "products"], the LLM will not even be aware that order or shipping tools exist.
  • Additional Authentication: By enabling the require_api_token_auth flag, the raw MCP URL is no longer enough to connect. The caller must also pass a valid Truto API token in the Authorization header, preventing leaked URLs from being abused.
  • Time-Bound Access: Using the expires_at field allows you to provision temporary MCP servers. If you are deploying an agent for a weekend sales event, the server automatically destroys itself when the timestamp passes, cleaning up both database records and edge network cache.

The Strategic Advantage of Managed MCP Infrastructure

Connecting Active Ants to ChatGPT transforms how your operations team handles logistics. Instead of logging into complex 3PL dashboards to chase down tracking numbers, audit stock levels, or halt shipments, they can simply ask an AI agent to orchestrate the work.

However, building this integration from scratch means writing complex state machines to handle Active Ants's strict full-replacement updates, managing dynamic JSON:API relationship mappings, and writing robust retry logic for 429 rate limits.

By leveraging Truto's dynamic MCP server generation, you eliminate the integration boilerplate. You configure the scopes, grab the URL, and give your AI agent immediate, secure access to your supply chain.

Two ways to put Active Ants to work

Elaichifrom the team behind Truto

For you and your team

Use Active Ants in ChatGPT yourself

Connect Active Ants once, add Elaichi to ChatGPT, and ask. Every call is checked against your own permissions and logged.

Start free, 14 days No credit card required
Truto

For product teams

Ship Active Ants to your customers

Your customers connect their own Active Ants accounts. Your product gets one API and MCP tools for Active Ants, through Truto.

FAQ

What is the easiest way to connect Active Ants to ChatGPT?
The best way to connect Active Ants to ChatGPT is Elaichi: connect Active Ants to Elaichi once, then add Elaichi to ChatGPT as a connector. Two steps, about a minute, with a 14-day free trial and no credit card required.
Can I restrict ChatGPT to only read inventory data in Active Ants?
Yes. When creating the MCP server in Truto, you can set method filtering to `["read"]` and tag filtering to `["stock", "products"]`. This ensures the AI agent cannot modify orders or trigger shipments.
How does the MCP server handle Active Ants API rate limits?
Truto passes upstream 429 rate limit errors directly back to the caller while normalizing the rate limit headers (limit, remaining, reset). The calling application or AI agent orchestrator is responsible for implementing retry and backoff logic.
Does ChatGPT need to know Active Ants internal IDs to update products?
Yes. Because Active Ants requires full-replacement updates, the LLM must first fetch the product by ID to retrieve the complete schema, apply its changes, and then pass the full object back to the update tool.
Can the MCP server handle partial cancellations in Active Ants?
Yes. The delete order item tool returns the API's response indicating if the cancellation fully succeeded, partially succeeded, or failed because the item was already shipped. The LLM can read this response and inform the user.
Active Ants Active Ants in ChatGPT14 days free Start free

More from our Blog