Ordoro MCP by usefulapi
Read Ordoro orders, products, shipments, suppliers and purchase orders; tag and comment on orders.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (18)
🟢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
Evidence