Skip to main content
Glama

Get Process Plan

get_process_plan
Read-onlyIdempotent

Get the process plan (Arbeitsplan) of a calculation: the operations in the order they run, each with its work center and cycle time, then the post-processing chain such as welding, heat treatment and coating with what each is charged per part. Also returns the setup, cycle and total time, the machines used, how many times each one clamps the part, and the processes the drawing asks for that no machine here can do. Use it for work preparation, scheduling or to check how the part is made. Machining cost sits with the features, not with the steps. explain_cost ranks the features. Read-only and free.

Input Schema

NameRequiredDescriptionDefault
calculation_idYesId of a calculation, as upload_and_quote, quote_part or list_calculations return it.

Output Schema

NameRequiredDescriptionDefault
errorNoWhy this calculation produced no plan, in one sentence, when its status is terminal (failed / cancelled).
stepsNo
statusYes
currencyNoThe calculation's currency — the basis of every subcontract_per_part figure on the steps.
guidanceYes
machinesNoMachine(s) / work center(s), in route order.
unpricedNoWork the drawing requires that no machine in this environment can do, so it is not in the price. Each entry names the process and why. Absent when the route covers what the drawing asks for.
clampingsNoHow many times each machine clamps the part, in route order — the same count the route was costed on. Absent when the route did not state a count.
unit_time_sNoTotal time per unit, seconds.
cycle_time_sNoTotal machining cycle time per unit, seconds.
setup_time_sNoOne-time setup time for the whole lot, in seconds (NOT per unit; divide by the lot size for the per-unit share).
calculation_idYes
machine_time_sNoMachine time per unit in seconds: the billed run plus the finishing pass, under the allowance. Absent on older calculations.
operation_countNoNumber of process steps in the plan.
selection_failureNoThe same refusal as data when no machine in the costing environment could make the part.
price_completenessNo'partial' when `unpriced` lists work the price leaves out — the plan covers the rest and the price is a lower bound; 'complete' when it covers everything. Absent before the contract.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / price_completeness
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "complete",
      +        "partial"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "'partial' when `unpriced` lists work the price leaves out — the plan covers the rest and the price is a lower bound; 'complete' when it covers everything. Absent before the contract."
      +}
    • changedOutput schema / properties / unpriced / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "description": "Work the drawing requires that no machine here can do.",
      -      "properties": {
      -        "process": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "The manufacturing process, in plain words."
      -        },
      -        "reason": {
      -          "anyOf": [
      -            {
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "default": null,
      -          "description": "Why this work is not in the price."
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Work the drawing requires that no machine here can do — one gap of a\npartial price, in words and as the codes an agent acts on.",
      +      "properties": {
      +        "disabled_capable_machines": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Switched-off machines of this environment that could do the work ({name, machine_class})."
      +        },
      +        "feature_count": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Features the work covers."
      +        },
      +        "process": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "The manufacturing process, in plain words."
      +        },
      +        "process_class": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Stable code for the process; `process` is its label."
      +        },
      +        "reason": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Why this work is not in the price."
      +        },
      +        "remedies": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "What would put this work into the price, as codes in the order to try them: enable_machine (a switched-off machine here can do it — see disabled_capable_machines), add_machine_class, relax_callout, subcontract; on an assembly's welding, attach_weld_drawing and confirm_weld_scope."
      +        },
      +        "requirement": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": true,
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "The callout left out ({kind, value, unit, and gdt_kind naming a gdt callout's characteristic}) when the gap is a requirement rather than a process."
      +        },
      +        "review_code": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "The review reason this gap twins."
      +        },
      +        "violation": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null,
      +          "description": "Stable code for the requirement the closest machine failed."
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed3 schema fields changed
    • addedInput schema / properties / calculation_id / format
      Added value: +"uuid"
    • addedOutput schema / properties / clampings
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "description": "How many times one machine clamps the part.",
      +        "properties": {
      +          "count": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Clampings on that machine — the count its handling was costed on."
      +          },
      +          "machine": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Machine / work centre, by the name it is known by."
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "How many times each machine clamps the part, in route order — the same count the route was costed on. Absent when the route did not state a count."
      +}
    • addedOutput schema / properties / unpriced
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "description": "Work the drawing requires that no machine here can do.",
      +        "properties": {
      +          "process": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "The manufacturing process, in plain words."
      +          },
      +          "reason": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "description": "Why this work is not in the price."
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Work the drawing requires that no machine in this environment can do, so it is not in the price. Each entry names the process and why. Absent when the route covers what the drawing asks for."
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / calculation_id / description
      Added value: +"Id of a calculation, as upload_and_quote, quote_part or list_calculations return it."
    • changedOutput schema / description
      Previous value: -"The ordered process plan (routing) for a calculation — the sequence of\noperations that make the part, each with its process, work center, and\ncycle time, plus the plan-level setup / cycle / total time and machine(s).\n\nThe sequence runs to the finished part: machining first, then the\npost-machining chain (welding, heat treatment, surface finishing, coating).\nThose trailing steps carry no cycle time — an outsourced treatment is priced\nper order, not in machine seconds — so they are outside the plan-level cycle\ntotal; each reports what it is charged in subcontract_per_part, and those\ncharges make up the subcontract cost line.\n\nThis is the work-plan an Arbeitsvorbereitung (work-preparation) or\noperations user acts on. Two honest limits reflect how the engine models\ncost: setup is planned per setup (not per operation) and amortised over the\nlot, so it is reported once at the plan level; and machining cost attributes\nto features, not operations, so a machining step carries no cost of its own —\nuse get_cost_drivers for the feature-level cost breakdown. An outsourced\npost-machining step is the exception: it is bought per operation, so it is\nthe one kind of step that reports what it costs."New value: +"The ordered process plan (routing) for a calculation — the sequence of\noperations that make the part, each with its process, work center, and\ncycle time, plus the plan-level setup / cycle / total time and machine(s).\n\nThe sequence runs to the finished part: machining first, then the\npost-machining chain (welding, heat treatment, surface finishing, coating).\nThose trailing steps carry no cycle time — an outsourced treatment is priced\nper order, not in machine seconds — so they are outside the plan-level cycle\ntotal; each reports what it is charged in subcontract_per_part, and those\ncharges make up the subcontract cost line.\n\nThis is the work-plan an Arbeitsvorbereitung (work-preparation) or\noperations user acts on. Two honest limits reflect how the engine models\ncost: setup is planned per setup (not per operation) and amortised over the\nlot, so it is reported once at the plan level; and machining cost attributes\nto features, not operations, so a machining step carries no cost of its own —\nexplain_cost ranks the features that carry it. An outsourced\npost-machining step is the exception: it is bought per operation, so it is\nthe one kind of step that reports what it costs."
    • changedOutput schema / properties / steps / items / properties / subcontract_per_part / description
      Previous value: -"What this step is charged per part at the ordered lot size, in the calculation's currency — set only on an outsourced post-machining step (heat treatment, coating), and part of the subcontract cost line. Null on a machining step: machining cost attributes to features, not to operations (use get_cost_drivers). Null too when the charge was not recorded."New value: +"What this step is charged per part at the ordered lot size, in the calculation's currency — set only on an outsourced post-machining step (heat treatment, coating), and part of the subcontract cost line. Null on a machining step: machining cost attributes to features, not to operations (explain_cost ranks them). Null too when the charge was not recorded."
  4. Added

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so 'Read-only and free' largely restates structured data (though 'free' adds quota-relevant context). The description does disclose what data is returned and the notable caveat that machining cost is not attributed to steps — useful beyond annotations — but adds nothing on pagination, failure modes, or what happens with an invalid/expired calculation id.

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?

Purpose is front-loaded in the first clause and every sentence carries information. The long enumeration of return fields is somewhat dense and partly redundant with the output schema, costing a point on tightness.

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 single-parameter read tool with full schema coverage, annotations and an output schema, the description supplies purpose, content scope, intended use, and the cost-attribution caveat. An agent has everything needed to select and call it correctly.

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

Parameters3/5

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

Schema coverage is 100% with a single required parameter whose description already explains provenance ('as upload_and_quote, quote_part or list_calculations return it'). The description adds no parameter-level detail, so the baseline 3 applies.

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 ('get the process plan of a calculation') and enumerates its contents: ordered operations with work center and cycle time, post-processing chain with per-part charges, setup/cycle/total times, machines, clamping counts, and infeasible drawing requirements. This is far more specific than siblings like get_calculation or get_cost_breakdown allow an agent to distinguish.

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?

Explicitly names intended uses ('work preparation, scheduling or to check how the part is made') and routes the agent away for costing: 'Machining cost sits with the features, not with the steps. explain_cost ranks the features.' Both when-to-use and the alternative are stated.

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.