Skip to main content
Glama

quote

Quote one merchant's service. Every quote is a record: it returns transaction_id, quote_id, job_version and state quoted (or quote_incomplete). Pass transaction_id to quote the same job again (its next version; everything asked for before is carried forward); on a booked job that quote is the change modify commits. A job that ended is never revived: quoting it starts a new job. Search already returns prices; a search price is not a promise and becomes a record only when held. status ready = one exact amount, breakdown, expires_at, quote_token; status incomplete = a needs list of inputs still missing (never a range). Call discover first to see each service's inputs. State every job condition that is true in inputs.conditions. A job the business does not take (its kind of home, largest home, or a condition it marked not taken) is refused in plain words. For a service priced by packages, send must-have tasks in inputs.addons. A task the business does not offer on its own is quoted only in a package that includes it. A ready quote's package.includes lists the tasks it covers. Includes bookable windows (allocation_id), each with the day and hour conditions the quote must state to hold it.

Input Schema

NameRequiredDescriptionDefault
scopeNoThe rooms the job covers: leave_out (rooms not to clean) or clean_only (the only rooms to clean), never both, by space.* key. Under a by_rooms price a room left out comes off the price; other prices do not change. Echoed on every answer and shown to the owner.
inputsNo
propertyNoThe home, stated once with the words at /api/v1/taxonomy/house_cleaning (property). Unknown or unclear words are refused with the word meant or the question to ask. Bedrooms, bathrooms (when there is no half bathroom) and square feet feed each price that uses them; no need to repeat them in inputs. A by_rooms price and a fixed price's limits read property.spaces only (state every kind the price counts, 0 included; a living area is living + family + formal living rooms).
service_keyYes
customer_refNoOptional. Your own label for your customer, so two customers with the same job are not the same job. Never shown to the owner.
merchant_slugYes
transaction_idNoQuote this job again: its next version.
idempotency_keyNoOptional. A retry with the same key returns the same quote.
special_requestsNoUp to 5 plain-text requests not on the word list. Always needs the owner's approval.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/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 so well: it discloses a state machine (quoted vs quote_incomplete / ready vs incomplete), the ready-quote payload (exact amount, breakdown, expires_at, quote_token), that incomplete returns a needs list and never a range, that jobs are never revived, and that declines are refused in plain words. It stops short of stating auth/permission requirements or retry/rate-limit behavior (idempotency is only in the schema).

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?

The core purpose and return contract are front-loaded in the first two sentences. The remainder is dense but each clause covers a distinct behavior (re-quoting, packages, refusals, windows), so little is filler. It is heavy and parenthetical, which taxes readability, but the length is largely justified by the tool's complexity.

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 complex, stateful quoting operation with no output schema, no annotations, and only 67% schema coverage, the description supplies the missing behavioral context: return states, refusal handling, package semantics, and bookable-window fields. It is close to complete, missing only secondary details like any required scoping/prerequisite checks beyond calling discover.

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 67%, so the description must add meaning, and it does: it clarifies transaction_id semantics (re-quote the same job), that all true job conditions must be stated in inputs.conditions, that package must-haves go in inputs.addons, and how scope/leave_out interacts with by_rooms pricing. It leaves some nested fields (surcharges, quantities, property.size) to the schema.

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?

The opening sentence names a specific verb and resource ('Quote one merchant's service') and immediately states the return contract (transaction_id, quote_id, job_version, state). It explicitly distinguishes itself from siblings: search 'returns prices' but 'a search price is not a promise', and a quote on a booked job 'is the change modify commits', separating it from search, modify, hold and book.

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

Usage Guidelines5/5

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

It gives concrete routing rules: pass transaction_id to re-quote the same job for its next version; call discover first to see each service's inputs; use inputs.addons for package-priced services; and it explains the search-vs-quote distinction. When-not conditions are also stated (ended jobs start a new job; business-declined jobs are refused).

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