{"version":"2026-09-19","base_url":"https://mcp.holioworkspace.com","domains":[{"name":"account","description":"Account — who the key is, and what it may do"},{"name":"commerce","description":"Commerce — the canonical product and order model"},{"name":"inventory","description":"Inventory — stock, locations, counts and receipts"},{"name":"parties","description":"Parties — contacts and the people behind an order"},{"name":"freight","description":"Freight — products, prices, zones and freight invoices"},{"name":"delivery","description":"Delivery — tracking, claims and carrier cases"},{"name":"einvoice","description":"E-invoice — EHF and Peppol"},{"name":"search","description":"Search — one query across the tenant's data"}],"resources":[{"name":"products","domain":"commerce","title":"Products","description":"The canonical product, independent of which webshop or ERP it came from. A product has variants; the variant is what is sold and counted.","stability":"stable","path":"/api/products","mounted_path":"/api/catalog_products","id_field":"catalog_product_id","filters":["category_id","incoming","product_type_id","product_type_id_from","product_type_id_to"],"sorts":["brand","name","product_group","status","updated_at"],"search":["brand","name","product_group","taxonomy_path"],"operations":["list","get","patch"],"editable_fields":["brand","description","external_id","handle","name","product_group","seo_description","seo_title","series","short_description","status","taxonomy_path","usp"]},{"name":"product-variants","domain":"commerce","title":"Product variants","description":"One sellable variant of a product — the SKU level. Stock balances and order lines point here, not at the product.","stability":"stable","path":"/api/product-variants","mounted_path":"/api/catalog_variants","id_field":"catalog_variant_id","filters":["catalog_product_id","catalog_product_id_from","catalog_product_id_to"],"sorts":["price","sku","updated_at"],"search":["ean","sku","title"],"operations":["list","get","patch"],"editable_fields":["compare_at_price","cost","country_of_origin","ean","height_cm","hs_code","length_cm","mpn","price","requires_shipping","restock_at","sale_from","sale_price","sale_to","sell_when_out_of_stock","sku","status","stock_quantity","title","unit_of_measure","vat_code","weight","width_cm"]},{"name":"product-descriptions","domain":"commerce","title":"Product descriptions","description":"Per-language description text for a product. One row per language.","stability":"stable","path":"/api/product-descriptions","mounted_path":"/api/product_descriptions","id_field":"product_description_no","filters":[],"sorts":["language_no","line_no","product_no","updated_at"],"search":["description","product_no"],"operations":["list","get","patch"],"editable_fields":["add_description","description","external_id","language_no","line_no","product_no"]},{"name":"product-structures","domain":"commerce","title":"Product structures","description":"Bill of materials: which variants a composite product is built from, and how many of each.","stability":"stable","path":"/api/product-structures","mounted_path":"/api/structures","id_field":"structure_no","filters":[],"sorts":["line_no","product_no","sort_sequence_no","sub_product_no","updated_at"],"search":["overridden_description","product_no","sub_product_no"],"operations":["list","get","patch"],"editable_fields":["external_id","line_no","overridden_description","processing_method1","processing_method2","processing_method3","processing_method4","processing_method5","product_no","quantity_per_structure","sort_sequence_no","sub_product_no","unit","warehouse_no"]},{"name":"orders","domain":"commerce","title":"Orders","description":"The canonical sales order. Orders from Shopify, MyStore and the storefronts all land in this shape; the channel is a field, not a different resource.","stability":"stable","path":"/api/orders","mounted_path":"/api/catalog_orders","id_field":"catalog_order_id","filters":[],"sorts":["customer_name","gross_amount","order_date","order_number","updated_at"],"search":["customer_email","customer_name","order_number"],"operations":["list","get","patch"],"editable_fields":["channel_status","external_id"]},{"name":"returns","domain":"commerce","title":"Returns","description":"A return or RMA against an order, with its lines and its state.","stability":"stable","path":"/api/returns","mounted_path":"/api/return_rmas","id_field":"return_rma_id","filters":[],"sorts":["customer_name","order_number","refund_amount","requested_at","rma_state","updated_at"],"search":["channel_return_id","customer_name","order_number","rma_number"],"operations":["list","get","patch"],"editable_fields":["external_id","reason","rma_state"]},{"name":"price-lists","domain":"commerce","title":"Price lists","description":"A named price list. Which customers it applies to is decided by the agreement, not by the list.","stability":"stable","path":"/api/price-lists","mounted_path":"/api/holio_price_lists","id_field":"price_list_id","filters":["active","active_from","active_to","customer_group","customer_group_from","customer_group_to","customer_no","customer_no_from","customer_no_to","is_default","is_default_from","is_default_to","status","status_from","status_to"],"sorts":["is_default","name","priority","status","updated_at","valid_from","valid_to"],"search":["customer_group","customer_no","name"],"operations":["list","get","patch"],"editable_fields":["active","currency","customer_group","customer_no","is_default","name","priority","status","valid_from","valid_to"]},{"name":"price-list-entries","domain":"commerce","title":"Price list entries","description":"One price for one variant on one price list.","stability":"stable","path":"/api/price-list-entries","mounted_path":"/api/holio_price_list_entrys","id_field":"entry_id","filters":["catalog_variant_id","catalog_variant_id_from","catalog_variant_id_to","currency","currency_from","currency_to","price_list_id","price_list_id_from","price_list_id_to","sku","sku_from","sku_to"],"sorts":["min_quantity","sku","unit_price","updated_at","valid_from"],"search":["catalog_product_id","catalog_variant_id","sku"],"operations":["list","get","patch"],"editable_fields":["catalog_product_id","catalog_variant_id","currency","discount_percent","min_quantity","price_list_id","sku","unit_price","valid_from"]},{"name":"inventory-balances","domain":"inventory","title":"Inventory balances","description":"On-hand quantity per variant per location. Read-only: a balance is a consequence of movements, and writing one directly would make the ledger disagree with itself.","stability":"stable","path":"/api/inventory-balances","mounted_path":"/api/inventory_balances","id_field":"balance_no","filters":["location_no","location_no_from","location_no_to","product_no","product_no_from","product_no_to"],"sorts":["available","computed_at","incoming","on_hand","product_no","reserved","updated_at"],"search":["balance_no","description","product_no"],"operations":["list","get"],"editable_fields":[]},{"name":"inventory-locations","domain":"inventory","title":"Inventory locations","description":"A warehouse, a shelf, or any other place stock can be.","stability":"stable","path":"/api/inventory-locations","mounted_path":"/api/inventory_locations","id_field":"location_no","filters":["active","active_from","active_to","is_default","is_default_from","is_default_to","location_type","location_type_from","location_type_to"],"sorts":["code","is_default","location_type","name","updated_at"],"search":["code","name"],"operations":["list","get","patch"],"editable_fields":["active","address_json","code","external_id","is_default","location_type","name","shopify_location_id","visma_warehouse_no"]},{"name":"inventory-counts","domain":"inventory","title":"Inventory counts","description":"A stocktake: what was counted, where, by whom, and what it corrected.","stability":"stable","path":"/api/inventory-counts","mounted_path":"/api/inventory_counts","id_field":"inventory_count_id","filters":["status","status_from","status_to","warehouse_location_no","warehouse_location_no_from","warehouse_location_no_to"],"sorts":["inventory_count_id","status","updated_at","warehouse_location_no"],"search":["search_note","status"],"operations":["list","get","patch"],"editable_fields":["search_note","status","warehouse_location_no"]},{"name":"stock-movements","domain":"inventory","title":"Stock movements","description":"The append-only ledger every balance is derived from. Read-only.","stability":"stable","path":"/api/stock-movements","mounted_path":"/api/stock_ledgers","id_field":"ledger_no","filters":["location_no","location_no_from","location_no_to","movement_type","movement_type_from","movement_type_to","product_no","product_no_from","product_no_to","ref_kind","ref_kind_from","ref_kind_to","ref_no","ref_no_from","ref_no_to"],"sorts":["ledger_no","movement_type","occurred_at","product_no","qty_delta","updated_at"],"search":["ledger_no","product_no","reason_code","ref_no"],"operations":["list","get"],"editable_fields":[]},{"name":"goods-receipts","domain":"inventory","title":"Goods receipts","description":"What actually arrived against a purchase order, line by line.","stability":"stable","path":"/api/goods-receipts","mounted_path":"/api/goods_receipts","id_field":"receipt_no","filters":["po_no","po_no_from","po_no_to","received_date","received_date_from","received_date_to","status","status_from","status_to","supplier_no","supplier_no_from","supplier_no_to","warehouse_no","warehouse_no_from","warehouse_no_to"],"sorts":["po_no","receipt_no","received_date","status","supplier_no","updated_at"],"search":["note","po_no","receipt_no","supplier_name"],"operations":["list","get","patch"],"editable_fields":["external_id","note","po_no","received_date","status","supplier_name","supplier_no","warehouse_no"]},{"name":"purchase-orders","domain":"inventory","title":"Purchase orders","description":"An order placed with a supplier.","stability":"stable","path":"/api/purchase-orders","mounted_path":"/api/hilde_purchase_orders","id_field":"po_no","filters":["order_date","order_date_from","order_date_to","status","status_from","status_to","supplier_no","supplier_no_from","supplier_no_to","warehouse_no","warehouse_no_from","warehouse_no_to"],"sorts":["expected_date","net_amount","order_date","po_no","status","supplier_no","updated_at"],"search":["note","po_no","supplier_name"],"operations":["list","get","patch"],"editable_fields":["currency_no","expected_date","external_id","net_amount","note","order_date","status","supplier_email","supplier_name","supplier_no","warehouse_no"]},{"name":"inbound-shipments","domain":"inventory","title":"Inbound shipments","description":"A supplier's shipment on its way in, before it is received.","stability":"stable","path":"/api/inbound-shipments","mounted_path":"/api/supplier_shipments","id_field":"shipment_no","filters":["carrier","carrier_from","carrier_to","delivery_method","delivery_method_from","delivery_method_to","po_no","po_no_from","po_no_to","status","status_from","status_to","supplier_no","supplier_no_from","supplier_no_to","supplier_order_no","supplier_order_no_from","supplier_order_no_to"],"sorts":["eta","last_email_at","pickup_deadline","status","supplier_name","supplier_order_no","updated_at"],"search":["po_no","shipment_no","supplier_name","supplier_order_no","tracking_number","your_reference"],"operations":["list","get"],"editable_fields":[]},{"name":"contacts","domain":"parties","title":"Contacts","description":"The master contact record — one person or company, whatever system first learned about them.","stability":"stable","path":"/api/contacts","mounted_path":"/api/contacts","id_field":"contact_id","filters":["associate_no","associate_no_from","associate_no_to","contact_type","contact_type_from","contact_type_to","origin","origin_from","origin_to","registration_country_code","registration_country_code_from","registration_country_code_to","role","status","status_from","status_to","supplier_category","verification_status","verification_status_from","verification_status_to"],"sorts":["city","company_name","display_name","email","last_order_at","legal_name","lifetime_value","order_count","org_no","status","updated_at","verification_status"],"search":["city","company_name","display_name","email","first_name","last_name","legal_name","org_no","phone"],"operations":["list","get","patch"],"editable_fields":["address1","address2","associate_no","attributes","city","company_name","contact_type","country","display_name","email","external_id","first_name","job_title","last_name","legal_name","mobile_phone","org_no","origin","phone","postal_code","region","registration_country_code","status","tags","verification_source","verification_status","verified_at","website"]},{"name":"freight-products","domain":"freight","title":"Freight products","description":"A sellable freight service, with the carrier product behind it.","stability":"stable","path":"/api/freight-products","mounted_path":"/api/freight_products","id_field":"freight_product_no","filters":["carrier","carrier_from","carrier_to","edi_id","edi_id_from","edi_id_to","fuel_handling","fuel_handling_from","fuel_handling_to","product_type","product_type_from","product_type_to","profrakt_product_id","profrakt_product_id_from","profrakt_product_id_to","status","status_from","status_to","unit","unit_from","unit_to"],"sorts":["carrier","edi_id","name","product_type","service_code","status","updated_at"],"search":["carrier","edi_id","freight_product_no","name","service_code","source_product_code"],"operations":["list","get","patch"],"editable_fields":["carrier","description","edi_id","fuel_handling","included_component_pct","name","parent_freight_product_no","product_type","profrakt_product_id","service_code","source_product_code","status","unit","vat_code","volumetric_factor_kg_m3"]},{"name":"freight-price-groups","domain":"freight","title":"Freight price groups","description":"A named set of freight prices a customer can be placed in.","stability":"stable","path":"/api/freight-price-groups","mounted_path":"/api/freight_price_groups","id_field":"price_group_no","filters":["markup_model","markup_model_from","markup_model_to","status","status_from","status_to"],"sorts":["name","status","updated_at"],"search":["description","name","price_group_no"],"operations":["list","get","patch"],"editable_fields":["description","markup_json","markup_model","name","sale_matrix_ref","status"]},{"name":"freight-zones","domain":"freight","title":"Freight zones","description":"A geographic zone a freight price is quoted for.","stability":"stable","path":"/api/freight-zones","mounted_path":"/api/freight_zones","id_field":"freight_zone_no","filters":["carrier","carrier_from","carrier_to"],"sorts":["carrier","updated_at","zone_code"],"search":["carrier","description","freight_zone_no","zone_code"],"operations":["list","get","patch"],"editable_fields":["carrier","description","zone_code"]},{"name":"freight-weight-classes","domain":"freight","title":"Freight weight classes","description":"The weight bands a freight price uses.","stability":"stable","path":"/api/freight-weight-classes","mounted_path":"/api/freight_weight_classes","id_field":"weight_class_no","filters":["freight_product_no","freight_product_no_from","freight_product_no_to"],"sorts":["freight_product_no","updated_at"],"search":["freight_product_no","weight_class_no"],"operations":["list","get","patch"],"editable_fields":["freight_product_no","over_max_per_kg","weight_from_kg","weight_to_kg"]},{"name":"freight-billing-profiles","domain":"freight","title":"Freight billing profiles","description":"How a customer is billed for freight: cadence, channel and grouping.","stability":"stable","path":"/api/freight-billing-profiles","mounted_path":"/api/freight_billing_profiles","id_field":"billing_profile_no","filters":["blocked","blocked_from","blocked_to","customer_no","customer_no_from","customer_no_to","delivery_channel","delivery_channel_from","delivery_channel_to","exclude_from_invoicing","exclude_from_invoicing_from","exclude_from_invoicing_to","invoicing_interval","invoicing_interval_from","invoicing_interval_to","line_granularity","line_granularity_from","line_granularity_to"],"sorts":["customer_no","delivery_channel","invoicing_interval","updated_at"],"search":["billing_profile_no","invoice_email","note"],"operations":["list","get","patch"],"editable_fields":["blocked","blocked_reason","customer_no","delivery_channel","due_days","exclude_from_invoicing","invoice_email","invoicing_interval","line_granularity","note","sort_order","specification","specification_formats","summary_block","surcharge_lines","surcharge_optout_json"]},{"name":"freight-invoices","domain":"freight","title":"Freight invoices","description":"A freight invoice as Holio produced it. Read-only through the API — an invoice is issued by the billing run, not by a caller.","stability":"stable","path":"/api/freight-invoices","mounted_path":"/api/freight_invoices","id_field":"freight_invoice_no","filters":["customer_no","customer_no_from","customer_no_to","delivery_channel","delivery_channel_from","delivery_channel_to","shadow","shadow_from","shadow_to","status","status_from","status_to"],"sorts":["customer_no","gross_amount","invoice_date","invoice_number","status","updated_at"],"search":["customer_name","freight_invoice_no","kid"],"operations":["list","get"],"editable_fields":[]},{"name":"freight-invoice-lines","domain":"freight","title":"Freight invoice lines","description":"The lines of a freight invoice, at the granularity the customer's billing profile asked for.","stability":"stable","path":"/api/freight-invoice-lines","mounted_path":"/api/freight_invoice_lines","id_field":"invoice_line_no","filters":["freight_invoice_no","freight_invoice_no_from","freight_invoice_no_to","freight_product_no","freight_product_no_from","freight_product_no_to","line_type","line_type_from","line_type_to","package_number","package_number_from","package_number_to"],"sorts":["amount","line_no","updated_at"],"search":["description","freight_product_no","invoice_line_no","package_number"],"operations":["list","get"],"editable_fields":[]},{"name":"parcel-tracking","domain":"delivery","title":"Parcel tracking","description":"Tracking state for a parcel, normalised across carriers.","stability":"stable","path":"/api/parcel-tracking","mounted_path":"/api/trackings","id_field":"tracking_no","filters":[],"sorts":["carrier","current_status","delivered_at","last_event_at","last_polled_at","order_ref","tracking_number","updated_at"],"search":["carrier","order_ref","package_number","shopify_order_id","status_text","tracking_number"],"operations":["list","get"],"editable_fields":[]},{"name":"delivery-claims","domain":"delivery","title":"Delivery claims","description":"A claim against a delivery — damage, loss or delay.","stability":"stable","path":"/api/delivery-claims","mounted_path":"/api/delivery_claims","id_field":"delivery_claim_no","filters":["carrier","carrier_from","carrier_to","claim_type","claim_type_from","claim_type_to","order_ref","order_ref_from","order_ref_to","status","status_from","status_to","tracking_no","tracking_no_from","tracking_no_to"],"sorts":["claim_type","claimed_amount","closed_at","opened_at","status","status_at","updated_at"],"search":["carrier","delivery_claim_no","description","order_ref","package_number","tracking_no"],"operations":["list","get","patch"],"editable_fields":["carrier","claim_type","claimed_amount","closed_at","currency","description","external_id","opened_at","order_ref","package_number","resolution_note","shipment_no","status","status_at","tracking_no"]},{"name":"carrier-cases","domain":"delivery","title":"Carrier cases","description":"A case opened with a carrier, and the correspondence on it.","stability":"stable","path":"/api/carrier-cases","mounted_path":"/api/carrier_cases","id_field":"carrier_case_no","filters":["carrier","carrier_from","carrier_status","carrier_status_from","carrier_status_to","carrier_to","case_number","case_number_from","case_number_to","package_number","package_number_from","package_number_to","source","source_from","source_to"],"sorts":["carrier","carrier_last_update","carrier_status","hubspot_updated_at","subject","updated_at"],"search":["carrier_case_no","case_number","package_number","subject"],"operations":["list","get"],"editable_fields":[]}]}