Skip to main content
Glama

Make Parts Now: 3D Printing & CNC Machining Quotes

get_quote

Read-onlyIdempotent

Current pricing, speeds, shipping options, warnings and next_steps for a quote.

Input Schema

NameRequiredDescriptionDefault
quote_idYesQuote id (qt_...) returned by create_quote

Output Schema

NameRequiredDescriptionDefault
idYesQuote id (qt_...)
itemsYesLines: {id, position, part, config, quantity, notes, review_status, review_note, pricing, snapshot_url, action_needed?}
readyYesTrue when the quote can be paid
speedNoChosen production speed: economy, standard, fast, faster or fastest
tiersNoOne entry per speed: price, ship-by and arrive-by dates, eligibility
numberNoQuote number shown on the PDF and the website
statusNoopen, ordered or expired (discarded or past its date)
totalsNoTotals for the chosen speed, including total_before_tax
ship_toNoShipping address {name, company?, line1, line2?, city, state, postal_code, country, phone?}
blockingNoWhat stops the quote from being ready: {item_id, state, detail}
tax_noteNoSales tax is added at checkout
min_orderNoOrder minimum in dollars
po_numberNoYour purchase order number
share_urlNoThe quote's page on makepartsnow.com, to show a person the parts and prices
created_atNoISO 8601
expires_atNoISO 8601. Prices hold until then; a later read re-prices at live rates
next_stepsYesPlain-English instructions for what to do next
share_tokenNoToken of the quote's share link, {base}/quotes/share/{share_token}
needs_reviewNoTrue while a part waits for manual review; payment is blocked until then
contact_emailNoEmail for receipts and order updates
shipping_choiceNoId of the chosen shipping option
rate_set_versionNoVersion of the price list the quote was priced with
shipping_optionsNoCarrier options for ship_to; choose one with shipping_option
free_shipping_remainingNoDollars more to reach free shipping (0 when reached)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / share_url
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The quote's page on makepartsnow.com, to show a person the parts and prices",
      +  "title": "Share Url"
      +}
  2. Changed4 schema fields changed
    • addedOutput schema / description
      Added value: +"A priced quote. Fields can be added; none is removed or renamed within v1."
    • addedOutput schema / properties
      Added value: +{
      +  "blocking": {
      +    "anyOf": [
      +      {
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "What stops the quote from being ready: {item_id, state, detail}",
      +    "title": "Blocking"
      +  },
      +  "contact_email": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Email for receipts and order updates",
      +    "title": "Contact Email"
      +  },
      +  "created_at": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "ISO 8601",
      +    "title": "Created At"
      +  },
      +  "expires_at": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "ISO 8601. Prices hold until then; a later read re-prices at live rates",
      +    "title": "Expires At"
      +  },
      +  "free_shipping_remaining": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Dollars more to reach free shipping (0 when reached)",
      +    "title": "Free Shipping Remaining"
      +  },
      +  "id": {
      +    "description": "Quote id (qt_...)",
      +    "title": "Id",
      +    "type": "string"
      +  },
      +  "items": {
      +    "description": "Lines: {id, position, part, config, quantity, notes, review_status, review_note, pricing, snapshot_url, action_needed?}",
      +    "items": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "title": "Items",
      +    "type": "array"
      +  },
      +  "min_order": {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Order minimum in dollars",
      +    "title": "Min Order"
      +  },
      +  "needs_review": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "True while a part waits for manual review; payment is blocked until then",
      +    "title": "Needs Review"
      +  },
      +  "next_steps": {
      +    "description": "Plain-English instructions for what to do next",
      +    "items": {
      +      "type": "string"
      +    },
      +    "title": "Next Steps",
      +    "type": "array"
      +  },
      +  "number": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Quote number shown on the PDF and the website",
      +    "title": "Number"
      +  },
      +  "po_number": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Your purchase order number",
      +    "title": "Po Number"
      +  },
      +  "rate_set_version": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Version of the price list the quote was priced with",
      +    "title": "Rate Set Version"
      +  },
      +  "ready": {
      +    "description": "True when the quote can be paid",
      +    "title": "Ready",
      +    "type": "boolean"
      +  },
      +  "share_token": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Token of the quote's share link, {base}/quotes/share/{share_token}",
      +    "title": "Share Token"
      +  },
      +  "ship_to": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Shipping address {name, company?, line1, line2?, city, state, postal_code, country, phone?}",
      +    "title": "Ship To"
      +  },
      +  "shipping_choice": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Id of the chosen shipping option",
      +    "title": "Shipping Choice"
      +  },
      +  "shipping_options": {
      +    "anyOf": [
      +      {
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Carrier options for ship_to; choose one with shipping_option",
      +    "title": "Shipping Options"
      +  },
      +  "speed": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Chosen production speed: economy, standard, fast, faster or fastest",
      +    "title": "Speed"
      +  },
      +  "status": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "open, ordered or expired (discarded or past its date)",
      +    "title": "Status"
      +  },
      +  "tax_note": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Sales tax is added at checkout",
      +    "title": "Tax Note"
      +  },
      +  "tiers": {
      +    "anyOf": [
      +      {
      +        "items": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "One entry per speed: price, ship-by and arrive-by dates, eligibility",
      +    "title": "Tiers"
      +  },
      +  "totals": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null,
      +    "description": "Totals for the chosen speed, including total_before_tax",
      +    "title": "Totals"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "id",
      +  "items",
      +  "ready",
      +  "next_steps"
      +]
    • changedOutput schema / title
      Previous value: -"get_quoteDictOutput"New value: +"QuoteView"
  3. First observed

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The description does add genuinely useful context by revealing that the payload carries warnings and next_steps (i.e. actionable state), but says nothing about freshness/staleness, quote expiry, or auth needs.

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?

A single front-loaded fragment that lists the returned fields with zero filler. It is compact and earns its place, though it is a bare fragment rather than a structured sentence.

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?

An output schema exists so return values need not be spelled out, one required parameter is fully documented in the schema, and annotations carry the safety profile. The remaining gap is the absence of usage routing versus list_quotes/update_quote, which is minor given the surrounding coverage.

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% and the sole parameter quote_id is documented in the schema, including its qt_ prefix and origin. The description adds no parameter detail, so the baseline of 3 for high-coverage schemas applies.

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

Purpose4/5

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

The description names the resource (a quote) and enumerates the specific content returned: pricing, speeds, shipping options, warnings and next_steps. An agent can tell it is a single-quote retrieval rather than a listing, but it never explicitly contrasts with siblings like list_quotes or get_order.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no alternative named. The only routing signal ('quote_id returned by create_quote') lives in the schema, not the description, so the description itself leaves usage 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.

Resources