Last updated

Norce Pricing MCP — Tool Reference

This page documents the tools exposed by the Norce Pricing MCP Server. For setup and connection instructions, see Using the Norce Backend MCP Servers.

response_format parameter: Most tools accept a response_format parameter — either "markdown" (default, human-readable) or "json" (for programmatic use). This parameter is not listed individually under each tool.

force_confirm parameter: Write tools include a force_confirm parameter, backed by a server-side guard that classifies each operation by impact. Lower-impact operations go through, with a warning attached on stage and production. Higher-impact operations are blocked on stage and production until force_confirm is set. A few destructive operations are blocked on every environment, including test. Each tool below states which of these applies.


Two views of price data

Like the Inventory MCP, the Pricing MCP exposes price data through two distinct lenses. Choosing the right one matters:

  • norce_pricing_get_sku_prices reads directly from the database — no cache, no VAT, no business logic. Use it for diagnostics and to verify that an import landed correctly.
  • norce_pricing_preview_prices and norce_pricing_preview_price_detail return prices as the storefront would show them — with business rules, VAT, and caching applied. Use them to answer "what will the customer see?"

The storefront view is application-specific — the applicationId you pass determines which storefront's price context is applied. Different applications (for example a Swedish and a Norwegian storefront) can have different default price lists, sales areas, VAT rates, and currencies, so the same SKU can return a different calculated price depending on which application ID is used. Use norce_config_list_applications to list all applications for the client, then switch between them to compare how different storefronts price the same product.


Tools

List Price Lists

norce_pricing_list_price_lists

Lists price lists for the client with their codes, names, currencies, types, validity dates, and status.

Use this tool to understand the client's pricing structure, find price list codes and IDs, or audit which price lists are active, upcoming, or have ended. The filter parameter controls which lifecycle state to return — "open" (default) returns active and upcoming lists, "active" returns only currently valid ones, "inactive" returns ended or deactivated ones.

Parameters

  • applicationId — any valid application ID for the client.
  • filter — lifecycle filter: "open" (default), "active", or "inactive".

Output

A list of price lists with their IDs, codes, names, currencies, validity dates, sales area relationships, and application-scoped flags.


Get Price List

norce_pricing_get_price_list

Returns full details for a single price list — core settings, default pricing rule, override pricing rules, and population configuration.

Use this tool before updating a price list, when diagnosing how a specific price list is configured, or to read the current pricing rules before modifying them. Accepts price list code or numeric ID.

Parameters

  • applicationId — any valid application ID for the client.
  • price_list — price list code or numeric ID. Codes are preferred.

Output

Complete price list configuration including settings, default pricing rule, category/manufacturer-level override rules, and population rules.


List Rounding Rules

norce_pricing_list_rounding_rules

Lists all rounding rules configured for the client, with their value ranges and rounding behaviour.

Use this tool to understand how prices are rounded for a given currency, or when verifying that a new price list will have a rounding rule applied correctly. Rounding rules are applied implicitly based on the price list's currency — they are not linked directly to a price list.

Parameters

  • applicationId — any valid application ID for the client.

Output

A list of rounding rules with their IDs, names, currency, type, and the value range entries that define rounding behaviour.


Get Rounding Rule

norce_pricing_get_rounding_rule

Returns full details for a single rounding rule.

Use this tool when you need to inspect the exact rounding configuration for a specific rule — for example when verifying that a new price list's currency is covered.

Parameters

  • applicationId — any valid application ID for the client.
  • rounding_rule_id — numeric ID from norce_pricing_list_rounding_rules.

Output

The rounding rule with all value range entries and rounding behaviour settings.


Check Price List Setup

norce_pricing_check_price_list_setup

Audits the pricing configuration for the client — or a single price list — and returns a structured health report with issues, warnings, notes, and passed checks.

Use this tool during pre-deployment validation or as a regular health check. It surfaces structural problems that are difficult to spot by reading individual price list settings.

The tool runs in two modes:

  • Summary (default, fast) — list-level checks: duplicate or missing codes, primary price list rules per application, mixed currencies, date validity, missing sales area IDs, and upcoming expiry warnings.
  • Full — everything in summary, plus deep per-list checks: warehouse links, pricing rule validity, population rule integrity, and virtual price list constraints.

When a specific price_list is provided, full checks always run for that list regardless of mode.

Cross-domain checks (validating that pricing rules do not reference deleted flags, categories, or manufacturers) are available when context is provided from the Product MCP.

Parameters

  • applicationId — any valid application ID for the client.
  • mode"summary" (default) or "full".
  • price_list — optional, narrow to a single price list by code or ID.
  • max_price_lists — maximum price lists to run deep checks on in full mode. Default 50, max 500.
  • context — optional cross-domain context: deleted flag IDs, category IDs, and manufacturer IDs from the Product MCP.

Output

A health report with issues[], warnings[], notes[], passed[], and summary statistics.

Example output from Check Price List Setup showing issues, warnings, and passed checks


Get SKU Prices

norce_pricing_get_sku_prices

Reads raw price records for one or more SKUs directly from the database, across all or specific price lists.

Use this tool for diagnostics and post-import verification — when you need to see exactly what is stored, check update timestamps, or audit which price rule a SKU is on. This tool bypasses cache and business logic.

Do not use this tool to answer "what does the customer see?" — use norce_pricing_preview_prices for that.

Parameters

  • applicationId — any valid application ID for the client.
  • part_nos — one or more SKU part numbers. Maximum 50 per call.
  • price_list_filters — optional list of price list codes or IDs to limit results.
  • include_inactive — set to true to include deactivated price records.
  • include_sku_status — set to true to include the product's active/coming/expiring status.
  • include_audit_fields — set to true to include last updated timestamps and editor information. Useful when diagnosing when a price was last changed.
  • include_info_fields — set to true to include any client-configured extra fields on the price record.
  • include_structure_items — set to true to expand item-level price rules for products using structure calculation pricing. Only relevant for those specific products.

Output

Per part number and price list: sale price, price rule, cost fields, standard and recommended prices, active status, and (optionally) audit timestamps and custom info fields.


Preview Prices

norce_pricing_preview_prices

Returns the calculated best price for one or more products as the storefront would show it — with business rules, VAT, and caching applied.

Use this tool to answer "what will the customer see?" after a price list change or import, or to simulate pricing for different customer segments, sales areas, or currencies. You can also pass a different applicationId to compare how the same SKU is priced on two different storefronts — for example to check whether the Swedish and Norwegian storefronts return the correct prices for the same product. For ground truth after an import, use norce_pricing_get_sku_prices instead — this tool may return cached values.

Parameters

  • applicationId — any valid application ID for the client.
  • part_nos — one or more SKU part numbers. Maximum 50 per call.
  • sales_area_id — sales area for VAT calculation. Defaults to the application's primary sales area. Use norce_config_get_application_overview to find sales area IDs.
  • customer_id — optional, simulate customer-specific pricing.
  • company_id — optional, simulate B2B pricing context.
  • price_list_seed — optional list of price list codes or IDs to simulate the price lists available in the session.
  • currency_id — optional, simulate a specific currency context.

Output

Per product: calculated sale price (ex and inc VAT), recommended price, catalog price, VAT rate, and the price list that produced the result.


Preview Price Detail

norce_pricing_preview_price_detail

Deep price inspection for a single product — includes cost fields, margin data, and the full quantity break price table when applicable.

Use this tool when you need more detail than norce_pricing_preview_prices provides: cost fields for margin verification, or all quantity break pricing tiers in one call. Like preview_prices, this applies business logic and may return cached values — not raw database values. Pass a different applicationId to compare pricing detail across storefronts.

Parameters

  • applicationId — any valid application ID for the client.
  • part_no — a single SKU part number.
  • sales_area_id, customer_id, company_id, price_list_seed, currency_id — same pricing context parameters as norce_pricing_preview_prices.

Output

Full price detail with cost fields, margin data, quantity break flag, and (when the product has quantity breaks) the complete price table per quantity tier.


Get Best Price History

norce_pricing_get_best_price_history

Returns the best price history log for one or more products — an audit trail of every moment the publicly available best price changed.

Use this tool for EU Omnibus Directive compliance work. The Omnibus Directive requires retailers to show the lowest price from the preceding 30 days before marking a product as on sale. This tool provides the data needed to verify and demonstrate compliance.

Use qty_break_one_only for compliance audits — volume pricing tiers are not relevant for Omnibus purposes.

Parameters

  • applicationId — any valid application ID for the client.
  • part_nos — one or more SKU part numbers. Maximum 20 per call.
  • date_from / date_to — optional date range for the history window.
  • qty_break_one_only — set to true to filter to base unit price changes only. Recommended for compliance use.

Output

A chronological log of best price change events per product, with the price, price list, currency, and timestamp of each change.


Import SKU Prices

norce_pricing_import_sku_prices

Imports or updates price records at the product–price list level as an asynchronous batch job. Returns a job ID — use norce_pricing_get_import_job_status to confirm completion.

Use this tool when updating prices from an external source such as an ERP, supplier feed, or campaign file.

Important: always batch. Collect all records before calling and pass them in a single call. Never call once per product.

Important: declare fields_to_set. This parameter is required and controls exactly which fields are written. Only the fields you declare are touched on existing records — all other fields remain unchanged. This prevents accidental overwrites when updating a subset of price fields. For example, if you are only updating price_sale, declare only "price_sale" in fields_to_set.

Important: use price list codes, not IDs. The import uses price list codes (price_list_code per record), not numeric IDs.

Parameters

  • applicationId — any valid application ID for the client.
  • records — batch of price records, minimum 1 and maximum 5000 per call. Each record requires a part number and price list code. All price and cost fields are optional per record, written only if declared in fields_to_set.
  • fields_to_set — the fields to write. Required. Only these fields are updated on existing records.
  • fields_to_ignore_when_empty — optional subset of fields_to_set. Fields listed here will not be cleared when their value is null in a specific record. Useful for mixed batches where not every row has every field populated.
  • force_confirm — required on stage and production.

Output

A job ID, initial status, record count received, and any immediate validation failures. Poll norce_pricing_get_import_job_status for the final result.


Get Import Job Status

norce_pricing_get_import_job_status

Checks the status of an asynchronous price import job.

Use this tool after norce_pricing_import_sku_prices to confirm the import completed and check for errors. Poll until isFinished is true — typical processing time is 5–30 seconds for small batches, longer for large ones.

Status codes: 1 = Initialized, 2 = Succeeded, 3 = Failed, 4 = Validation failed.

Parameters

  • applicationId — any valid application ID for the client.
  • job_id — the job ID returned by norce_pricing_import_sku_prices.

Output

Job status, finish flag, record counts (total, inserted, updated, failed), and processing timestamps.


Create Price List

norce_pricing_create_price_list

Creates a new price list. Pricing rules and population rules are configured separately after creation using the update tools.

Use this tool when setting up a new client environment, adding a campaign price list, or creating a market-specific price list. The price list code must be unique and is used by the Connect API for price imports — choose it carefully.

Parameters

  • applicationId — any valid application ID for the client.
  • code — unique price list code. Used by the Connect API for imports — changing it later will break existing integrations.
  • name — display name.
  • currency_id — currency for prices in this list. Use norce_config_get_client_overview to find currency IDs.
  • sort_order, valid_from, valid_to, is_active — optional settings.
  • force_confirm — not required. Creation proceeds with a warning on stage and production.

Output

The created price list with its assigned numeric ID.


Update Price List Settings

norce_pricing_update_price_list_settings

Updates general settings on an existing price list — name, code, currency, validity dates, sort order, active status, parent price list, and sales area. Only the fields provided are changed.

Use this tool to activate or deactivate a price list, adjust its validity window, link it to a parent price list (for campaign inheritance), or assign it to a sales area. To update pricing rules or population rules, use the dedicated update tools instead.

Important: Changing a price list code will break any Connect API imports that reference the old code.

Parameters

  • applicationId — any valid application ID for the client.
  • price_list — price list code or numeric ID.
  • name, code, currency_id, sort_order, valid_from, valid_to, is_active — any combination of settings to update.
  • parent_price_list_id — link to a parent price list for campaign inheritance, or null to detach.
  • sales_area_id — assign to a sales area for VAT context. Use norce_config_get_client_overview to find sales area IDs.
  • chosen_warehouse_id / chosen_location_id — couple the price list to a specific warehouse and location. The two must be provided together.
  • force_confirm — required on stage and production when changing the warehouse coupling (chosen_warehouse_id); other settings changes proceed with a warning there.

Output

The updated price list object.


Update Price List Pricing Rules

norce_pricing_update_price_list_pricing_rules

Updates the default pricing rule and category/manufacturer-level override rules for a price list.

Use this tool to change how prices are calculated for the price list — the default rule that applies to all products, and any overrides for specific categories, manufacturers, or value ranges.

Important: The pricing_rules array replaces all existing override rules. Always read the current rules first with norce_pricing_get_price_list to avoid losing existing configuration.

The default pricing rule determines how the sale price is derived — for example as a margin on purchase cost, a discount from the recommended price, or a fixed price set per product via import. The rule ID and value work together: the value's meaning depends on which rule is selected (a percentage for margin rules, a discount amount for fixed discount rules, and so on).

Parameters

  • applicationId — any valid application ID for the client.
  • price_list — price list code or numeric ID.
  • default_price_rule_id — the default pricing rule for this price list.
  • default_price_rule_value — the value for the default rule; meaning varies by rule type.
  • default_supplement_charge_percentage — percentage surcharge added to cost before rule calculation, for cost-based rules.
  • default_limit_to_price_recommended — cap the calculated price at the recommended price.
  • default_minimum_product_margin_percentage — minimum margin floor applied across all rules on this price list.
  • inherit_structure_calculation_rule — controls how discounts are distributed across structure items.
  • pricing_rules — the complete set of category/manufacturer-level override rules.
  • force_confirm — required on stage and production.

Output

Confirmation of the update. Read the price list again with norce_pricing_get_price_list to verify.


Update Price List Population Rules

norce_pricing_update_price_list_population_rules

Updates the population rules that control which products are included in or excluded from a price list.

Use this tool when configuring which products a price list covers — for example limiting it to specific manufacturers, flags, or product sets. Population rules are read first and merged with your changes before writing.

Parameters

  • applicationId — any valid application ID for the client.
  • price_list — price list code or numeric ID.
  • population_rules — the full population rules object. Read the current state from norce_pricing_get_price_list and modify the fields you want to change before passing it here.
  • force_confirm — not required. The update proceeds with a warning on stage and production.

Output

Confirmation that population rules were updated.


Typical workflows

Diagnosing a price discrepancy

  1. Call norce_pricing_get_sku_prices to see the raw stored price, which rule is applied, and when the record was last updated.
  2. Call norce_pricing_preview_prices to see what the storefront is actually showing. You can run this with different applicationId values to compare how the same product is priced across storefronts — for example, checking whether the Swedish and Norwegian storefronts return different prices for the same SKU.
  3. Compare the two — if the raw price looks correct but the preview does not, the issue is in business logic, VAT calculation, or caching.
  4. If the raw price itself looks wrong, check the import job history or call norce_pricing_get_price_list to verify the price list's default rule.

Importing prices from an external source

  1. Call norce_pricing_list_price_lists to get the price list codes needed for the import records.
  2. Collect all records into a single batch and declare fields_to_set for the fields you are writing.
  3. Call norce_pricing_import_sku_prices with the full batch.
  4. Poll norce_pricing_get_import_job_status until isFinished is true.
  5. Verify a sample of SKUs with norce_pricing_get_sku_prices to confirm the values landed correctly.

Validating pricing configuration before go-live

  1. Call norce_pricing_check_price_list_setup in "full" mode to run deep checks across all price lists.
  2. Review the issues[] and warnings[] in the report.
  3. For any price list with issues, call norce_pricing_get_price_list to inspect the current configuration and determine what needs to be corrected.

Setting up a new campaign price list

  1. Call norce_pricing_create_price_list with the code, name, currency, and validity dates. Set the start date in the future to activate the campaign on a specific date.
  2. Call norce_pricing_update_price_list_settings to link it to a parent price list and assign the correct sales area.
  3. Call norce_pricing_update_price_list_pricing_rules to configure how campaign prices are calculated.
  4. Call norce_pricing_update_price_list_population_rules if the campaign applies only to specific products, manufacturers, or flags.
  5. Verify the setup with norce_pricing_check_price_list_setup for that specific price list.
  6. Call norce_pricing_preview_prices for a sample of affected SKUs to inspect what prices they will have when the campaign activates — the backend already reflects the campaign pricing even before the start date, so you can validate the outcome in advance.

Omnibus compliance check before a sale

  1. Call norce_pricing_get_best_price_history with the relevant part numbers, a date_from 30 days before the sale start date, and qty_break_one_only = true.
  2. Review the lowest price recorded in that window per product.
  3. Verify that the planned sale price is not presented as a discount from a higher price than the actual lowest price in the period.