Skip to main content
Glama

fulfillment_quote

Get a manufacturing quote for a 3D model from Craftcloud's print network, showing price, lead time, shipping, and fees before you place an order.

Instructions

Get a manufacturing quote for a 3D model from Craftcloud.

        Args:
            file_path: Absolute path to the model file (STL, 3MF, OBJ).
            material_id: Material ID from ``fulfillment_materials``.
            quantity: Number of copies to print (default 1).
            shipping_country: ISO country code for shipping (default "US").
            jurisdiction: Buyer's tax region (e.g. ``"US-CA"``, ``"DE"``),
                for a total with tax.  On an install that orders through
                Kiln's servers it is pinned to the quote here, so the
                order is taxed as the quote said; a local order service
                takes it at ``fulfillment_order`` instead.
            business_tax_id: The buyer's business tax id (EU VAT, AU ABN)
                for a reverse-charge order; pinned the same way.

        Uploads the model, returns pricing from Craftcloud's network of 150+
        print services, including unit price, total, lead time, and shipping
        options. A Kiln orchestration fee is shown separately so
        the user sees the full cost before committing.

        If a payment method is linked, a hold is placed on the fee amount
        at quote time (Stripe auth-and-capture).  The hold is captured
        when the order is placed via ``fulfillment_order``, or released
        if the user doesn't proceed.

        The reply opens with ``tell_the_person``: the price and what it
        is made of, timing, what more copies would cost, and the print
        service's order terms with a link to them, already worded for
        the person. Pass every line on to them word for word, in order,
        before they decide; do not summarise, shorten or drop any.
        ``quote.price_sheet`` holds the same numbers as data.

        Use the returned ``quote_id`` with ``fulfillment_order`` to place the
        order.  On an install that orders through Kiln's servers the
        reply also carries ``quote_token``; Kiln keeps it beside the
        quote, and ``fulfillment_order`` accepts it too.
        

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": {
      "file_path": "<file_path>",
      "material_id": "<material_id>"
    },
    "name": "fulfillment_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
quantityNoNumber of copies to print (default 1). Default: 1.
file_pathYesAbsolute path to the model file (STL, 3MF, OBJ).
material_idYesMaterial ID from ``fulfillment_materials``.
jurisdictionNoBuyer's tax region (e.g. ``"US-CA"``, ``"DE"``), for a total with tax. On an install that orders through Kiln's servers it is pinned to the quote here, so the order is taxed as the quote said; a local order service takes it at ``fulfillment_order`` instead. Default: "".
business_tax_idNoThe buyer's business tax id (EU VAT, AU ABN) for a reverse-charge order; pinned the same way. Default: "".
shipping_countryNoISO country code for shipping (default "US"). Default: "US".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.5.1
    • addedInput schema / properties / business_tax_id
      Added value: +{
      +  "description": "The buyer's business tax id (EU VAT, AU ABN) for a reverse-charge order; pinned the same way. Default: \"\".",
      +  "title": "Business Tax Id",
      +  "type": "string"
      +}
    • addedInput schema / properties / file_path / description
      Added value: +"Absolute path to the model file (STL, 3MF, OBJ)."
    • addedInput schema / properties / jurisdiction
      Added value: +{
      +  "description": "Buyer's tax region (e.g. ``\"US-CA\"``, ``\"DE\"``), for a total with tax.  On an install that orders through Kiln's servers it is pinned to the quote here, so the order is taxed as the quote said; a local order service takes it at ``fulfillment_order`` instead. Default: \"\".",
      +  "title": "Jurisdiction",
      +  "type": "string"
      +}
    • addedInput schema / properties / material_id / description
      Added value: +"Material ID from ``fulfillment_materials``."
    • changedInput schema / properties / quantity / description
      Previous value: -"Default: 1."New value: +"Number of copies to print (default 1). Default: 1."
    • changedInput schema / properties / shipping_country / description
      Previous value: -"Default: \"US\"."New value: +"ISO country code for shipping (default \"US\"). Default: \"US\"."
  2. Changed4 schema fields changedv1.5.0
    • removedInput schema / properties / quantity / default
      Removed value: -1
    • addedInput schema / properties / quantity / description
      Added value: +"Default: 1."
    • removedInput schema / properties / shipping_country / default
      Removed value: -"US"
    • addedInput schema / properties / shipping_country / description
      Added value: +"Default: \"US\"."
  3. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

Goes far past the annotations: it discloses that the model is uploaded to a third party, that pricing comes from 150+ print services, that a Kiln orchestration fee is shown separately, and — most importantly — that a Stripe auth-and-capture hold is placed on the fee at quote time and is either captured by fulfillment_order or released. That side effect is invisible in the schema and would be a genuine surprise without this text. The only tension is openWorldHint=false while the tool clearly reaches an external manufacturing network, though the readOnlyHint=false / destructiveHint=false pair is consistent with a non-destructive but stateful quote.

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

Conciseness3/5

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

The behavioral paragraphs are front-loaded and dense with useful information, but the six-line Args block duplicates the input schema word for word and is pure waste in a definition this long. The tell_the_person instruction is verbose yet earns its place because it constrains how the agent presents the result.

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?

With no output schema, the description carries the full burden of describing the return and does so: tell_the_person prose, quote.price_sheet data, quote_id, and quote_token, plus what the pricing actually contains (unit price, total, lead time, shipping options). Nothing an agent needs in order to call this and hand the result to a user is missing.

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 Args block is a near-verbatim restatement of the schema descriptions, so it adds essentially nothing. The one piece of genuine added meaning — that jurisdiction and business_tax_id are pinned at quote time on Kiln-hosted installs but taken at fulfillment_order on a local order service — is also already present in the schema text. Baseline 3 for full schema coverage with no net new parameter guidance.

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?

Opens with a specific verb and resource ("Get a manufacturing quote for a 3D model from Craftcloud") and names the provider, which separates it from the many in-house cost tools among the siblings (estimate_cost, print_service_quote, slice_and_estimate). It also names the upstream dependency (fulfillment_materials) and the downstream consumer (fulfillment_order), so the agent can place it in a workflow without opening another 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?

States clearly when to reach for it downstream ("Use the returned quote_id with fulfillment_order to place the order") and where material_id comes from. What is missing is an explicit exclusion against the near-neighbours — print_service_quote, get_fulfillment_quote_cached, estimate_price — so the agent must infer that this is the live Craftcloud path rather than a cached or generic estimate.

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

Deploy Server

Other Tools