Skip to main content
Glama

Order several parts on ply

order_cart

Put every part from price_cart into one ply cart and get the link to finish the order on plyparts.com (shipping, payment, engineer review). Pass the same parts list. Nothing is charged here.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "parts": "<parts>"
    },
    "name": "order_cart"
  }
}

Input Schema

NameRequiredDescriptionDefault
partsYesEvery part in the cart (up to 40): a built part (template + sizes) or a file (path from price_file), each with its own material, color, strength and quantity
thumbsNoLeave empty (the ply card fills in pictures).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / parts / items / properties / board / description
      Previous value: -"plate/tslot-mount: a circuit board whose mounting holes ply places from the maker's drawing (rpi5 = Raspberry Pi 5, rpi4b = Raspberry Pi 4 Model B, rpi3bplus = Raspberry Pi 3 Model B+, rpizero2w = Raspberry Pi Zero 2 W / Zero W, pico = Raspberry Pi Pico, rpicam = Raspberry Pi Camera Module 3 / v2, uno = Arduino Uno (R3 / R4), mega = Arduino Mega 2560); also give width/depth (hole pattern + 12 mm), screw and, on tslot-mount, standoffHeight"New value: +"plate/tslot-mount: a circuit board whose mounting holes ply places from the maker's drawing (rpi5 = Raspberry Pi 5, rpi4b = Raspberry Pi 4 Model B, rpi3bplus = Raspberry Pi 3 Model B+, rpizero2w = Raspberry Pi Zero 2 W / Zero W, pico = Raspberry Pi Pico, rpicam = Raspberry Pi Camera Module 3 / v2, uno = Arduino Uno (R3 / R4), mega = Arduino Mega 2560, jetson-orin-nano = NVIDIA Jetson Orin Nano Developer Kit, esp32-devkitc = Espressif ESP32-DevKitC V4, esp32-s3-devkitc = Espressif ESP32-S3-DevKitC-1 (v1.1), xiao-esp32s3 = Seeed Studio XIAO ESP32-S3, esp32-cam = AI-Thinker ESP32-CAM, ipi-smarc-rb5 = ADLINK I-Pi SMARC RB5 (I-Pi SMARC Plus carrier), esp32-devkit-v1-30 = ESP32 DevKit V1, 30 pins (generic), esp32-38-wide = ESP32 38-pin board, wide with 4 holes (generic), esp32-38-narrow = ESP32 38-pin board, narrow (fits most copies)); also give width/depth (hole pattern + 12 mm), screw and, on tslot-mount, standoffHeight"
    • changedInput schema / properties / parts / items / properties / board / enum
      Previous value: -[
      -  "none",
      -  "rpi5",
      -  "rpi4b",
      -  "rpi3bplus",
      -  "rpizero2w",
      -  "pico",
      -  "rpicam",
      -  "uno",
      -  "mega"
      -]New value: +[
      +  "none",
      +  "rpi5",
      +  "rpi4b",
      +  "rpi3bplus",
      +  "rpizero2w",
      +  "pico",
      +  "rpicam",
      +  "uno",
      +  "mega",
      +  "jetson-orin-nano",
      +  "esp32-devkitc",
      +  "esp32-s3-devkitc",
      +  "xiao-esp32s3",
      +  "esp32-cam",
      +  "ipi-smarc-rb5",
      +  "esp32-devkit-v1-30",
      +  "esp32-38-wide",
      +  "esp32-38-narrow"
      +]
    • changedInput schema / properties / parts / items / properties / template / enum
      Previous value: -[
      -  "plate",
      -  "bracket",
      -  "spacer",
      -  "washer",
      -  "box",
      -  "tray",
      -  "tslot-bracket",
      -  "tslot-plate",
      -  "tslot-mount",
      -  "tslot-cap",
      -  "tslot-cover",
      -  "tslot-panel",
      -  "tslot-cable"
      -]New value: +[
      +  "plate",
      +  "bracket",
      +  "spacer",
      +  "washer",
      +  "box",
      +  "tray",
      +  "enclosure",
      +  "tslot-bracket",
      +  "tslot-plate",
      +  "tslot-mount",
      +  "tslot-cap",
      +  "tslot-cover",
      +  "tslot-panel",
      +  "tslot-cable"
      +]
  2. Changed5 schema fields changed
    • addedInput schema / properties / parts / items / properties / compartmentsX
      Added value: +{
      +  "description": "tray: compartments across (1 = none)",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / parts / items / properties / compartmentsY
      Added value: +{
      +  "description": "tray: compartments front to back (1 = none)",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / parts / items / properties / floor
      Added value: +{
      +  "description": "tray: floor thickness (mm)",
      +  "type": "number"
      +}
    • changedInput schema / properties / parts / items / properties / template / description
      Previous value: -"plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid; for T-slot aluminum extrusion (pick its profile): tslot-bracket = corner bracket, tslot-plate = joining plate, tslot-mount = mounting plate (bolts into a slot + the customer's own holes), tslot-cap = end cap / foot, tslot-cover = slot cover, tslot-panel = panel clip, tslot-cable = cable clip"New value: +"plate = flat plate with holes; bracket = L-bracket; spacer = spacer/standoff; washer; box = box with optional lift-off lid, sized by the inside; tray = open tray / bin / organizer sized by the OUTSIDE (width, depth, height), optional compartments; for T-slot aluminum extrusion (pick its profile): tslot-bracket = corner bracket, tslot-plate = joining plate, tslot-mount = mounting plate (bolts into a slot + the customer's own holes), tslot-cap = end cap / foot, tslot-cover = slot cover, tslot-panel = panel clip, tslot-cable = cable clip"
    • changedInput schema / properties / parts / items / properties / template / enum
      Previous value: -[
      -  "plate",
      -  "bracket",
      -  "spacer",
      -  "washer",
      -  "box",
      -  "tslot-bracket",
      -  "tslot-plate",
      -  "tslot-mount",
      -  "tslot-cap",
      -  "tslot-cover",
      -  "tslot-panel",
      -  "tslot-cable"
      -]New value: +[
      +  "plate",
      +  "bracket",
      +  "spacer",
      +  "washer",
      +  "box",
      +  "tray",
      +  "tslot-bracket",
      +  "tslot-plate",
      +  "tslot-mount",
      +  "tslot-cap",
      +  "tslot-cover",
      +  "tslot-panel",
      +  "tslot-cable"
      +]
  3. Changed3 schema fields changed
    • addedInput schema / properties / parts / items / properties / board
      Added value: +{
      +  "description": "plate/tslot-mount: a circuit board whose mounting holes ply places from the maker's drawing (rpi5 = Raspberry Pi 5, rpi4b = Raspberry Pi 4 Model B, rpi3bplus = Raspberry Pi 3 Model B+, rpizero2w = Raspberry Pi Zero 2 W / Zero W, pico = Raspberry Pi Pico, rpicam = Raspberry Pi Camera Module 3 / v2, uno = Arduino Uno (R3 / R4), mega = Arduino Mega 2560); also give width/depth (hole pattern + 12 mm), screw and, on tslot-mount, standoffHeight",
      +  "enum": [
      +    "none",
      +    "rpi5",
      +    "rpi4b",
      +    "rpi3bplus",
      +    "rpizero2w",
      +    "pico",
      +    "rpicam",
      +    "uno",
      +    "mega"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / parts / items / properties / holeStyle
      Added value: +{
      +  "description": "with screw: plain hole, screw threads into the plastic, counterbored, countersunk (flat head), hex nut pocket, or heat-set insert",
      +  "enum": [
      +    "clearance",
      +    "tap",
      +    "counterbore",
      +    "countersink",
      +    "nut",
      +    "insert"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / parts / items / properties / screw
      Added value: +{
      +  "description": "plate/bracket/tslot-mount: the screw the holes are for (ply sizes them; omit or custom = use holeDiameter)",
      +  "enum": [
      +    "custom",
      +    "M2",
      +    "M2.5",
      +    "M3",
      +    "M4",
      +    "M5",
      +    "M6",
      +    "M8",
      +    "M10",
      +    "M12",
      +    "#2",
      +    "#4",
      +    "#6",
      +    "#8",
      +    "#10",
      +    "1/4",
      +    "5/16",
      +    "3/8",
      +    "1/2"
      +  ],
      +  "type": "string"
      +}
  4. Added

TDQS

A4.4/5.0
Behavior4/5

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

Adds real context beyond the annotations: no charge occurs, the result is a link, and the remaining steps (shipping, payment, engineer review) happen on plyparts.com. The annotations already cover the safety profile (destructiveHint=false, idempotentHint=false), so the description's added value is the external handoff and no-charge guarantee; it does not warn that repeated calls create separate carts.

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

Conciseness5/5

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

Three short sentences with the action and source front-loaded, the input contract second, and the cost disclaimer last. Every sentence carries information and nothing is padded.

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

Completeness4/5

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

For a single-parameter cart-creation tool with no output schema, the description covers what it does, what it returns (a link), and that no money moves. The one relevant omission is that non-idempotent calls produce separate carts, though the annotation already flags that.

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 a genuine constraint on the 'parts' parameter: it must be the same list already priced via price_cart, linking the two calls. It says nothing about the 'thumbs' parameter, which the schema itself already instructs to leave empty.

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 ('Put every part from price_cart into one ply cart and get the link') and implicitly distinguishes itself from order_part (single part) and price_cart (pricing) by naming price_cart as its source. An agent can identify this as the multi-part checkout handoff without opening the schema.

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

Usage Guidelines4/5

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

Gives a clear prerequisite and input contract ('Pass the same parts list' from price_cart) and clarifies the boundary ('Nothing is charged here'), which tells the agent this is not the purchase step. It stops short of explicitly naming order_part as the single-part alternative or stating when not to use this instead.

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.

Resources