Read Inventory Planner forecasts, replenishment and purchase orders; create draft purchase orders.
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: create a purchase order with status "draft" in Inventory Planner (POST /api/v1/purchase-orders). A draft is only a plan inside Inventory Planner: it is NOT sent to the vendor, NOT saved to any connected system and moves no stock or money. Purchase orders only (no transfers or assembly orders). Each line item is a variant id plus the quantity to order (replenishment).
The vendor name, as it appears in Inventory Planner.
The destination warehouse, as it appears in Inventory Planner.
Your PO reference.
Expected delivery date, e.g. 2026-11-15 or 2026-11-15T10:00:00+01:00.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: create a purchase order with status "draft" in Inventory Planner (POST /api/v1/purchase-orders). A draft is only a plan inside Inventory Planner: it is NOT sent to the vendor, NOT saved to any connected system and moves no stock or money. Purchase orders only (no transfers or assembly orders). Each line item is a variant id plus the quantity to order (replenishment).
| Argument | Type | Description |
|---|---|---|
| items* | array | |
| notes | string | |
| vendor* | string | The vendor name, as it appears in Inventory Planner. |
| currency | string | |
| reference | string | Your PO reference. |
| warehouse* | string | The destination warehouse, as it appears in Inventory Planner. |
| expected_date | string | Expected delivery date, e.g. 2026-11-15 or 2026-11-15T10:00:00+01:00. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"vendor",
"warehouse",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"quantity"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Variant id."
},
"quantity": {
"type": "number",
"maximum": 10000000,
"description": "Quantity to order.",
"exclusiveMinimum": 0
}
}
},
"maxItems": 500,
"minItems": 1
},
"notes": {
"type": "string",
"maxLength": 2000
},
"vendor": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The vendor name, as it appears in Inventory Planner."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"reference": {
"type": "string",
"maxLength": 200,
"description": "Your PO reference."
},
"warehouse": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The destination warehouse, as it appears in Inventory Planner."
},
"expected_date": {
"type": "string",
"maxLength": 40,
"description": "Expected delivery date, e.g. 2026-11-15 or 2026-11-15T10:00:00+01:00."
}
}
}One purchase order, transfer or assembly order by id, with its header fields (reference, status, vendor, warehouse, dates, addresses, totals, notes) and line items. GET /api/v1/purchase-orders/{id}.
| Argument | Type | Description |
|---|---|---|
| fields | string | |
| purchase_order_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_order_id"
],
"properties": {
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_.,-]+$",
"maxLength": 2000
},
"purchase_order_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}Whether and how a purchase order was saved to connected systems (ERP, accounting): per connection the status (success, error, run, queued), save_po flag and the PO's id and reference there. Read-only. GET /api/v1/purchase-orders/{id}/connections.
| Argument | Type | Description |
|---|---|---|
| purchase_order_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_order_id"
],
"properties": {
"purchase_order_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}The stock updates a purchase order has computed: per warehouse (wh) the items with stock_before, delta and error. for_destination false reads the source warehouse of a transfer. Read-only: nothing is pushed. GET /api/v1/purchase-orders/{id}/stock-update.
| Argument | Type | Description |
|---|---|---|
| for_destination | boolean | true (default) = the destination warehouse; false = the source warehouse (transfers only). |
| purchase_order_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_order_id"
],
"properties": {
"for_destination": {
"type": "boolean",
"description": "true (default) = the destination warehouse; false = the source warehouse (transfers only)."
},
"purchase_order_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}One variant by its Inventory Planner id, with the metrics named in `fields` (default: id,sku,lead_time,review_period,replenishment,oos,under_value). GET /api/v1/variants/{id}.
| Argument | Type | Description |
|---|---|---|
| fields | string | |
| variant_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"variant_id"
],
"properties": {
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_.,-]+$",
"maxLength": 2000
},
"variant_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}One vendor's terms for a variant: cost_price, landing_cost_price, vendor_reference, vendor_name, vendor_packaging (MOQ), uom_ordering. vendor_id is the vendor name in lowercase. GET /api/v1/variants/{id}/vendors/{vendor_id}.
| Argument | Type | Description |
|---|---|---|
| vendor_id* | string | The vendor name in lowercase, as listed by inventoryplanner_list_variant_vendors. |
| variant_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"variant_id",
"vendor_id"
],
"properties": {
"vendor_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The vendor name in lowercase, as listed by inventoryplanner_list_variant_vendors."
},
"variant_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}The line items of a purchase order: variant id, sku, title, ordered quantity (replenishment), received quantity and received_history, cost price, tax, discount and stock snapshots. GET /api/v1/purchase-orders/{id}/items.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, counting from 0 (default 0). Pass the previous reply's next_page. |
| limit | integer | Results per page, 1-1000 (default 25). |
| fields | string | |
| purchase_order_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_order_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 25).",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_.,-]+$",
"maxLength": 2000
},
"purchase_order_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}List stock orders: purchase orders, transfers and assembly orders (the `type` field is "po"/empty, "transfer" or "assembly"). Filter with `filters`, e.g. {"status": "OPEN", "vendor": "Acme", "expected_date_lt": "2026-11-01"}. Default fields: id,reference,status,type,vendor,warehouse,source,created_date,expected_date,received_date,currency,total,total_ordered,total_received. GET /api/v1/purchase-orders.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, counting from 0 (default 0). Pass the previous reply's next_page. |
| sort | object | Sort by one field, e.g. {"field": "under_value", "direction": "desc"}. |
| limit | integer | Results per page, 1-1000 (default 25). |
| fields | string | |
| filters | object | Filters, as {"<field>": value} or {"<field>_<operator>": value}. Operators: eq (default), eqi (case-insensitive), ne, gt, gte, lt, lte, range ("5-10"), match (regex), in (comma-separated). Example: {"replenishment_gt": 0, "sku_match": "^TSHIRT"}. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page."
},
"sort": {
"type": "object",
"required": [
"field"
],
"properties": {
"field": {
"type": "string",
"pattern": "^[A-Za-z0-9_]{1,80}$"
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "asc"
}
},
"description": "Sort by one field, e.g. {\"field\": \"under_value\", \"direction\": \"desc\"}."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 25).",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_.,-]+$",
"maxLength": 2000
},
"filters": {
"type": "object",
"description": "Filters, as {\"<field>\": value} or {\"<field>_<operator>\": value}. Operators: eq (default), eqi (case-insensitive), ne, gt, gte, lt, lte, range (\"5-10\"), match (regex), in (comma-separated). Example: {\"replenishment_gt\": 0, \"sku_match\": \"^TSHIRT\"}.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_]{1,80}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
}
}The vendors a variant can be ordered from, with cost_price, landing_cost_price, vendor_reference (vendor SKU), vendor_name, vendor_packaging (MOQ) and uom_ordering. GET /api/v1/variants/{id}/vendors.
| Argument | Type | Description |
|---|---|---|
| variant_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"variant_id"
],
"properties": {
"variant_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}List product variants with Inventory Planner's computed metrics (forecast, replenishment, days to sell out, lost revenue, lead time, review period and ~200 more). Always pass `fields` to pick the metrics you need (default: id,sku,lead_time,review_period,replenishment,oos,under_value; oos = forecasted days to sell out, under_value = forecasted lost revenue, replenishment = recommended order quantity). Use `filters` and `sort` for questions like "which SKUs need reordering". Removed variants are excluded unless include_removed. GET /api/v1/variants.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, counting from 0 (default 0). Pass the previous reply's next_page. |
| sort | object | Sort by one field, e.g. {"field": "under_value", "direction": "desc"}. |
| limit | integer | Results per page, 1-1000 (default 25). |
| fields | string | |
| filters | object | Filters, as {"<field>": value} or {"<field>_<operator>": value}. Operators: eq (default), eqi (case-insensitive), ne, gt, gte, lt, lte, range ("5-10"), match (regex), in (comma-separated). Example: {"replenishment_gt": 0, "sku_match": "^TSHIRT"}. |
| include_removed | boolean |
WRITE: change the reference, expected date or notes of a purchase order that is still a draft (PATCH /api/v1/purchase-orders/{id}). The order is read first and refused unless its status is "draft". It never changes the status, sends the order, or touches line items or received quantities.
| Argument | Type | Description |
|---|---|---|
| notes | string | |
| reference | string | |
| expected_date | string | Expected delivery date, e.g. 2026-11-15 or 2026-11-15T10:00:00+01:00. |
| purchase_order_id* | string | Inventory Planner id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchase_order_id"
],
"properties": {
"notes": {
"type": "string",
"maxLength": 2000
},
"reference": {
"type": "string",
"maxLength": 200
},
"expected_date": {
"type": "string",
"maxLength": 40,
"description": "Expected delivery date, e.g. 2026-11-15 or 2026-11-15T10:00:00+01:00."
},
"purchase_order_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Inventory Planner id."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page."
},
"sort": {
"type": "object",
"required": [
"field"
],
"properties": {
"field": {
"type": "string",
"pattern": "^[A-Za-z0-9_]{1,80}$"
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"default": "asc"
}
},
"description": "Sort by one field, e.g. {\"field\": \"under_value\", \"direction\": \"desc\"}."
},
"limit": {
"type": "integer",
"maximum": 1000,
"description": "Results per page, 1-1000 (default 25).",
"exclusiveMinimum": 0
},
"fields": {
"type": "string",
"pattern": "^[A-Za-z0-9_.,-]+$",
"maxLength": 2000
},
"filters": {
"type": "object",
"description": "Filters, as {\"<field>\": value} or {\"<field>_<operator>\": value}. Operators: eq (default), eqi (case-insensitive), ne, gt, gte, lt, lte, range (\"5-10\"), match (regex), in (comma-separated). Example: {\"replenishment_gt\": 0, \"sku_match\": \"^TSHIRT\"}.",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_]{1,80}$"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"include_removed": {
"type": "boolean"
}
}
}