Read Linnworks inventory, stock and orders; set stock levels and add order notes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add a note to an order (open or processed). Internal notes are visible only inside Linnworks; external notes may be passed to the sales channel. Adds a new note each call (not idempotent). POST /api/Orders/AddOrdersNote.
The note text.
The order id (OrderId / pkOrderId).
Internal note (default true).
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: add a note to an order (open or processed). Internal notes are visible only inside Linnworks; external notes may be passed to the sales channel. Adds a new note each call (not idempotent). POST /api/Orders/AddOrdersNote.
| Argument | Type | Description |
|---|---|---|
| note* | string | The note text. |
| internal | boolean | Internal note (default true). |
| order_id* | string | The order id (OrderId / pkOrderId). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"note"
],
"properties": {
"note": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The note text."
},
"internal": {
"type": "boolean",
"description": "Internal note (default true)."
},
"order_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The order id (OrderId / pkOrderId)."
}
}
}Find one order, open or processed, by its Linnworks order number (the integer shown in the order book). Returns an empty order when none matches. GET /api/Orders/GetOrderDetailsByNumOrderId.
| Argument | Type | Description |
|---|---|---|
| order_number* | integer | The numeric Linnworks order number (NumOrderId). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_number"
],
"properties": {
"order_number": {
"type": "integer",
"maximum": 2147483647,
"description": "The numeric Linnworks order number (NumOrderId).",
"exclusiveMinimum": 0
}
}
}Find orders by their channel reference number (for example an Amazon or eBay order number) or secondary reference. Returns at most 50 orders. GET /api/Orders/GetOrderDetailsByReferenceId.
| Argument | Type | Description |
|---|---|---|
| reference* | string | The reference number or secondary reference to look for. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"reference"
],
"properties": {
"reference": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The reference number or secondary reference to look for."
}
}
}One product by its stock item id: SKU (ItemNumber), title, barcode, quantities (in stock, in orders, due, available), prices, tax rate, category, dimensions and weight. GET /api/Inventory/GetInventoryItemById.
| Argument | Type | Description |
|---|---|---|
| stock_item_id* | string | The stock item id (StockItemId) from linnworks_search_inventory. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"stock_item_id"
],
"properties": {
"stock_item_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The stock item id (StockItemId) from linnworks_search_inventory."
}
}
}Full details of open orders by their ids (up to 50): general info, shipping, customer, totals, items, folders, notes, identifiers, extended properties and bin racks. Pass include to load only some of the optional parts. Only works for open orders. POST /api/OpenOrders/GetOpenOrdersDetails.
| Argument | Type | Description |
|---|---|---|
| include | array | Limit the optional parts loaded (default: all of them). |
| order_ids* | array | Order ids (OrderId, a GUID) from linnworks_list_open_orders. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_ids"
],
"properties": {
"include": {
"type": "array",
"items": {
"enum": [
"FOLDER",
"NOTES",
"IDENTIFIERS",
"EXTENDEDPROPERTIES",
"BINRACKS"
],
"type": "string"
},
"maxItems": 5,
"description": "Limit the optional parts loaded (default: all of them)."
},
"order_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "A Linnworks id (GUID)."
},
"maxItems": 50,
"minItems": 1,
"description": "Order ids (OrderId, a GUID) from linnworks_list_open_orders."
}
}
}One order, open or processed, by its order id (a GUID): general info, shipping, customer, totals, items, notes. GET /api/Orders/GetOrderById.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The order id (OrderId / pkOrderId). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The order id (OrderId / pkOrderId)."
}
}
}The notes on an order (text, internal or external, who wrote them and when). GET /api/Orders/GetOrderNotes.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | The order id (OrderId / pkOrderId). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The order id (OrderId / pkOrderId)."
}
}
}The stock-level change history of one product (date, new level, change quantity, value, note), newest data first as Linnworks returns it; optionally for a single location, otherwise combined. GET /api/Stock/GetItemChangesHistory.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). |
| location_id | string | Limit to one stock location (default: all locations combined). |
| stock_item_id* | string | The stock item id (StockItemId). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"stock_item_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"location_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "Limit to one stock location (default: all locations combined)."
},
"stock_item_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The stock item id (StockItemId)."
}
}
}The stock level of one product at every location: in stock, in open orders, due on purchase orders, available, minimum level, unit cost and when it last changed. GET /api/Stock/GetStockLevel.
| Argument | Type | Description |
|---|---|---|
| stock_item_id* | string | The stock item id (StockItemId) from linnworks_search_inventory. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"stock_item_id"
],
"properties": {
"stock_item_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The stock item id (StockItemId) from linnworks_search_inventory."
}
}
}List the product categories (id and name). GET /api/Inventory/GetCategories.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Page through the open (not yet processed) orders of a fulfilment location, with general info (status, reference, source, received date), shipping, customer, totals and items. Narrow with text filters (reference, customer, SKU ...) and a received-date range. POST /api/Orders/GetOpenOrders.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| per_page | integer | Results per page, 1-100 (default 25). |
| location_id | string | Fulfilment location id from linnworks_list_stock_locations (default: the account's default location). |
| received_to | string | Only orders received on or before this date. |
| text_filters | array | All filters must match. |
| received_from | string | Only orders received on or after this date. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"location_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "Fulfilment location id from linnworks_list_stock_locations (default: the account's default location)."
},
"received_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only orders received on or before this date."
},
"text_filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Text to match."
},
"field": {
"enum": [
"GENERAL_INFO_ORDER_ID",
"GENERAL_INFO_REFERENCE_NUMBER",
"GENERAL_INFO_EXTERNAL_REFERENCE_NUMBER",
"SHIPPING_INFORMATION_TRACKING_NUMBER",
"CUSTOMER_ADDRESS_FULL_NAME",
"CUSTOMER_ADDRESS_COMPANY",
"CUSTOMER_ADDRESS_POSTCODE",
"CUSTOMER_ADDRESS_TOWN",
"CUSTOMER_EMAIL",
"ITEMS_SKU",
"ITEMS_TITLE"
],
"type": "string",
"description": "Order field to match."
},
"match": {
"enum": [
"Equal",
"Contains",
"StartWith",
"EndsWith"
],
"type": "string",
"description": "How to match (default Contains)."
}
}
},
"maxItems": 10,
"description": "All filters must match."
},
"received_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Only orders received on or after this date."
}
}
}List the postal (shipping) services with their courier vendor, tracking and weight requirements and linked channels. GET /api/PostalServices/GetPostalServices.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the stock locations (warehouses, fulfilment centres) of the Linnworks account: id, name, address, whether it is a fulfilment centre. Use the ids as location_id in other tools. GET /api/Inventory/GetStockLocations.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the suppliers: id, name, contact, address, email, web page and currency. GET /api/Inventory/GetSuppliers.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Search the product catalogue by SKU, title or barcode and return the items with their stock levels per location (and optionally pricing, suppliers, images, extended properties). An empty keyword lists items. POST /api/Stock/GetStockItemsFull.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| include | array | Extra data to load per item (default: StockLevels). |
| keyword | string | Text to search for (SKU, title or barcode). Empty = list items. |
| per_page | integer | Results per page, 1-100 (default 25). |
| search_in | array | Fields to search (default: SKU, Title and Barcode). |
| include_composite_parents | boolean | Include composite (bundle) parent items (default true). |
| include_variation_parents | boolean | Include variation parent items (default true). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"include": {
"type": "array",
"items": {
"enum": [
"StockLevels",
"Pricing",
"Supplier",
"ShippingInformation",
"ChannelTitle",
"ChannelDescription",
"ChannelPrice",
"ExtendedProperties",
"Images"
],
"type": "string"
},
"maxItems": 9,
"description": "Extra data to load per item (default: StockLevels)."
},
"keyword": {
"type": "string",
"maxLength": 200,
"description": "Text to search for (SKU, title or barcode). Empty = list items."
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (default 25).",
"exclusiveMinimum": 0
},
"search_in": {
"type": "array",
"items": {
"enum": [
"SKU",
"Title",
"Barcode"
],
"type": "string"
},
"maxItems": 3,
"description": "Fields to search (default: SKU, Title and Barcode)."
},
"include_composite_parents": {
"type": "boolean",
"description": "Include composite (bundle) parent items (default true)."
},
"include_variation_parents": {
"type": "boolean",
"description": "Include variation parent items (default true)."
}
}
}Search processed (despatched) orders. Search by order number, tracking number, channel reference, customer name, email, postcode, address, SKU, source or sub-source, optionally within a date range (at most 3 months; a non-exact search covers only the last 3 months). POST /api/ProcessedOrders/SearchProcessedOrdersPaged.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 (default 1). Pass the previous reply's next_page. |
| date_to | string | End of the range. |
| per_page | integer | Results per page, 1-200 (default 25). |
| date_from | string | Start of the range (needs date_type other than ALLDATES). |
| date_type | string | Which date the range applies to (default ALLDATES = no range). |
| exact_match | boolean | Exact match (default false: partial match over the last 3 months). |
| search_term* | string | The text to search for. |
| search_field* | string |
WRITE: set the stock level of one product (by SKU) at one location to an absolute quantity. This overwrites the current level and flows to the sales channels the item is listed on. Check the current level with linnworks_get_stock_levels first. POST /api/Stock/SetStockLevel.
| Argument | Type | Description |
|---|---|---|
| sku* | string | The product SKU (ItemNumber). |
| level* | integer | The new stock level (units, 0 or more). |
| location_id* | string | The stock location id from linnworks_list_stock_locations. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sku",
"location_id",
"level"
],
"properties": {
"sku": {
"type": "string",
"maxLength": 150,
"minLength": 1,
"description": "The product SKU (ItemNumber)."
},
"level": {
"type": "integer",
"maximum": 10000000,
"minimum": 0,
"description": "The new stock level (units, 0 or more)."
},
"location_id": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The stock location id from linnworks_list_stock_locations."
}
}
}| What to search by: nOrderId (order number), o.PostalTrackingNumber, ReferenceNum, CustomerName, o.cEmailAddress, o.cPostCode, ShippingAddress, SKU (SKU or barcode), Source, SubSource. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"search_field",
"search_term"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
"exclusiveMinimum": 0
},
"date_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "End of the range."
},
"per_page": {
"type": "integer",
"maximum": 200,
"description": "Results per page, 1-200 (default 25).",
"exclusiveMinimum": 0
},
"date_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{1,3})?)?(Z|[+-]\\d{2}:\\d{2}))?$",
"description": "Start of the range (needs date_type other than ALLDATES)."
},
"date_type": {
"enum": [
"ALLDATES",
"RECEIVED",
"PROCESSED",
"PAYMENTRECEIVED",
"CANCELLED"
],
"type": "string",
"description": "Which date the range applies to (default ALLDATES = no range)."
},
"exact_match": {
"type": "boolean",
"description": "Exact match (default false: partial match over the last 3 months)."
},
"search_term": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The text to search for."
},
"search_field": {
"enum": [
"nOrderId",
"o.PostalTrackingNumber",
"ReferenceNum",
"CustomerName",
"o.cEmailAddress",
"o.cPostCode",
"ShippingAddress",
"SKU",
"Source",
"SubSource"
],
"type": "string",
"description": "What to search by: nOrderId (order number), o.PostalTrackingNumber, ReferenceNum, CustomerName, o.cEmailAddress, o.cPostCode, ShippingAddress, SKU (SKU or barcode), Source, SubSource."
}
}
}