Skip to main content
Version: v1.0.0

Tool Reference

The Pharus MCP server exposes 158 tools covering the full data-plane API. This page is generated from the same definitions the server uses, so it always matches the live tool surface.

Legend: ✏️ write · 🔴 destructive (MCP hosts ask for confirmation) · unmarked = read-only. Arguments marked * are required. Every tool also accepts an optional orgId — only relevant for tokens not bound to an organization (today all PATs are org-bound, so you can ignore it).

Locations

check_location_in_use

Check whether a location is referenced by POs, WOs, SOs, or inventory ledgers (per-domain counts). Use before attempting delete_location.

Arguments: id* (string)

create_location ✏️

Create a warehouse/site location. Only name is required (must be unique in the org); address fields are optional. New locations are active by default.

Arguments: name* (string), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), notes (string,null)

delete_location 🔴

Permanently delete a location. Fails with 409 in_use if any PO, WO, SO, or inventory ledger references it — call check_location_in_use first, and prefer archiving via update_location { isActive: false } for routine cleanup.

Arguments: id* (string)

list_locations

List all locations in the organization (bounded, no pagination). Includes inactive (archived) locations — check isActive.

Arguments: none

update_location ✏️

Update a location's fields. Archiving and reactivating are done here too: pass isActive: false to archive, true to reactivate (there is no separate endpoint).

Arguments: id* (string), name (string), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), notes (string,null), sortOrder (integer), isActive (boolean)

Vendors

bulk_import_vendors ✏️

Create many vendors in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

create_vendor ✏️

Create a vendor (materials supplier). Vendors are referenced by purchase orders.

Arguments: name* (string), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), term (string,null), qboId (string,null), notes (string,null)

delete_vendor 🔴

Permanently delete a vendor. Fails with 409 in_use when purchase orders reference it.

Arguments: id* (string)

get_vendor

Get full detail for one vendor by ID.

Arguments: id* (string)

list_vendors

List vendors in the organization.

Arguments: isActive (string)

update_vendor ✏️

Update a vendor's fields (partial update — only send what changes).

Arguments: id* (string), name (string), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), term (string,null), qboId (string,null), notes (string,null), isActive (boolean)

Materials

bulk_import_materials ✏️

Create many materials in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

check_material_type_in_use

Check whether any materials still use this material type (call before delete).

Arguments: id* (string)

create_material ✏️

Create a raw material. Materials are consumed by work orders (via BOMs) and tracked in the materials inventory ledger.

Arguments: code* (string), name* (string), typeId* (string), notes (string,null)

create_material_type ✏️

Create a material type (org-defined category used to classify materials).

Arguments: name* (string)

delete_material 🔴

Permanently delete a material. Fails with 409 in_use when BOMs, POs, or ledger entries reference it.

Arguments: id* (string)

delete_material_type 🔴

Delete a material type. Fails with 409 in_use while materials still use it — check with check_material_type_in_use first.

Arguments: id* (string)

get_material

Get full detail for one material by ID.

Arguments: id* (string)

list_material_types

List the org's material types.

Arguments: none

list_materials

List materials in the organization, with filtering/pagination via query args.

Arguments: active (string), type (string), q (string)

update_material ✏️

Update a material's fields (partial update — only send what changes).

Arguments: id* (string), code (string), name (string), typeId (string), notes (string,null), isActive (boolean)

update_material_type ✏️

Rename/update a material type.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

Products (SKUs)

bulk_import_skus ✏️

Create many SKUs in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

check_sku_type_in_use

Check whether any SKUs still use this SKU type (call before delete).

Arguments: id* (string)

create_sku ✏️

Create a SKU (finished-goods product). SKUs are produced by work orders, sold on sales orders, and tracked in the finished-goods inventory ledger.

Arguments: code* (string), name* (string), typeId* (string), itemsPerUnit (integer), ozPerItem (number,null), qboId (string,null), notes (string,null)

create_sku_type ✏️

Create a SKU type (org-defined category used to classify SKUs).

Arguments: name* (string)

delete_sku 🔴

Permanently delete a SKU. Fails with 409 in_use when BOMs, orders, or ledger entries reference it.

Arguments: id* (string)

delete_sku_type 🔴

Delete a SKU type. Fails with 409 in_use while SKUs still use it — check with check_sku_type_in_use first.

Arguments: id* (string)

get_sku

Get full detail for one SKU by ID.

Arguments: id* (string)

list_sku_types

List the org's SKU types.

Arguments: none

list_skus

List SKUs in the organization, with filtering/pagination via query args.

Arguments: active (string), type (string), itemsPerUnitMin (string), itemsPerUnitMax (string), ozPerItemMin (string), ozPerItemMax (string), q (string)

update_sku ✏️

Update a SKU's fields (partial update — only send what changes).

Arguments: id* (string), code (string), name (string), typeId (string), itemsPerUnit (integer), ozPerItem (number,null), qboId (string,null), notes (string,null), isActive (boolean)

update_sku_type ✏️

Rename/update a SKU type.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

Bills of Materials

create_bom ✏️

Create the bill of materials for a SKU: the list of input materials (or input SKUs) and quantities needed to produce one unit. A SKU has at most one BOM.

Arguments: outputSkuId* (string), items* (array)

delete_bom 🔴

Delete a SKU's BOM. Fails with 409 in_use when work orders depend on it.

Arguments: id* (string)

get_sku_bom

Get the BOM (composition lines) for a SKU. The id argument is the SKU id.

Arguments: id* (string)

list_boms

List the SKUs that have a BOM defined.

Arguments: q (string)

update_bom ✏️

Replace a BOM's composition wholesale — the items array you send becomes the entire new composition (this is not a partial merge).

Arguments: id* (string), outputSkuId* (string), items* (array)

Contacts

add_contact_method ✏️

Add a contact method (email, phone, etc.) to a contact.

Arguments: id* (string), type* (string), value* (string), label (string,null), isPrimary (boolean)

create_contact ✏️

Create a standalone contact (person). To attach it to a vendor/customer/broker, link it afterwards with link_contact — or use find_or_create_contact to do both in one step.

Arguments: firstName* (string), lastName (string,null), title (string,null), notes (string,null), displayName (string)

delete_contact 🔴

Permanently delete a contact, including its links and contact methods.

Arguments: id* (string)

delete_contact_method 🔴

Delete a contact method. The id is the method id, not the contact id.

Arguments: id* (string)

find_or_create_contact ✏️

Find an existing contact by identity or create it, and link it to an entity (vendor/customer/broker) in one call. Prefer this over create_contact + link_contact when attaching people to entities.

Arguments: firstName* (string), lastName (string,null), email* (string), entityType* (string), entityId* (string), role (string,null)

get_contact

Get one contact with its details.

Arguments: id* (string)

Link an existing contact to an entity (vendor/customer/broker) with a role.

Arguments: id* (string), entityType* (string), entityId* (string), role (string,null), notes (string,null), isPrimary (boolean)

list_contact_methods

List a contact's contact methods.

Arguments: id* (string)

list_contacts

List contacts in the organization.

Arguments: none

list_contacts_linked_to

List the contacts linked to a given entity (vendor/customer/broker), specified via query args.

Arguments: entityType* (string), entityId* (string)

Remove a contact-entity link (the contact itself is kept). The id is the link id, not the contact id.

Arguments: id* (string)

update_contact ✏️

Update a contact's fields (partial update).

Arguments: id* (string), firstName (string), lastName (string,null), title (string,null), notes (string,null), displayName (string), isActive (boolean)

Update a contact-entity link (e.g. change the role). The id is the link id.

Arguments: id* (string), role (string,null), notes (string,null), isPrimary (boolean), isActive (boolean)

update_contact_method ✏️

Update a contact method. The id is the method id, not the contact id.

Arguments: id* (string), type (string), value (string), label (string,null), isPrimary (boolean), isActive (boolean)

Customers

bulk_import_customers ✏️

Create many customers in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

check_broker_in_use

Check whether any customers still reference this broker (call before delete).

Arguments: id* (string)

check_customer_segment_in_use

Check whether any customers still use this segment (call before delete).

Arguments: id* (string)

check_customer_type_in_use

Check whether any customers still use this type (call before delete).

Arguments: id* (string)

create_broker ✏️

Create a broker (sales intermediary that can be attached to customers).

Arguments: name* (string)

create_customer ✏️

Create a customer. Customers are referenced by sales orders and can carry a segment, type, and broker.

Arguments: name* (string), typeId* (string), segmentId (string,null), brokerId (string,null), brokerFeePercent (number,null), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), parentId (string,null), qboId (string,null), notes (string,null)

create_customer_segment ✏️

Create a customer segment (org-defined grouping, e.g. retail/wholesale).

Arguments: name* (string)

create_customer_type ✏️

Create a customer type (org-defined classification).

Arguments: name* (string)

delete_broker 🔴

Delete a broker. Fails with 409 in_use while customers reference it — check with check_broker_in_use first.

Arguments: id* (string)

delete_customer 🔴

Permanently delete a customer. Fails with 409 in_use when sales orders reference it.

Arguments: id* (string)

delete_customer_segment 🔴

Delete a customer segment. Fails with 409 in_use while customers use it — check with check_customer_segment_in_use first.

Arguments: id* (string)

delete_customer_type 🔴

Delete a customer type. Fails with 409 in_use while customers use it — check with check_customer_type_in_use first.

Arguments: id* (string)

get_customer

Get full detail for one customer by ID.

Arguments: id* (string)

list_brokers

List the org's brokers.

Arguments: none

list_customer_segments

List the org's customer segments.

Arguments: none

list_customer_types

List the org's customer types.

Arguments: none

list_customers

List customers, with filtering/pagination via query args.

Arguments: active (string), type (string), segment (string), broker (string), parentCustomer (string), q (string)

update_broker ✏️

Update a broker's fields.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

update_customer ✏️

Update a customer's fields (partial update — only send what changes).

Arguments: id* (string), name (string), typeId (string), segmentId (string,null), brokerId (string,null), brokerFeePercent (number,null), address (string,null), city (string,null), state (string,null), country (string,null), zipCode (string,null), parentId (string,null), qboId (string,null), notes (string,null), isActive (boolean)

update_customer_segment ✏️

Rename/update a customer segment.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

update_customer_type ✏️

Rename/update a customer type.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

Materials Inventory

adjust_materials_inventory ✏️

Record a manual stock adjustment (count correction, shrinkage, found stock) for a material at a location. Use transfers for moves and disposals for write-offs — not adjustments.

Arguments: materialId* (string), locationId* (string), quantity* (number), notes (string,null), eventDate (string)

complete_materials_transfer ✏️

Mark an in-transit materials transfer as received at the destination. ref is the TFR-MI-xxx code returned by create_materials_transfer.

Arguments: ref* (string), eventDate (string), notes (string,null)

create_materials_transfer ✏️

Start moving material stock between locations. Creates an in-transit TRANSFER entry and returns an auto-generated ref code (TFR-MI-xxx) — keep it: completing the transfer requires that ref.

Arguments: materialId* (string), sourceLocationId* (string), destinationLocationId* (string), quantity* (number), eventDate (string), notes (string,null)

dispose_materials_inventory 🔴

Write off material stock (damage, expiry, loss). This permanently removes quantity from stock via a DISPOSE ledger entry.

Arguments: materialId* (string), locationId* (string), quantity* (number), notes (string,null), eventDate (string)

get_materials_inventory_summary

Current materials stock by material and location, derived from the ledger. This is the go-to tool for 'how much of X do we have (and where)'.

Arguments: materialId (string), locationId (string)

get_materials_ledger_entry

Get one materials ledger entry by ID.

Arguments: id* (string)

list_materials_ledger_entries

List materials inventory ledger entries (append-only event log: RECEIVE, ORDER, TRANSFER, ADJUST, DISPOSE). ref holds the PO number for PO events and the TFR-MI-xxx code for transfers.

Arguments: materialId (string), locationId (string), eventType (string), ref (string), dateFrom (string), dateTo (string)

Finished-Goods Inventory

adjust_finished_goods_inventory ✏️

Record a manual stock adjustment (count correction, shrinkage, found stock) for a SKU at a location. Use transfers for moves and disposals for write-offs — not adjustments.

Arguments: skuId* (string), locationId* (string), quantity* (number), notes (string,null), eventDate (string)

complete_finished_goods_transfer ✏️

Mark an in-transit finished-goods transfer as received at the destination. ref is the TFR-FG-xxx code returned by create_finished_goods_transfer.

Arguments: ref* (string), eventDate (string), notes (string,null)

create_finished_goods_transfer ✏️

Start moving SKU stock between locations. Creates an in-transit TRANSFER entry and returns an auto-generated ref code (TFR-FG-xxx) — keep it: completing the transfer requires that ref.

Arguments: skuId* (string), sourceLocationId* (string), destinationLocationId* (string), quantity* (number), eventDate (string), notes (string,null)

dispose_finished_goods_inventory 🔴

Write off finished-goods stock (damage, expiry, loss). This permanently removes quantity from stock via a DISPOSE ledger entry.

Arguments: skuId* (string), locationId* (string), quantity* (number), notes (string,null), eventDate (string)

get_finished_goods_inventory_summary

Current finished-goods stock by SKU and location, derived from the ledger. This is the go-to tool for 'how many units of SKU X do we have (and where)'.

Arguments: skuId (string), locationId (string)

get_finished_goods_ledger_entry

Get one finished-goods ledger entry by ID.

Arguments: id* (string)

list_finished_goods_ledger_entries

List finished-goods inventory ledger entries (append-only event log: RECEIVE, TRANSFER, ADJUST, DISPOSE). ref holds the TFR-FG-xxx code for transfers.

Arguments: skuId (string), locationId (string), eventType (string), ref (string), dateFrom (string), dateTo (string)

Purchase Orders

add_purchase_order_item ✏️

Add a line item (material + quantity + price) to an existing PO.

Arguments: id* (string), materialId (string,null), skuId (string,null), quantity* (number), unitCost (number)

bulk_import_purchase_orders ✏️

Create many POs in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

create_purchase_order ✏️

Create a purchase order against a vendor. Items can be included or added afterwards with add_purchase_order_item. Ordering writes ORDER entries to the materials ledger (ref = PO number).

Arguments: vendorId* (string), targetType* (string), status* (string), shipToLocationId (string,null), placedAt (string), shipDate (string,null), expectedDeliveryDate (string,null), shippingCosts (number), setupCosts (number), otherCosts (number), notes (string,null), items* (array)

create_purchase_order_receipt ✏️

Record goods received against a PO (full or partial). Writes RECEIVE entries to the materials inventory ledger with ref = the PO number, increasing stock at the receiving location.

Arguments: id* (string), receiptDate (string), notes (string,null), items* (array)

delete_purchase_order 🔴

Permanently delete a purchase order and its items/receipts.

Arguments: id* (string)

delete_purchase_order_receipt 🔴

Delete a PO receipt, reversing its inventory effect. The id is the receipt id.

Arguments: id* (string)

get_purchase_order

Get one purchase order with header fields and totals.

Arguments: id* (string)

get_purchase_order_receipt

Get one PO receipt by its own id (not the PO id).

Arguments: id* (string)

list_items_across_purchase_orders

List PO line items across all POs (filterable via query args) — useful for questions like 'all open lines for material X'.

Arguments: none

list_purchase_order_items

List the line items of one PO.

Arguments: id* (string)

list_purchase_order_receipts

List the receipts recorded against one PO.

Arguments: id* (string)

list_purchase_order_status_types

List the org's valid PO status values (use before setting a PO status).

Arguments: none

list_purchase_orders

List purchase orders, with filtering/pagination via query args.

Arguments: none

remove_purchase_order_item 🔴

Remove a line item from a PO. The id is the item id, not the PO id.

Arguments: id* (string)

update_purchase_order ✏️

Update a PO's header fields, including its status. Use list_purchase_order_status_types for valid status values. Per-status lifecycle dates auto-stamp when the status changes and can also be set directly (YYYY-MM-DD): planningAt, placedAt, inTransitAt, partialAt, receivedAt, paidAt, cancelledAt. Dates must stay in lifecycle order or the call is rejected.

Arguments: id* (string), vendorId (string), targetType (string), status (string), shipToLocationId (string,null), placedAt (string), shipDate (string,null), expectedDeliveryDate (string,null), shippingCosts (number), setupCosts (number), otherCosts (number), notes (string,null), planningAt (string,null), inTransitAt (string,null), partialAt (string,null), receivedAt (string,null), paidAt (string,null), cancelledAt (string,null)

update_purchase_order_item ✏️

Update a PO line item. The id is the item id, not the PO id.

Arguments: id* (string), materialId (string,null), skuId (string,null), quantity (number), unitCost (number)

update_purchase_order_receipt ✏️

Update a PO receipt. The id is the receipt id, not the PO id.

Arguments: id* (string), receiptDate (string)

Work Orders

add_work_order_item ✏️

Add a line item (SKU + quantity to produce) to an existing WO.

Arguments: id* (string), skuId* (string), quantity* (integer), conversionCost (number)

bulk_import_work_orders ✏️

Create many WOs in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

create_work_order ✏️

Create a work order (production run). Items specify which SKUs and quantities to produce; materials are consumed per each SKU's BOM.

Arguments: status* (string), workSiteLocationId* (string), orderDate (string), expectedDeliveryDate (string,null), notes (string,null), items* (array)

create_work_order_receipt ✏️

Record production output against a WO (full or partial): adds the produced SKUs to finished-goods inventory and consumes BOM materials.

Arguments: id* (string), receiptDate (string), notes (string,null), items* (array)

delete_work_order 🔴

Permanently delete a work order and its items/receipts.

Arguments: id* (string)

delete_work_order_receipt 🔴

Delete a WO receipt, reversing its inventory effect. The id is the receipt id.

Arguments: id* (string)

get_work_order

Get one work order with header fields and items.

Arguments: id* (string)

get_work_order_receipt

Get one WO receipt by its own id (not the WO id).

Arguments: id* (string)

list_work_order_receipts

List the receipts recorded against one WO.

Arguments: id* (string)

list_work_order_status_types

List the org's valid WO status values (use before setting a WO status).

Arguments: none

list_work_orders

List work orders, with filtering/pagination via query args.

Arguments: none

remove_work_order_item 🔴

Remove a line item from a WO. The id is the item id, not the WO id.

Arguments: id* (string)

update_work_order ✏️

Update a WO's header fields, including its status. Use list_work_order_status_types for valid status values. Per-status lifecycle dates auto-stamp when the status changes and can also be set directly (YYYY-MM-DD): placedAt (the Placed/order date), draftAt, enteredAt, productionStartedAt, inTransitAt, partialAt, receivedAt, completedAt, cancelledAt. Dates must stay in lifecycle order or the call is rejected.

Arguments: id* (string), status (string), workSiteLocationId (string), orderDate (string), expectedDeliveryDate (string,null), notes (string,null), placedAt (string), draftAt (string,null), enteredAt (string,null), productionStartedAt (string,null), inTransitAt (string,null), partialAt (string,null), receivedAt (string,null), completedAt (string,null), cancelledAt (string,null)

update_work_order_item ✏️

Update a WO line item. The id is the item id, not the WO id.

Arguments: id* (string), quantity (integer), conversionCost (number)

update_work_order_receipt ✏️

Update a WO receipt. The id is the receipt id, not the WO id.

Arguments: id* (string), receiptDate (string)

Production Orders

add_production_order_item ✏️

Add a line item (SKU + quantity to produce) to an existing production order.

Arguments: id* (string), skuId* (string), quantity* (integer), productionCost (number,null)

bulk_import_production_orders ✏️

Create many production orders in one call from an array of rows. Use for initial data loads; the call is atomic (one bad row rolls back all).

Arguments: rows* (array)

create_production_order ✏️

Create a production order (subcontracted manufacturing). Items specify which SKUs and quantities to produce; the raw materials needed are taken from each SKU's BOM (exploded to materials). The per-unit production cost is optional here but required to receive.

Arguments: status* (string), locationId* (string), orderDate (string), expectedDeliveryDate (string,null), notes (string,null), items* (array)

create_production_order_receipt ✏️

Record finished goods received from a production order (full or partial): adds the produced SKUs to finished-goods inventory at a cost of materials + production cost, and consumes the BOM materials. The per-unit production cost must be set on the item first.

Arguments: id* (string), receiptDate (string), notes (string,null), items* (array)

delete_production_order 🔴

Permanently delete a production order and its items/receipts.

Arguments: id* (string)

delete_production_order_receipt 🔴

Delete a production order receipt. The id is the receipt id.

Arguments: id* (string)

get_production_order

Get one production order with header fields, items, and snapshotted material inputs.

Arguments: id* (string)

get_production_order_receipt

Get one production order receipt by its own id (not the order id).

Arguments: id* (string)

list_production_order_receipts

List the receipts recorded against one production order.

Arguments: id* (string)

list_production_order_status_types

List the valid production order status values (use before setting a status).

Arguments: none

list_production_orders

List production orders, with filtering/pagination via query args.

Arguments: none

remove_production_order_item 🔴

Remove a line item from a production order. The id is the item id, not the order id.

Arguments: id* (string)

update_production_order ✏️

Update a production order's header fields, including its status. Use list_production_order_status_types for valid status values. Per-status lifecycle dates auto-stamp when the status changes and can also be set directly (YYYY-MM-DD): placedAt (the Placed/order date), draftAt, enteredAt, productionStartedAt, inTransitAt, partialAt, receivedAt, completedAt, cancelledAt. Dates must stay in lifecycle order or the call is rejected.

Arguments: id* (string), status (string), locationId (string), orderDate (string), expectedDeliveryDate (string,null), notes (string,null), placedAt (string), draftAt (string,null), enteredAt (string,null), productionStartedAt (string,null), inTransitAt (string,null), partialAt (string,null), receivedAt (string,null), completedAt (string,null), cancelledAt (string,null)

update_production_order_item ✏️

Update a production order line item's quantity or per-unit production cost. The id is the item id, not the order id. The production cost can be changed at any time (even after completion); a quantity change is blocked once a receipt exists.

Arguments: id* (string), quantity (integer), productionCost (number,null)

update_production_order_receipt ✏️

Update a production order receipt. The id is the receipt id, not the order id.

Arguments: id* (string), receiptDate (string)

Sales Orders

add_sales_order_item ✏️

Add a line item (SKU + quantity + price) to an existing sales order.

Arguments: id* (string), skuId* (string), quantity* (integer), unitPrice (number)

add_sales_order_timeline_note ✏️

Append a free-text note to a sales order's timeline (audit trail of human/agent commentary and events).

Arguments: id* (string), body* (string), statusAtTime (string)

bulk_import_sales_orders ✏️

Create many SOs in one call from an array of rows. Use for initial data loads; returns per-row results so partial failures are visible.

Arguments: rows* (array)

check_order_channel_in_use

Check whether any sales orders still use this channel (call before delete).

Arguments: id* (string)

create_order_channel ✏️

Create an order channel (where SOs originate, e.g. Shopify, wholesale, direct).

Arguments: name* (string)

create_sales_order ✏️

Create a sales order for a customer. Items can be included or added afterwards with add_sales_order_item.

Arguments: customerId* (string), channelId* (string), status* (string), fulfillmentStatus* (string), fulfillmentLocationId (string,null), brokerId (string,null), brokerFeePercent (number,null), brokerFees (number), fulfillmentCosts (number), freightCosts (number), promoCosts (number), otherCosts (number), mabd* (string), notes (string,null), qboId (string,null), items* (array)

delete_order_channel 🔴

Delete an order channel. Fails with 409 in_use while SOs reference it — check with check_order_channel_in_use first.

Arguments: id* (string)

delete_sales_order 🔴

Permanently delete a sales order and its items/notes.

Arguments: id* (string)

delete_sales_order_timeline_note 🔴

Delete a timeline note. The id is the note id, not the SO id.

Arguments: id* (string)

get_sales_order

Get one sales order with header fields and totals.

Arguments: id* (string)

list_fulfillment_status_types

List the org's valid fulfillment status values.

Arguments: none

list_order_channels

List the org's order channels (including inactive ones).

Arguments: none

list_order_status_types

List the org's valid sales-order status values.

Arguments: none

list_sales_order_items

List the line items of one sales order.

Arguments: id* (string)

list_sales_order_timeline_notes

List the timeline notes of one sales order.

Arguments: id* (string)

list_sales_orders

List sales orders, with filtering/pagination via query args.

Arguments: none

reactivate_order_channel ✏️

Reactivate a previously deactivated order channel.

Arguments: id* (string)

remove_sales_order_item 🔴

Remove a line item from a sales order. The id is the item id, not the SO id.

Arguments: id* (string)

update_order_channel ✏️

Rename/update an order channel; deactivation happens here too.

Arguments: id* (string), name (string), sortOrder (integer), isActive (boolean)

update_sales_order ✏️

Update an SO's header fields, including order/fulfillment status. Use list_order_status_types and list_fulfillment_status_types for valid values. Per-status lifecycle dates auto-stamp when the order status changes and can also be set directly (YYYY-MM-DD): placedAt (the order date), receivedAt, enteredAt, shippedAt, invoicedAt, paidAt, rejectedAt, inDisputeAt, completedAt. Dates must stay in lifecycle order or the call is rejected.

Arguments: id* (string), customerId (string), channelId (string), status (string), fulfillmentStatus (string), fulfillmentLocationId (string,null), brokerId (string,null), brokerFeePercent (number,null), brokerFees (number), fulfillmentCosts (number), freightCosts (number), promoCosts (number), otherCosts (number), mabd (string), notes (string,null), qboId (string,null), placedAt (string), receivedAt (string,null), enteredAt (string,null), shippedAt (string,null), invoicedAt (string,null), paidAt (string,null), rejectedAt (string,null), inDisputeAt (string,null), completedAt (string,null)

update_sales_order_item ✏️

Update an SO line item. The id is the item id, not the SO id.

Arguments: id* (string), skuId (string), quantity (integer), unitPrice (number)

Documents

delete_document 🔴

Permanently delete a document and its stored file.

Arguments: id* (string)

get_document

Get one document's metadata plus a time-limited signed download URL for its content.

Arguments: id* (string)

list_documents

List the documents attached to an entity (PO, SO, WO, etc.), specified via query args.

Arguments: entityType* (string), entityId* (string)