Skip to main content
Glama

Craft Quantities: construction material calculators

Create a request for quote to suppliers

create_supplier_quote_request
Read-onlyIdempotent

Creates a request for quote from a materials list or bill of materials (the lines of a takeoff, house, plan or calculation, or the reader's own): Markdown to paste, a CSV, the site's link a merchant opens to price it, and a My Project file. It carries no price and sends nothing to anyone.

Input Schema

NameRequiredDescriptionDefault
noteNoA note to the merchants: delivery address area, dates, access.
itemsYes
detailNofull (the default): the whole answer. summary: the result lines, the citation line and the page only — fewer tokens to read.full
marketNoOptional. A market whose own opening choice some inputs take (a UK reader's code, an IEC motor), and whose currency symbol prints the caller's own money figures.
projectNoThe project's name, as the merchants will see it.
currencyNoThe currency prices are asked in; left out, the market's.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "csv": {
      -        "required": [
      -          "filename",
      -          "mediaType",
      -          "content"
      -        ],
      -        "type": "object"
      -      },
      -      "currency": {
      -        "type": "string"
      -      },
      -      "dropped": {
      -        "type": "integer"
      -      },
      -      "engine": {
      -        "type": "object"
      -      },
      -      "file": {
      -        "required": [
      -          "filename",
      -          "mediaType",
      -          "content"
      -        ],
      -        "type": "object"
      -      },
      -      "howToImport": {
      -        "type": "string"
      -      },
      -      "howToSend": {
      -        "type": "string"
      -      },
      -      "licence": {
      -        "properties": {
      -          "attribution": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "name",
      -          "url",
      -          "attribution"
      -        ],
      -        "type": "object"
      -      },
      -      "link": {
      -        "description": "The site's request link: the merchant opens it, prices it in their own browser and sends a reply link back.",
      -        "type": "string"
      -      },
      -      "links": {
      -        "required": [
      -          "rfq",
      -          "project"
      -        ],
      -        "type": "object"
      -      },
      -      "markdown": {
      -        "description": "The request, to paste into a message.",
      -        "type": "string"
      -      },
      -      "notice": {
      -        "type": "string"
      -      },
      -      "project": {
      -        "type": "string"
      -      },
      -      "requestFile": {
      -        "required": [
      -          "filename",
      -          "mediaType",
      -          "content"
      -        ],
      -        "type": "object"
      -      },
      -      "rows": {
      -        "items": {
      -          "properties": {
      -            "label": {
      -              "type": "string"
      -            },
      -            "packName": {
      -              "type": "string"
      -            },
      -            "packSize": {
      -              "type": "number"
      -            },
      -            "packs": {
      -              "type": "number"
      -            },
      -            "quantity": {
      -              "type": "number"
      -            },
      -            "unit": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "label",
      -            "quantity",
      -            "unit"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "engine",
      -      "project",
      -      "currency",
      -      "rows",
      -      "markdown",
      -      "csv",
      -      "link",
      -      "howToSend",
      -      "requestFile",
      -      "file",
      -      "howToImport",
      -      "links",
      -      "licence",
      -      "notice"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "citation": {
      -        "description": "The one citation line, built from the answer's own data.",
      -        "type": "string"
      -      },
      -      "detail": {
      -        "const": "summary"
      -      },
      -      "lines": {
      -        "description": "The result lines, as the report's table gives them.",
      -        "items": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "more": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "notes": {
      -        "description": "What a professional must decide, when to call one, a false-friend warning, that adoption is local: kept in every summary.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "open": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "title": {
      -        "type": "string"
      -      },
      -      "tool": {
      -        "type": "string"
      -      },
      -      "url": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "detail",
      -      "tool",
      -      "title",
      -      "lines",
      -      "notes",
      -      "citation",
      -      "url",
      -      "open",
      -      "more"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "csv": {
      +        "required": [
      +          "filename",
      +          "mediaType",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "currency": {
      +        "type": "string"
      +      },
      +      "dropped": {
      +        "type": "integer"
      +      },
      +      "engine": {
      +        "type": "object"
      +      },
      +      "file": {
      +        "required": [
      +          "filename",
      +          "mediaType",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "howToImport": {
      +        "type": "string"
      +      },
      +      "howToSend": {
      +        "type": "string"
      +      },
      +      "licence": {
      +        "properties": {
      +          "attribution": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "url",
      +          "attribution"
      +        ],
      +        "type": "object"
      +      },
      +      "link": {
      +        "description": "The site's request link: the merchant opens it, prices it in their own browser and sends a reply link back.",
      +        "type": "string"
      +      },
      +      "links": {
      +        "required": [
      +          "rfq",
      +          "project"
      +        ],
      +        "type": "object"
      +      },
      +      "markdown": {
      +        "description": "The request, to paste into a message.",
      +        "type": "string"
      +      },
      +      "notice": {
      +        "type": "string"
      +      },
      +      "project": {
      +        "type": "string"
      +      },
      +      "requestFile": {
      +        "properties": {
      +          "schema": {
      +            "description": "The open JSON Schema the request file follows, for a supplier's own software.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "filename",
      +          "mediaType",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "rows": {
      +        "items": {
      +          "properties": {
      +            "label": {
      +              "type": "string"
      +            },
      +            "packName": {
      +              "type": "string"
      +            },
      +            "packSize": {
      +              "type": "number"
      +            },
      +            "packs": {
      +              "type": "number"
      +            },
      +            "quantity": {
      +              "type": "number"
      +            },
      +            "unit": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "label",
      +            "quantity",
      +            "unit"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "engine",
      +      "project",
      +      "currency",
      +      "rows",
      +      "markdown",
      +      "csv",
      +      "link",
      +      "howToSend",
      +      "requestFile",
      +      "file",
      +      "howToImport",
      +      "links",
      +      "licence",
      +      "notice"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "citation": {
      +        "description": "The one citation line, built from the answer's own data.",
      +        "type": "string"
      +      },
      +      "detail": {
      +        "const": "summary"
      +      },
      +      "lines": {
      +        "description": "The result lines, as the report's table gives them.",
      +        "items": {
      +          "additionalProperties": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "more": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "notes": {
      +        "description": "What a professional must decide, when to call one, a false-friend warning, that adoption is local: kept in every summary.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "open": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "detail",
      +      "tool",
      +      "title",
      +      "lines",
      +      "notes",
      +      "citation",
      +      "url",
      +      "open",
      +      "more"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Added

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, setting a low bar. The description still adds real value by resolving the tension created by the 'to suppliers' name: 'it carries no price and sends nothing to anyone', telling the agent this never dispatches anything externally.

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 the verb and resource, and the second short sentence carries the key behavioral caveat. The long parenthetical listing sources is dense but every clause is on-topic, so it stays reasonably tight.

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 explained, and annotations cover the safety profile. The description says what is created and that nothing is sent, leaving only sibling routing and downstream handling of the created quote unaddressed.

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 description coverage is 83%, so the schema already documents note, items, detail, market, project and currency well. The description's mention of 'Markdown to paste, a CSV, the site's link ... and a My Project file' does not map onto any of those parameters, adding little meaning to the actual argument surface.

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?

States a specific verb (creates) and resource (a request for quote) plus the inputs it accepts (materials list or bill of materials from a takeoff, house, plan, calculation, or the reader's own). It does not name or distinguish itself from siblings like import_quote or check_quote, so it stops short of a 5.

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?

The description explains what the tool produces but gives no when-to-use guidance, no prerequisites, and never names an alternative sibling (e.g. import_quote or check_quote) or the condition that would select it. An agent must infer the usage context on its own.

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