Ordoro MCP by usefulapi

Read Ordoro orders, products, shipments, suppliers and purchase orders; tag and comment on orders.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,058Tokens (tool definitions)
~1.7 KBTypical response size
Significant attention impact (3.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "ordoro": {
      "url": "https://ordoro.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://ordoro.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (18)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢ordoro_list_orders(status, search, sku, tag, warehouse_id, ...)

List orders across all sales channels, newest first by default. Filter by status (awaiting_fulfillment, shipped, cancelled, dropshipment_requested, all), free-text search, SKU, tag, warehouse, and created/updated/shipped date ranges. Returns { count, limit, offset, order: [...] } with lines, addresses, shipping_info (tracking), tags and financials. Ordoro API: GET /v3/order.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Order status filter (default: Ordoro's default view).",
      "type": "string",
      "enum": [
        "all",
        "awaiting_fulfillment",
        "shipped",
        "cancelled",
        "dropshipment_requested"
      ]
    },
    "search": {
      "description": "Free-text search.",
      "type": "string"
    },
    "sku": {
      "description": "Only orders containing these SKUs.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tag": {
      "description": "Only orders with these tag names.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "warehouse_id": {
      "description": "Only orders assigned to these warehouse ids.",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "sales_channel": {
      "description": "Only orders from these sales channel (cart) ids.",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "allocation_status": {
      "description": "Inventory allocation status filter.",
      "type": "string",
      "enum": [
        "could_not_allocate",
        "unallocated",
        "partial",
        "allocated",
        "overallocated"
      ]
    },
    "created_after": {
      "description": "Created on/after this date (ISO 8601, e.g. 2026-10-01).",
      "type": "string"
    },
    "created_before": {
      "description": "Created before this date (ISO 8601).",
      "type": "string"
    },
    "updated_after": {
      "description": "Updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "shipped_after": {
      "description": "Shipped on/after this date (ISO 8601).",
      "type": "string"
    },
    "shipped_before": {
      "description": "Shipped before this date (ISO 8601).",
      "type": "string"
    },
    "sort": {
      "description": "Sort field; prefix '-' for descending.",
      "type": "string",
      "enum": [
        "order_placed_date",
        "-order_placed_date",
        "created_date",
        "-created_date",
        "updated_date",
        "-updated_date",
        "ship_date",
        "-ship_date",
        "grand_total",
        "-grand_total",
        "order_number",
        "-order_number",
        "status",
        "-status",
        "ship_by_date",
        "-ship_by_date",
        "deliver_by_date",
        "-deliver_by_date"
      ]
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_order(order_number)

Get one order by order number: status, lines (SKU, quantity, price), shipping/billing address, warehouse, shipping_info (carrier, tracking number, ship date, cost), comments, tags, financials and dropship info. Ordoro API: GET /v3/order/{order_number}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    }
  },
  "required": [
    "order_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_order_counts

Count orders per status: all, awaiting_fulfillment, shipped, unprinted_shipped, cancelled, dropshipment_requested. A quick fulfillment-backlog overview. Ordoro API: GET /v3/order/counts.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_order_tracking(order_number)

Get the shipment and tracking details of one order: carrier, shipping method, tracking number and tracking URL, ship date, estimated delivery, label cost, plus any return shipment and dropship info. Ordoro API: GET /v3/order/{order_number} (shipping_info).

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    }
  },
  "required": [
    "order_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_order_comments(order_number, limit, offset)

List the comments (internal notes and the order's activity log) of one order, with user and date. Paginated: returns { count, limit, offset, comment: [...] }; use offset for the next page. Ordoro API: GET /v3/order/{order_number}/comment.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "order_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_order_tags(limit, offset)

List the account's order tags (id, name, color). Use the id with ordoro_add_order_tag / ordoro_remove_order_tag. Ordoro API: GET /v3/order/tag.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_products(search, active, low_inventory_aoh, oversold, to_be_shipped, ...)

List products with inventory totals (total_on_hand, available_on_hand, total_committed, total_allocated, to_be_shipped, po_total_committed). Filter by search, active, low inventory, oversold, needs_sync, warehouse, supplier, tag, kit status and updated date. Returns { count, limit, offset, products: [...] }. Ordoro API: GET /product/.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Search by SKU or name.",
      "type": "string"
    },
    "active": {
      "description": "true = active products only, false = archived only.",
      "type": "boolean"
    },
    "low_inventory_aoh": {
      "description": "true = only products low on available-on-hand inventory.",
      "type": "boolean"
    },
    "oversold": {
      "description": "true = only oversold products.",
      "type": "boolean"
    },
    "to_be_shipped": {
      "description": "true = only products with committed (to-be-shipped) inventory.",
      "type": "boolean"
    },
    "needs_sync": {
      "description": "true = only products whose inventory needs syncing to a sales channel.",
      "type": "boolean"
    },
    "kit": {
      "description": "true = only kit parents.",
      "type": "boolean"
    },
    "dropship": {
      "description": "true = only dropshippable products.",
      "type": "boolean"
    },
    "category": {
      "description": "Product category.",
      "type": "string"
    },
    "warehouse_id": {
      "description": "Only products stocked in these warehouse ids.",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "supplier": {
      "description": "Only products from these supplier ids.",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    },
    "tag": {
      "description": "Only products with these tag names.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "updated_after": {
      "description": "Updated after this date (ISO 8601).",
      "type": "string"
    },
    "sort": {
      "description": "Sort field; prefix '-' for descending.",
      "type": "string",
      "enum": [
        "name",
        "-name",
        "sku",
        "-sku",
        "created",
        "-created",
        "total_committed",
        "-total_committed",
        "total_available",
        "-total_available",
        "total_on_hand",
        "-total_on_hand"
      ]
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_product(sku)

Get one product by SKU: price, cost, weight and dimensions, inventory totals, stock per warehouse (on hand, available, committed, location), suppliers, kit components and sales-channel links. Ordoro API: GET /product/{sku}/.

Input Schema

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "minLength": 1,
      "description": "The product SKU."
    }
  },
  "required": [
    "sku"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_warehouses(search, limit, offset)

List warehouses (ship-from locations) with id, name, address and whether each is the default. Ordoro API: GET /warehouse/.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search.",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_suppliers(search, limit, offset)

List suppliers and dropshippers with id, company name, address, contact email and dropship settings. Ordoro API: GET /supplier/.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search.",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_supplier(supplier_id)

Get one supplier by id, with address, contact details and dropship/PO settings. Ordoro API: GET /supplier/{supplier_id}/.

Input Schema

{
  "type": "object",
  "properties": {
    "supplier_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "The supplier id (from ordoro_list_suppliers)."
    }
  },
  "required": [
    "supplier_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_shippers(all, limit, offset)

List the carrier accounts (shippers) connected to Ordoro: UPS, FedEx, USPS (Endicia/Pitney), DHL, Canada Post, Australia Post, Amazon, Sendle. Returns id, name, vendor, archive/created/updated dates and hidden shipping methods only (carrier credentials are never returned). Ordoro API: GET /shipper/.

Input Schema

{
  "type": "object",
  "properties": {
    "all": {
      "description": "true = include archived carrier accounts.",
      "type": "boolean"
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_purchase_orders(status, search, sku, tag, updated_after, ...)

List purchase orders to suppliers with status (unsent, sent, partial, received, cancelled), supplier, lines and expected delivery. Filter by status, SKU, tag, search and updated date. Ordoro API: GET /purchase_order/.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Purchase order status filter.",
      "type": "string",
      "enum": [
        "unsent",
        "sent",
        "partial",
        "received",
        "cancelled",
        "all"
      ]
    },
    "search": {
      "description": "Free-text search.",
      "type": "string"
    },
    "sku": {
      "description": "Only POs containing these SKUs.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tag": {
      "description": "Only POs with these tag names.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "updated_after": {
      "description": "Updated after this date (ISO 8601).",
      "type": "string"
    },
    "updated_before": {
      "description": "Updated before this date (ISO 8601).",
      "type": "string"
    },
    "sort": {
      "description": "Sort field; prefix '-' for descending.",
      "type": "string",
      "enum": [
        "status",
        "-status",
        "po_id",
        "-po_id",
        "updated",
        "-updated",
        "supplier",
        "-supplier",
        "estimated_delivery_date",
        "-estimated_delivery_date"
      ]
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_get_purchase_order(po_id)

Get one purchase order by its PO id: supplier, warehouse, status, lines (SKU, quantity ordered/received, unit price), shipping/payment method and dates. Ordoro API: GET /purchase_order/{po_id}/.

Input Schema

{
  "type": "object",
  "properties": {
    "po_id": {
      "type": "string",
      "minLength": 1,
      "description": "The purchase order id (po_id, from ordoro_list_purchase_orders)."
    }
  },
  "required": [
    "po_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ordoro_list_return_orders(search, status, sort, limit, offset)

List return orders (RMAs) with reference id, status, original order, lines and return label info. Ordoro API: GET /v3/return_order.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Free-text search.",
      "type": "string"
    },
    "status": {
      "description": "Return order status filter (e.g. all).",
      "type": "string"
    },
    "sort": {
      "description": "Sort: (-)reference_id, (-)status, (-)warehouse_name, (-)created_date, (-)updated_date.",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (default 10, max 100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Number of results to skip (pagination).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ordoro_add_order_comment(order_number, comment)

WRITE: add an internal comment to an order (visible to the team in Ordoro, not sent to the customer). Each call adds a new comment. Ordoro API: POST /v3/order/{order_number}/comment.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    },
    "comment": {
      "type": "string",
      "minLength": 1,
      "maxLength": 5000,
      "description": "The comment text."
    }
  },
  "required": [
    "order_number",
    "comment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡ordoro_add_order_tag(order_number, tag_id)

WRITE: apply an existing order tag (by id, from ordoro_list_order_tags) to an order, for example to put it on hold or route it. Returns the order's tags. Ordoro API: POST /v3/order/{order_number}/tag/{tag_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    },
    "tag_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "The tag id (from ordoro_list_order_tags)."
    }
  },
  "required": [
    "order_number",
    "tag_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ordoro_remove_order_tag(order_number, tag_id)

WRITE: remove a tag (by id) from an order. The tag itself stays defined. Ordoro API: DELETE /v3/order/{order_number}/tag/{tag_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "type": "string",
      "minLength": 1,
      "description": "The Ordoro order number, including its sales-channel prefix (for example \"1-1001\"), from ordoro_list_orders."
    },
    "tag_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "The tag id (from ordoro_list_order_tags)."
    }
  },
  "required": [
    "order_number",
    "tag_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded18 tools