Skip to main content
Glama

Quote Part

quote_part
Destructive

Price a part that is already in ARCNM again: at another lot size, with another material or stock format, or in another costing environment. Use it when the part has a revision. Every calculation carries its part_revision_id (get_calculation). With derived_from_calculation_id it keeps that calculation's material and annual_volume unless you pass them. Pass several costing_environment_ids to price it in up to 16 environments at once. The runs share a batch_id. Billable: each part in each environment uses one calculation of the quota, only if it succeeds. An assembly uses one per different part. The calculation runs in the background. Returns the calculation id, its status and eta_seconds. Follow it with get_calculation. For a free what-if on a priced calculation, use preview_cost. For a new file, use upload_and_quote.

Input Schema

NameRequiredDescriptionDefault
nameNoOptional human-readable label; defaults to a timestamped name when omitted.
engineNoPricing engine selector; retained for back-compat and always normalized to the sole engine.arcnm
regionNoPricing region override; defaults to the costing environment's region when omitted.
currencyNoISO 4217 currency code for the quote; defaults to the costing environment's currency when omitted. Another currency needs an exchange rate from the environment's currency: a code that is not ISO 4217 is refused with 422 `currency_unknown`, one the environment has no exchange rate into with 422 `currency_not_configured`, before any calculation is created.
languageNoBCP 47 language for the calculation's captured context (e.g. 'de', 'en'). Part of the calculation's cache identity.de
lot_sizeNoNumber of identical parts produced per batch (1 to 1,000,000,000).
material_refNoFree-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU); resolved to a material grade. Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). On a re-run (`derived_from_calculation_id`), omitting both it and `material_grade_id` keeps the material the calculation re-run was asked for (one read from its drawing is read again); send `null` to price the drawing's material instead.
nest_item_idNoPrice this calculation's material on its part's line of a job nest — the `id` of a line (`items[].id`) of a job nest that has solved it. The material is then the line's share of the sheets the job nest cut it from together with other parts, less its share of what their skeleton and reusable rests earn back; everything else is priced as usual. The line must be of your organization, of this costing environment and of this part revision, and its job nest must have solved it; otherwise the request is rejected with 422 `nest_item_unresolved`, `details.reason` saying why. It cannot be combined with `stock_format_id` or with customer-supplied material. An upload creates a new part revision, so the upload forms reject every line. A line of the sheets an assembly shares among its own components prices that assembly only: naming one is rejected as `not_found`, and a re-run of such a component prices it on its own sheet. Omit it to price the part on its own sheet. On a re-run (`derived_from_calculation_id`), omitting it keeps the line of the calculation re-run; send `null` to price the part on its own sheet.
annual_volumeNoExpected yearly quantity, used for amortizing setup over the run (1 to 1,000,000,000). On a re-run (`derived_from_calculation_id`), omitting it keeps the annual volume of the calculation re-run.
dataset_link_idNoUUID of a specific dataset link to use; omit to use the revision's active primary CAD.
stock_format_idNoPrice this calculation on one stock format — the `id` of a format from the `materials_list_stock_formats` tool (toolset `catalog`). An id names the format, not only the version it came from: when the format has been changed since, the version current on the day the calculation is created is used. An id your organization cannot price with today (unknown, retired or hidden) is rejected with 422 `stock_format_unresolved`. When the part cannot be cut from that format — too small, not bought in the part's thickness or material, or one the machine cannot load — or is not cut from sheet at all (milled, turned or bought finished), the calculation is priced as if none had been chosen, and `analytics.pipeline_notes` says why (`stock_format_pin_unavailable`). Omit it to price on the format that uses the least material per part. On a re-run (`derived_from_calculation_id`), omitting it keeps the format of the calculation re-run; send `null` to price without one.
stock_format_mmNoPrice this calculation on a sheet of this size — length and width in mm — instead of a stock format from the `materials_list_stock_formats` tool (toolset `catalog`): the part is laid out on that one sheet, cut to size by your supplier, and the purchased stock says `format_source` `custom`. It cannot be combined with `stock_format_id` or `nest_item_id`. When the part does not fit the sheet, or is not cut from sheet stock at all, the calculation is priced as if none had been stated and `analytics.pipeline_notes` says why. On a re-run (`derived_from_calculation_id`), omitting both it and `stock_format_id` keeps the size or format of the calculation re-run; send `null` to price without one.
part_revision_idYesUUID of the part revision to price.
full_stock_chargeNoHow the started sheet or bar of the lot is charged: `auto` applies the environment's `full_stock_threshold` (the lot pays the whole piece once its parts fill that share of it, the unused cells credited as scrap where scrap is credited); `full` charges the whole piece at any lot; `full_no_credit` charges it whole with no scrap credit on the unused cells; `share` charges only the lot's share at any lot. A lot of whole pieces, or a piece holding one part, is charged the same under every word. On a re-run (`derived_from_calculation_id`), omitting it keeps the word of the calculation re-run.auto
material_grade_idNoUUID of a resolved material grade; takes precedence over material_ref when both are supplied. On a re-run (`derived_from_calculation_id`), omitting both it and `material_ref` keeps the material the calculation re-run was asked for (one read from its drawing is read again).
provided_stock_kindNoShape of the provided stock. 'near_net_profile' (extruded profile) additionally scopes the process plan to the features the profile does not already provide.none
material_is_providedNoTrue when the customer supplies the raw material (beigestellt) — the material cost line is set to zero; machining, setup and overheads are billed normally.
costing_environment_idNoUUID of the costing environment (machine rates, region) to price against. Omit to use your organization's default environment (the auto-provisioned default baseline).
costing_environment_idsNoPrice this part in several environments at once, in comparison order. Each environment becomes one calculation and counts as one against the plan quota. Mutually exclusive with ``costing_environment_id``; duplicates are collapsed preserving first occurrence. The response then carries ``batch_id`` and ``environment_runs``.
derived_from_calculation_idNoThe calculation this one is re-run from — pass it when pricing again after a drawing was attached or from a result's own page, so the new calculation records what it supersedes. Must name a calculation of your organization; the new calculation is its own row and counts as one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / material_grade_id / description
      Previous value: -"UUID of a resolved material grade; takes precedence over material_ref when both are supplied. On a re-run (`derived_from_calculation_id`), omitting both it and `material_ref` keeps the material of the calculation re-run."New value: +"UUID of a resolved material grade; takes precedence over material_ref when both are supplied. On a re-run (`derived_from_calculation_id`), omitting both it and `material_ref` keeps the material the calculation re-run was asked for (one read from its drawing is read again)."
    • changedInput schema / properties / material_ref / description
      Previous value: -"Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU); resolved to a material grade. Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). On a re-run (`derived_from_calculation_id`), omitting both it and `material_grade_id` keeps the material of the calculation re-run; send `null` to price the drawing's material instead."New value: +"Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU); resolved to a material grade. Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). On a re-run (`derived_from_calculation_id`), omitting both it and `material_grade_id` keeps the material the calculation re-run was asked for (one read from its drawing is read again); send `null` to price the drawing's material instead."
  2. Changed5 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / annual_volume / description
      Previous value: -"Expected yearly quantity, used for amortizing setup over the run (1 to 1,000,000,000)."New value: +"Expected yearly quantity, used for amortizing setup over the run (1 to 1,000,000,000). On a re-run (`derived_from_calculation_id`), omitting it keeps the annual volume of the calculation re-run."
    • changedInput schema / properties / currency / description
      Previous value: -"ISO 4217 currency code for the quote; defaults to the costing environment's currency when omitted."New value: +"ISO 4217 currency code for the quote; defaults to the costing environment's currency when omitted. Another currency needs an exchange rate from the environment's currency: a code that is not ISO 4217 is refused with 422 `currency_unknown`, one the environment has no exchange rate into with 422 `currency_not_configured`, before any calculation is created."
    • changedInput schema / properties / material_grade_id / description
      Previous value: -"UUID of a resolved material grade; takes precedence over material_ref when both are supplied."New value: +"UUID of a resolved material grade; takes precedence over material_ref when both are supplied. On a re-run (`derived_from_calculation_id`), omitting both it and `material_ref` keeps the material of the calculation re-run."
    • changedInput schema / properties / material_ref / description
      Previous value: -"Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU); resolved to a material grade. Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default)."New value: +"Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU); resolved to a material grade. Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). On a re-run (`derived_from_calculation_id`), omitting both it and `material_grade_id` keeps the material of the calculation re-run; send `null` to price the drawing's material instead."
  3. Added
  4. Removed
  5. Changed2 schema fields changed
    • changedInput schema / properties / stock_format_id / description
      Previous value: -"Price this calculation on one stock format — the `id` of a format from `GET /stock-formats`. An id names the format, not only the version it came from: when the format has been changed since, the version current on the day the calculation is created is used. An id your organization cannot price with today (unknown, retired or hidden) is rejected with 422 `stock_format_unresolved`. When the part cannot be cut from that format — too small, not bought in the part's thickness or material, or one the machine cannot load — or is not cut from sheet at all (milled, turned or bought finished), the calculation is priced as if none had been chosen, and `analytics.pipeline_notes` says why (`stock_format_pin_unavailable`). Omit it to price on the format that uses the least material per part. On a re-run (`derived_from_calculation_id`), omitting it keeps the format of the calculation re-run; send `null` to price without one."New value: +"Price this calculation on one stock format — the `id` of a format from the `materials_list_stock_formats` tool (toolset `catalog`). An id names the format, not only the version it came from: when the format has been changed since, the version current on the day the calculation is created is used. An id your organization cannot price with today (unknown, retired or hidden) is rejected with 422 `stock_format_unresolved`. When the part cannot be cut from that format — too small, not bought in the part's thickness or material, or one the machine cannot load — or is not cut from sheet at all (milled, turned or bought finished), the calculation is priced as if none had been chosen, and `analytics.pipeline_notes` says why (`stock_format_pin_unavailable`). Omit it to price on the format that uses the least material per part. On a re-run (`derived_from_calculation_id`), omitting it keeps the format of the calculation re-run; send `null` to price without one."
    • changedInput schema / properties / stock_format_mm / description
      Previous value: -"Price this calculation on a sheet of this size — length and width in mm — instead of a stock format from `GET /stock-formats`: the part is laid out on that one sheet, cut to size by your supplier, and the purchased stock says `format_source` `custom`. It cannot be combined with `stock_format_id` or `nest_item_id`. When the part does not fit the sheet, or is not cut from sheet stock at all, the calculation is priced as if none had been stated and `analytics.pipeline_notes` says why. On a re-run (`derived_from_calculation_id`), omitting both it and `stock_format_id` keeps the size or format of the calculation re-run; send `null` to price without one."New value: +"Price this calculation on a sheet of this size — length and width in mm — instead of a stock format from the `materials_list_stock_formats` tool (toolset `catalog`): the part is laid out on that one sheet, cut to size by your supplier, and the purchased stock says `format_source` `custom`. It cannot be combined with `stock_format_id` or `nest_item_id`. When the part does not fit the sheet, or is not cut from sheet stock at all, the calculation is priced as if none had been stated and `analytics.pipeline_notes` says why. On a re-run (`derived_from_calculation_id`), omitting both it and `stock_format_id` keeps the size or format of the calculation re-run; send `null` to price without one."
  6. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag the call as non-read-only and destructive; the description adds the operational profile that matters: quota is consumed per part per environment, only on success, one per distinct assembly part; multi-environment runs share a batch_id; the calculation runs in the background and returns id, status and eta_seconds, with get_calculation as the follow-up. That is genuine context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then usage, then billing/async behavior, then alternatives. Dense but each sentence carries signal; the middle billing sentences are the wordiest part and could be tightened slightly without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 20-parameter, billable, asynchronous mutation with no output schema, the description covers everything an agent needs: what it creates (a calculation row), what it costs (quota), that it is async, what the response contains (id, status, eta_seconds, batch_id), and how to retrieve results. Return-shape information is supplied despite the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot easily express: derived_from_calculation_id inherits material and annual_volume unless overridden, and several costing_environment_ids price up to 16 environments in one batch. It does not re-explain the remaining 18 parameters, which is appropriate given the rich schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Price a part that is already in ARCNM') plus the scope variations (lot size, material, stock format, costing environment). It explicitly distinguishes itself from the two nearest siblings, preview_cost and upload_and_quote, so an agent can tell which tool to open without comparing schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the enabling condition ('Use it when the part has a revision') and names concrete alternatives with the condition that selects each: preview_cost for a free what-if on a priced calculation, upload_and_quote for a new file. No routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.