Skip to main content
Glama

set_estimate_settings

Sets tax, overhead, and profit markups plus proposal text and client info so OpenTakeoff estimates and exports use the correct bid terms.

Instructions

The project's markups, proposal text and client — the canvas's estimate_settings, bid_proposal and client_info. Markups: tax_pct (sales tax on material), overhead_pct (on material + labor + tax), profit_pct with profit_mode markup (× (1 + p)) or margin (÷ (1 − p); 33.33% margin is ×1.5). proposal: itemized (a sell price on each scope line, the base bid allocated to the cent) or lump sum, scope_note, inclusions / exclusions (one per line), terms, valid_days. client: who the proposal is for. Only what you pass changes; an empty client string clears that field. Until markups are set the estimate prices at 0% — say so rather than assume a number. Every price comes from the estimator or a document they gave you — never invent, estimate or 'typical' one; a price nobody entered stays unentered and estimate_summary names it. Rides export_takeoff; undo_last reverses the call.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "set_estimate_settings"
  }
}

Input Schema

NameRequiredDescriptionDefault
clientNo
tax_pctNo
proposalNo
profit_pctNo
profit_modeNo
overhead_pctNo

Output Schema

NameRequiredDescriptionDefault
client_infoYes
bid_proposalYes
estimate_settingsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv0.1.31
    • removedInput schema / additionalProperties
      Removed value: -false
    • removedInput schema / properties / client / additionalProperties
      Removed value: -false
    • removedInput schema / properties / proposal / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / bid_proposal / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / client_info / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / estimate_settings / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {
      -      "overhead_pct": {
      -        "type": "number"
      -      },
      -      "profit_mode": {
      -        "enum": [
      -          "markup",
      -          "margin"
      -        ],
      -        "type": "string"
      -      },
      -      "profit_pct": {
      -        "type": "number"
      -      },
      -      "tax_pct": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "tax_pct",
      -      "overhead_pct",
      -      "profit_pct",
      -      "profit_mode"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "overhead_pct": {
      +        "type": "number"
      +      },
      +      "profit_mode": {
      +        "enum": [
      +          "markup",
      +          "margin"
      +        ],
      +        "type": "string"
      +      },
      +      "profit_pct": {
      +        "type": "number"
      +      },
      +      "tax_pct": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "tax_pct",
      +      "overhead_pct",
      +      "profit_pct",
      +      "profit_mode"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Addedv0.1.29

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: partial-update semantics ('Only what you pass changes'), a clearing rule ('an empty client string clears that field'), the 0% default before markups exist, reversibility via undo_last, and a data-provenance constraint forbidding invented prices. It still leaves permission requirements, validation behavior for out-of-range or conflicting values, and the meaning of 'Rides export_takeoff' unstated.

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 target state, and every clause adds real information — the margin/markup formulas and the provenance rule are high-value. It is dense to the point of terseness in places, using fragments and an opaque clause ('Rides export_takeoff') that reads as shorthand rather than guidance.

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 six-parameter mutation tool with nested objects, zero annotations, and an output schema that handles return values, the description is nearly complete: it covers field meaning, partial-update semantics, defaults, and recovery. Remaining gaps are the unclear export_takeoff relationship and the absence of any prerequisite or ordering guidance relative to export_proposal/export_estimate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is effectively 0% for the six top-level parameters, and the description compensates on almost every one: tax_pct is tax on material, overhead_pct compounds on material + labor + tax, profit_pct's meaning depends on profit_mode with the actual formulas given (×(1+p) vs ÷(1−p), 33.33% margin = ×1.5), itemized means a sell price per scope line with the base bid allocated, and inclusions/exclusions are one per line. Only terms and valid_days are left to their self-evident names.

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 exact resources being configured (estimate_settings markups, bid_proposal text, client_info) and enumerates the fields, so an agent knows precisely what state the call touches. It does not, however, distinguish itself from the sibling set_pricing, which is the most likely confusion point for an agent choosing between the two.

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

Usage Guidelines3/5

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

Usage context is implied rather than stated: 'Until markups are set the estimate prices at 0%' and 'a price nobody entered stays unentered and estimate_summary names it' tell the agent what to expect and say to the user, and 'undo_last reverses the call' names a recovery path. There is no explicit when-to-use/when-not, no prerequisite ordering (e.g., call before export_proposal), and no routing versus set_pricing or export_estimate.

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