# Order Desk MCP by usefulapi (remote · order-desk.usefulapi.io)

Search Order Desk orders and inventory; read order items and shipments; create or update orders.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-25

## Components

- remote · `order-desk.usefulapi.io`: 63/100 (this document), [markdown](https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk.md), [page](https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk)

## Channel facts

- Endpoint: `https://order-desk.usefulapi.io/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.5.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-25.

- **Endpoint Security**: 78/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2422 tokens (~161/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 72% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Order Desk MCP by usefulapi server?

Order Desk MCP by usefulapi is a hosted endpoint at https://order-desk.usefulapi.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-usefulapi-order-desk 'https://order-desk.usefulapi.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-usefulapi-order-desk": {
      "url": "https://order-desk.usefulapi.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-usefulapi-order-desk": {
      "type": "http",
      "url": "https://order-desk.usefulapi.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-usefulapi-order-desk]
url = "https://order-desk.usefulapi.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-usefulapi-order-desk": {
      "type": "remote",
      "url": "https://order-desk.usefulapi.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-usefulapi-order-desk --url 'https://order-desk.usefulapi.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-usefulapi-order-desk:
    url: "https://order-desk.usefulapi.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-usefulapi-order-desk": {
      "Transport": "http",
      "Url": "https://order-desk.usefulapi.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-usefulapi-order-desk -t streamable-http -u 'https://order-desk.usefulapi.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-usefulapi-order-desk": {
      "type": "http",
      "url": "https://order-desk.usefulapi.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-25 (score 63, +1)

- [functional] Server version: 1.5.2 → 1.5.3
- [functional] Server version: 1.5.0 → 1.5.2

### 2026-10-24 (score 62, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.4.0 → 1.5.0
- [functional] Server version: 1.3.0 → 1.4.0
- [functional] Server version: 1.1.0 → 1.3.0

### 2026-10-23 (score 62, 0)

- [functional] Server version: 1.0.1 → 1.1.0

### 2026-10-22 (score 62, +1)

- [functional] Server version: 1.0.0 → 1.0.1

### 2026-10-21 (score 61, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-20 (score 61)

First indexed and scored.

## MCP tools (15)

### `orderdesk_get_store` (~71 tokens)

Get store settings and folders

The store's name, id, FOLDERS (id -> name; orders live in exactly one folder, and folder ids are needed to filter and move orders) and key settings (timezone, locale, stock behavior, shipping methods). The API key and mail credentials are never returned. GET /store.

### `orderdesk_list_orders` (~365 tokens)

List orders

Search orders, newest first, with items, addresses, totals, payment and shipments. Filters combine with AND. Prefer a date range: Order Desk asks clients to avoid open-ended queries. Page with limit and offset (next_offset). GET /orders.

Input parameters:

- `added_from` (string): Orders added on or after this time (a date means the start of that UTC day).
- `added_to` (string): Orders added on or before this time (a date means the end of that UTC day).
- `customer_first_name` (string)
- `customer_id` (string): Customer id in the originating system.
- `customer_last_name` (string)
- `email` (string): Customer e-mail address.
- `folder_id` (string): Folder id, or several separated by commas (see orderdesk_get_store).
- `folder_name` (string): The folder's exact name instead of its id.
- `include_history` (boolean): Include each order's history (slow; use with a small limit).
- `limit` (integer): How many records to return, 1-100 (default 20).
- `modified_from` (string): Orders modified on or after this time.
- `modified_to` (string): Orders modified on or before this time.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `order` (string): Sort direction (default DESC).
- `order_by` (string): Order field to sort by (default date_added).
- `shipping_first_name` (string)
- `shipping_last_name` (string)
- `source_id` (string): Your original order id from the cart or marketplace.
- `source_name` (string): Order source name (cart or marketplace).

### `orderdesk_get_order` (~82 tokens)

Get order

One order by Order Desk's internal id: addresses, items, totals, payment, notes, discounts, checkout data and shipments. To find an order by your own id, use orderdesk_list_orders with source_id. GET /orders/{order_id}.

Input parameters:

- `order_id` (integer, required): Order Desk's internal order id (not the cart's order number).

### `orderdesk_list_order_items` (~57 tokens)

List order items

The line items of one order (name, SKU, price, quantity, weight, delivery type, variations). GET /orders/{order_id}/order-items.

Input parameters:

- `order_id` (integer, required): Order Desk's internal order id.

### `orderdesk_list_order_shipments` (~58 tokens)

List order shipments

The shipments recorded against an order: carrier, tracking number and URL, method, weight, cost, dates. GET /orders/{order_id}/shipments.

Input parameters:

- `order_id` (integer, required): Order Desk's internal order id.

### `orderdesk_create_order` (~291 tokens)

Create order

WRITE: add a new order to the store. Needs at least one item, and a name or company in the shipping or customer address (if only one address is given the other is copied from it). Omit folder_id to land in the first folder. Order Desk rejects an order it recognizes as a duplicate and names the existing order id. POST /orders.

Input parameters:

- `checkout_data` (object): Editable extra order details (max 3,500 characters as JSON).
- `customer` (object): Customer (billing) address.
- `email` (string): Customer e-mail address.
- `folder_id` (integer): Folder to put the order in (see orderdesk_get_store).
- `handling_total` (number)
- `order_items` (array, required): Line items (at least one).
- `order_metadata` (object): Hidden extra order details (max 2,000 characters as JSON).
- `payment_status` (string): Defaults to Captured.
- `payment_type` (string): Visa, MasterCard, PayPal, ...
- `shipping` (object): Shipping address.
- `shipping_method` (string)
- `shipping_total` (number)
- `source_id` (string): Your own order id (the order's Order Desk id is used when blank).
- `source_name` (string): Order source / cart name (default Order Desk).
- `tax_total` (number)

### `orderdesk_update_order` (~223 tokens)

Update order

WRITE: change fields of an existing order. Order Desk's PUT replaces the whole record, so this reads the order, applies only the fields you pass (shipping/customer address fields and checkout_data/order_metadata keys are merged into what is there, other values replaced) and sends the complete record back, items included. The order keeps its folder; use orderdesk_move_orders to move it. PUT /orders/{order_id}.

Input parameters:

- `checkout_data` (object): Checkout data keys to set (other keys are kept).
- `customer` (object): Customer address fields to change (others are kept).
- `email` (string)
- `handling_total` (number)
- `order_id` (integer, required): Order Desk's internal order id.
- `order_metadata` (object): Order metadata keys to set (other keys are kept).
- `payment_status` (string)
- `shipping` (object): Shipping address fields to change (others are kept).
- `shipping_method` (string)
- `shipping_total` (number)
- `tax_total` (number)

### `orderdesk_add_order_item` (~75 tokens)

Add order item

WRITE: add one line item to an existing order; Order Desk recalculates the totals. POST /orders/{order_id}/order-items.

Input parameters:

- `item` (object, required): The line item to add (name, code, price, quantity...).
- `order_id` (integer, required): Order Desk's internal order id.

### `orderdesk_add_order_note` (~102 tokens)

Add order history note

WRITE: append an entry to an order's history. History is append-only (entries cannot be edited or removed) and an order holds at most 250 entries, so do not use it for routine polling. POST /orders/{order_id}/order-history.

Input parameters:

- `note` (string, required): The note text.
- `order_id` (integer, required): Order Desk's internal order id.
- `source_name` (string): What wrote the entry (default API).

### `orderdesk_add_shipment` (~165 tokens)

Add shipment

WRITE: record a shipment (carrier and tracking number) against an order. One shipment per parcel; several shipments represent a partial fulfillment. Use "n/a" when there is no tracking number. If tracking_url is omitted Order Desk derives it. POST /orders/{order_id}/shipments.

Input parameters:

- `carrier_code` (string): Carrier code such as USPS or FedEx.
- `cost` (number): Your cost to send the shipment.
- `order_id` (integer, required): Order Desk's internal order id.
- `shipment_method` (string): Shipping service name, e.g. First Class International.
- `tracking_number` (string, required): Carrier tracking number, or "n/a".
- `tracking_url` (string)
- `weight` (number): Final shipment weight.

### `orderdesk_move_orders` (~122 tokens)

Move orders to a folder

WRITE: move one or more orders to another folder. Moving runs the rules attached to the destination folder (which can send e-mail, call fulfillment services, etc.) and writes a history entry. Pass exactly one of destination_folder_id or destination_folder_name (see orderdesk_get_store). Returns each order's previous folder. POST /move-orders.

Input parameters:

- `destination_folder_id` (integer): Folder id to move to.
- `destination_folder_name` (string): Exact folder name to move to.
- `order_ids` (array, required): Order Desk's internal order ids.

### `orderdesk_list_inventory_items` (~170 tokens)

List inventory items

Search the store's inventory (SKU, name, price, cost, weight, stock, location). Order Desk returns every match with no paging, so narrow with search/code/name; limit and offset slice the result here. GET /inventory-items.

Input parameters:

- `code` (string): Exact SKU.
- `limit` (integer): How many items to return, 1-200 (default 50).
- `location` (string): Warehouse or fulfillment method.
- `manufacturer_sku` (string)
- `name` (string): Product name.
- `offset` (integer): Records to skip (default 0). Pass the previous reply's next_offset.
- `search` (string): Matches name, code and metadata together.
- `updated_from` (string): Items updated on or after this time.

### `orderdesk_get_inventory_item` (~53 tokens)

Get inventory item

One inventory item by Order Desk's internal id. GET /inventory-items/{inventory_item_id}.

Input parameters:

- `inventory_item_id` (integer, required): Order Desk's internal inventory item id (see orderdesk_list_inventory_items).

### `orderdesk_create_inventory_item` (~124 tokens)

Create inventory item

WRITE: add an inventory item. The code (SKU) must match the code your orders arrive with. POST /inventory-items.

Input parameters:

- `code` (string, required): Unique SKU.
- `cost` (number): Item cost.
- `location` (string): Warehouse or fulfillment method.
- `manufacturer_sku` (string)
- `metadata` (object)
- `name` (string, required): Product name.
- `price` (number)
- `stock` (integer): Units available.
- `variation_list` (object)
- `weight` (number): Shipping weight.

### `orderdesk_update_inventory_item` (~189 tokens)

Update inventory item

WRITE: change fields of an inventory item, for example its stock count. Order Desk's PUT replaces the whole record, so this reads the item, applies only the fields you pass (metadata and variation keys are merged) and sends the complete record back. PUT /inventory-items/{inventory_item_id}.

Input parameters:

- `code` (string): SKU.
- `cost` (number)
- `inventory_item_id` (integer, required): Order Desk's internal inventory item id.
- `location` (string)
- `manufacturer_sku` (string)
- `metadata` (object): Metadata keys to set (others are kept).
- `name` (string)
- `price` (number)
- `stock` (integer): The new units-available count (replaces the old one).
- `variation_list` (object): Variation keys to set (others are kept).
- `weight` (number)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk#diagnostics

## Score history

- 2026-10-25: 63
- 2026-10-24: 62
- 2026-10-23: 62
- 2026-10-22: 62
- 2026-10-21: 61
- 2026-10-20: 61

## Common questions

### What is the Order Desk MCP by usefulapi server?

Order Desk MCP by usefulapi is listed in the public MCP registry as io.usefulapi/order-desk. Search Order Desk orders and inventory; read order items and shipments; create or update orders. This page covers its hosted endpoint (https://order-desk.usefulapi.io/mcp).

### Is the Order Desk MCP by usefulapi server safe to use?

Order Desk MCP by usefulapi scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Order Desk MCP by usefulapi server expose?

Order Desk MCP by usefulapi exposes 15 tools: orderdesk_get_store, orderdesk_list_orders, orderdesk_get_order, orderdesk_list_order_items, orderdesk_list_order_shipments, and 10 more. Their descriptions and schemas cost roughly 2,147 tokens of context every time the server is loaded.

### Does the Order Desk MCP by usefulapi server require authentication?

Yes. Order Desk MCP by usefulapi asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Order Desk MCP by usefulapi server still maintained?

Order Desk MCP by usefulapi is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://order-desk.usefulapi.io/mcp
- Repository: https://github.com/m190/usefulapi-mcp
- Website: https://usefulapi.io/order-desk/
- Changelog RSS feed: https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk.json
- HTML version of this page: https://verifymcp.io/servers/io-usefulapi-order-desk/order-desk
