> For the complete documentation index, see [llms.txt](https://docs.fulfillmenttools.com/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fulfillmenttools.com/documentation/integrations/mcp-servers.md).

# MCP servers

fulfillmenttools provides two MCP servers:

* [fulfillmenttools MCP Server](/documentation/integrations/mcp-servers/mcp-server-fulfillmenttools-api.md) (`/fft`)
* [onX MCP Server](/documentation/integrations/mcp-servers/mcp-server-onx.md) (`/onx`)

Both provide a standardized interface for interacting with fulfillmenttools and are built on the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP). They enable system-to-system communication that allows AI agents, orchestration layers, and external platforms to manage orders using natural language without relying on proprietary APIs. The two MCP Servers run side by side.

The onX MCP Server offers a fixed set of tools defined by the [Order Network eXchange](https://ordernetworkexchange.io/) (onX) protocol. The fulfillmenttools MCP Server works with the fulfillmenttools data model itself: pick jobs, pack jobs, handover jobs, shipments, parcels, carriers, facilities, routing, stock, and about 70 resources in total.

The MCP Servers act as a protocol adapter, passing requests and responses between the AI agent and the fulfillmenttools backend.

Any agent that supports MCP (for example, [Claude Desktop or Claude Code](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)) can connect to both servers.

<table data-search="false"><thead><tr><th></th><th>fulfillmenttools MCP Server</th><th>onX MCP Server</th></tr></thead><tbody><tr><td>URL</td><td><code>ocff-{projectId}.mcp.api.fulfillmenttools.com/fft</code></td><td><code>ocff-{projectId}.mcp.api.fulfillmenttools.com/onx</code></td></tr><tr><td>Purpose</td><td>Works with fulfillmenttools data model</td><td>Offers a fixed set of tools defined by the onX protocol</td></tr><tr><td>Scope</td><td>All fulfillmenttools APIs read operations</td><td>Subset of orders, shipments, inventory, stock, and listings</td></tr><tr><td>SSO</td><td>Yes</td><td>Yes</td></tr><tr><td>Tools</td><td><code>fft-discover</code>, <code>fft-read</code></td><td><code>get-inventory</code>, <code>get-products</code>, <code>get-product-variants</code>, <code>get-orders</code>, <code>get-fulfillments</code>, <code>get-returns</code></td></tr><tr><td>Primary use cases</td><td>Operational status, shipment tracking, order follow-up, stock and listings, API exploration</td><td>Inventory queries, product catalog access, variant lookup, agentic workflows</td></tr><tr><td>Operations</td><td>Read only</td><td>Read only</td></tr></tbody></table>

## Usage

When using our MCP Servers, we advise following the guidance below.

### Authentication

Every request to the server requires authentication. The agent acts on behalf of a user, not on its own, so the server enforces the [OAuth 2.1](https://oauth.net/2.1/) Authorization Code Flow with PKCE and disallows the implicit and ROPC flows.

There are three ways to authenticate:

* **Log in with fulfillmenttools credentials**: If no authorization header is present, you're redirected to a login page where you enter your email and password. After you log in, the agent uses the issued token for the rest of the session.
* **Log in with SSO**: If your tenant has an OIDC provider set up for Backoffice, the login page also shows a button for it. You sign in with your company account, the same way as in Backoffice, and the agent receives the same token as with a password login.
* **Token passthrough**: The agent sends a fulfillmenttools ID token as a Bearer token in the authorization header of each request. This suits pre-configured integrations where the agent has been provisioned with a valid token. The ID token expires after 60 minutes.

A token issued by the login page is valid only for the server it was issued for, so an agent connected to both `/onx` and `/fft` logs in to each separately. A passed-through ID token works on both.

{% hint style="danger" %}
Users must never include credentials in their natural language queries.
{% endhint %}

### Discouraged or prohibited data inputs <a href="#discouraged-or-prohibited-data-inputs" id="discouraged-or-prohibited-data-inputs"></a>

The following data types shouldn't be included in natural language queries or tool parameters:

| Category                                  | Examples                                                           | Reason                                                           |
| ----------------------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------- |
| **Sensitive payment data**                | Full credit card numbers, CVV codes, bank account details          | Security risk: Use dedicated payment processors                  |
| **Personal identification documents**     | Passport numbers, social security numbers, driver's license copies | Data protection compliance                                       |
| **Authentication credentials in queries** | Passwords, API keys, access tokens typed into prompts              | Credentials should never be part of conversation content         |
| **Unstructured bulk data**                | Large file uploads, binary attachments                             | The fulfillmenttools MCP Server isn't designed for file transfer |
| **Test data in production**               | Fake orders, test customers in a live environment                  | Data integrity concerns                                          |

#### **System behavior**

**The fulfillmenttools MCP Server:**

* Won't infer or auto-fill missing required fields
* Won't generate placeholder data for incomplete requests
* Won't attempt to correct malformed data
* Won't bypass backend validation rules
* Won't call an operation that changes data, or one from an excluded area

If required information is missing, the backend error returns a transparent error, and the AI agent will request the missing details from the user.

### Data processing locations and third parties <a href="#data-processing-locations-and-third-parties" id="data-processing-locations-and-third-parties"></a>

Our MCP Servers are deployed and operated exclusively by fulfillmenttools. They run in the same geographical region as the customer's fulfillmenttools tenant to ensure data residency compliance and optimal performance.

**Processing locations:**

| Component                    | Location                                                                     | Data handled                                                         |
| ---------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **AI agent**                 | Customer/Partner infrastructure (varies by provider)                         | Natural language conversation, tool invocations                      |
| **MCP Server**               | fulfillmenttools infrastructure, same region as customer tenant              | Protocol handling, operation search, request validation, translation |
| **fulfillmenttools backend** | fulfillmenttools cloud infrastructure in the region of the customers' tenant | Inventory data, product catalog, fulfillment operations              |

**Third-party involvement:**

Our MCP Servers don't route data to additional third-party services beyond those listed below.

| Third party                                      | Role                                               | Data exposure                                                       |
| ------------------------------------------------ | -------------------------------------------------- | ------------------------------------------------------------------- |
| **AI provider** (for example, Anthropic, OpenAI) | Processes natural language to determine tool calls | Sees conversation content, including any data returned by the tools |
| **fulfillmenttools**                             | Operates the MCP Server and backend systems        | Full access to operational data                                     |

**Privacy consideration:** The AI provider processes conversation content to understand and respond to requests. Responses can contain personal data, such as consumer names, addresses, email addresses, and phone numbers on orders and shipments. This data reaches the AI provider as part of the conversation. Users should be mindful of what they ask for and what they include in their prompts.

{% hint style="info" %}
In connection with this feature, fulfillmenttools acts neither as a provider nor as an operator of an AI system within the meaning of the EU AI Act. Accordingly, the obligations arising from the AI Act don't apply to fulfillmenttools.
{% endhint %}

### Human-in-the-loop <a href="#human-in-the-loop" id="human-in-the-loop"></a>

Our MCP Servers are designed with human oversight as a foundational principle. While AI agents can interpret requests and execute operations, fulfillmenttools ensures users remain in control of all decisions and actions.

#### Oversight mechanisms <a href="#oversight-mechanisms" id="oversight-mechanisms"></a>

* **Transparent communication**: All operations, including errors, are communicated clearly to the user
* **No autonomous actions**: fulfillmenttools doesn't perform high-impact operations without explicit user direction

#### When human input is required <a href="#when-human-input-is-required" id="when-human-input-is-required"></a>

fulfillmenttools requests clarification rather than making assumptions when:

* Required information is missing from the request
* Multiple valid interpretations of user intent exist
* The requested action would have significant business impact
* Backend validation rules reject the request

#### User responsibility <a href="#user-responsibility" id="user-responsibility"></a>

Users are the decision-makers in all interactions. The AI agent accelerates work by:

* Translating natural language into precise commands
* Presenting information in accessible formats
* Maintaining context within conversations
* Suggesting relevant next steps based on results

However, users should:

* Review proposed actions before confirming execution
* Verify that AI-interpreted data matches their intent
* Report unexpected behavior to the fulfillmenttools Support team
* Maintain awareness of what data is being shared in conversations

The combination of AI assistance and human oversight ensures efficient operations while maintaining appropriate control over business-critical actions.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.fulfillmenttools.com/documentation/integrations/mcp-servers.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
