Skip to main content
Glama

Create estimate

create_estimate

Create a new estimate (quote) for a customer. Look up the customer with list_customers first. For each line, use list_products and pass the productId when the product is in the catalog; otherwise omit productId and give name, price and quantity for a one-off line. Lines print in the order given. Options left out use the organization's invoice settings where one exists, otherwise none (no expiry date, discount, tax, shipping or footer). pdfUrl is a private, signed download link that expires at pdfUrlExpiresAt (1 hour). Give it to the user to open or download the PDF; don't put it in emails, notes, or anything that has to keep working.

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": {
      "customerId": "<customerId>",
      "customerName": "<customerName>",
      "items": "<items>"
    },
    "name": "create_estimate"
  }
}

Input Schema

NameRequiredDescriptionDefault
itemsYesEstimate lines, printed in this order. Mix catalog products and one-off lines freely.
footerNoFooter printed at the bottom of every page. Plain text or simple HTML (p, br, h1-h3, strong, em, u, s, a, ul, ol, li, span with color or text-align); other markup and scripts are removed. An empty string means no footer.
taxRateNoTax rate value e.g. 10 for 10% or fixed amount (default: 0)
taxTypeNoTax type: PERCENT for percentage-based, FIXED for flat amount (default: PERCENT)
currencyNoCurrency code like USD, EUR (from org settings if omitted)
discountNoDiscount as a fixed amount (default: 0)
languageNoLanguage of the printed labels and title. One of: en (English), de (German), fr (French), es (Spanish), pt (Portuguese), it (Italian), ar (Arabic), zh (Chinese), ja (Japanese), kr (Korean), tr (Turkish), az (Azerbaijani)
templateNoPDF design: regular (Regular), bold-professional (Bold Professional), tech-minimal (Mono), startup-modern (Startup Modern)
issueDateNoIssue date as ISO string (defaults to today)
projectIdNoProject ID to link the estimate to
customerIdYesCustomer ID (from list_customers)
dateFormatNoHow dates print. 'Month DD, YYYY' prints December 31, 2025; 'Mon DD, YYYY' prints Dec 31, 2025; 'DD Mon YYYY' prints 31 Dec 2025
endMessageNoNote to the customer printed after the totals
invoiceModeNoEstimate mode: PRODUCT for goods/services with quantities, HOURLY for time-based billing with hours (default: PRODUCT)
taxIncludedNoWhether tax is already included in item prices (default: false)
assignedToIdNoEmployee ID to assign the estimate to
customFieldsNoAdditional custom fields as label-value pairs, printed in this order
customerNameYesThe customer's name as returned by list_customers, echoed back for confirmation. The estimate uses customerId.
invoiceTitleNoDocument title printed at the top, e.g. QUOTE (defaults to the translated word for 'Estimate')
shippingCostNoShipping cost (default: 0)
currencyFormatNoHow amounts print: NARROW_SYMBOL ($1,234.50), SYMBOL (US$1,234.50), CODE (USD 1,234.50), NAME (1,234.50 US dollars), ACCOUNTING (($1,234.50) for negatives)
estimateNumberNoCustom estimate number, unique in the organization (auto-generated if omitted)
termsOfPaymentNoPayment terms or conditions shown on the estimate e.g. '50% upfront'
validUntilDateNoDate the estimate expires, as ISO string (no expiry date if omitted)

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: omitted options fall back to organization invoice settings or none, line ordering is preserved, and the returned PDF link is private, signed, and expires in one hour. The warning not to place that link in emails or persistent notes is especially useful and is not available in structured fields.

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?

The description is front-loaded with the core action, then moves through dependent lookups, line construction, defaults, and the PDF-link constraint. Every sentence carries operational value, and there is no filler.

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 24-parameter create tool with no output schema, it covers the highest-risk behaviors: required customer lookup, mixed catalog/one-off lines, default inheritance, and PDF return handling. It does not describe other response fields or edge cases, but the full schema coverage fills most parameter-level gaps.

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 schema already documents most parameters. The description still adds important cross-parameter meaning: productId should be used for catalog products, while one-off lines omit it and supply name, price, and quantity; omitted options inherit organization settings or no value.

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: "Create a new estimate (quote) for a customer." It is immediately clear that this tool creates an estimate document rather than retrieving, updating, or deleting one.

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 concrete workflow guidance: look up the customer with list_customers first, and use list_products for catalog lines. It does not explicitly compare this against related creation tools like create_invoice or update_estimate, leaving that distinction to the resource name.

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