# Nero Quote Builder

> VAT-correct trade quotes with a branded PDF and one-tap customer accept, for UK trades' AI

- name: io.github.Nero-Engine/quote-builder
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fquote-builder
- tools: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fquote-builder/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "quote-builder": {
      "type": "http",
      "url": "https://quote-builder.nerolabs.workers.dev/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-1d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 7,314 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 1 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 7,314 tokens to load them all
- tool set hash: 34556e4819a65174c131a2630ac25eb6
- tools last changed: 2026-11-13T05:56:12.980Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Nero-Engine/quote-builder.svg)](https://protogrid.dev/servers/io.github.Nero-Engine/quote-builder)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-13 `reply_to_customer` changed (description)
  - before: Answer a customer's question. The answer shows on their quote page under their question. Use revise_quote instead if the price or scope changes.
  - after: Answer a customer's question. The answer shows on their quote page under their question. Price or scope changes are made with revise_quote, not here.
- 2026-11-13 `quote_activity` changed (description)
  - before: What customers have done since the trade last checked: quotes opened, accepted (with the name they signed, extras ticked and final total), questions asked, declined. Marks them as seen unless mark_seen is false. Call this when the trade asks "any news on my quotes?".
  - after: What customers have done since the trade last checked: quotes opened, accepted (with the name they signed, extras ticked and final total), questions asked, declined. Marks them as seen unless mark_seen is false. Answers when the trade asks "any news on my quotes?".
- 2026-11-13 `setup_trade` changed (description)
  - before: Create a business, or update its saved settings (call with trade_key to update). Saves the rates and rules every quote uses: day and hour rates, labourer rate, materials markup, VAT registration and number, CIS, deposit rule, validity, payment terms, standard exclusions, brand colour, logo (https link or base64; PNG or JPEG for the PDF), quote number prefix, price book. On first call returns trade_key ONCE: store it securely, every other tool needs it. Also returns nero_trade_ref, the same identity the Nero Work exchange and Spark Pack use. Money in pounds.
  - after: Create a business, or update its saved settings (call with trade_key to update). Saves the rates and rules every quote uses: day and hour rates, labourer rate, materials markup, VAT registration and number, CIS, deposit rule, validity, payment terms, standard exclusions, brand colour, logo (https link or base64; PNG or JPEG for the PDF), quote number prefix, price book. On first call returns trade_key ONCE: it is shown only once and every other tool needs it. Also returns nero_trade_ref, the same identity the Nero Work exchange and Spark Pack use. Money in pounds.

Full history: https://api.protogrid.dev/v1/servers/io.github.Nero-Engine%2Fquote-builder/changes

## Remotes

- https://quote-builder.nerolabs.workers.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (11)

- `draft_quote`: Price a job after a site visit. Give the job, customer, labour (time, priced from the saved rate), materials (trade cost, marked up), other costs and optional extras; the server applies VAT correctly (registered or not, 20/5/0%, the construction domestic reverse charge for contractor customers), the deposit rule, validity, exclusions and a running quote number. Returns the totals, the trade-only margin view, warnings, a check_before_sending list of commonly forgotten items for that trade, and the links to the PDF and the customer's phone page (a DRAFT until finalise_quote). from_quote copies a past quote's lines for a new customer. save false returns the numbers without saving.
- `export_to_nero_work`: The quote in the exact argument shape of the Nero Work exchange's submit_quote tool (labour_minor, materials_minor, vat_minor in pence, validity_hours, exclusions, notes), checked with Nero Work's own rules. If the customer accepted with extras, they are included.
- `finalise_quote`: Lock a draft so the customer can answer it. Sets today's date and the valid-until date, and returns the customer link, the PDF link and a short ready-to-send message. Nothing is sent by this server: the trade sends the link by their own text, WhatsApp or email. Free allowance: 5 finalised quotes per calendar month (UK time) per trade, shown as free_allowance in the answer and in get_trade; past it the quote stays a saved draft and can be finalised from the 1st of next month. Drafts, revisions of quotes already sent, replies and exports never count.
- `get_quote`: One quote in full: lines, totals, VAT working with HMRC sources, margins (trade only), the customer's answer, history (drafted, sent, opened, accepted) and links.
- `get_trade`: The trade's saved settings, price book (most used first), quote stats (win rate, value won in the last 12 months) and, for a business that is not VAT registered, a warning when accepted work is nearing the £90,000 VAT registration threshold.
- `list_quotes`: Recent quotes, newest first, with status (draft, sent, viewed, queried, accepted, declined, expired, withdrawn), total and whether there is news. Filter by status or search customer name, job title or number.
- `quote_activity`: What customers have done since the trade last checked: quotes opened, accepted (with the name they signed, extras ticked and final total), questions asked, declined. Marks them as seen unless mark_seen is false. Answers when the trade asks "any news on my quotes?".
- `reply_to_customer`: Answer a customer's question. The answer shows on their quote page under their question. Price or scope changes are made with revise_quote, not here.
- `revise_quote`: Change a quote. Send only the fields that change (a list you send, such as materials, replaces that whole list). A draft stays a draft. A quote the customer already has becomes the next revision on the same link, with fresh dates, and any earlier answer is cleared. Accepted quotes cannot change. status "withdrawn" pulls a quote. use_current_settings true re-prices with the trade's latest rates.
- `save_price_items`: Add or update materials in the trade's price book, so later quotes can use { code, qty } and the cost, unit and markup fill in. Materials used in quotes are also remembered automatically.
- `setup_trade`: Create a business, or update its saved settings (call with trade_key to update). Saves the rates and rules every quote uses: day and hour rates, labourer rate, materials markup, VAT registration and number, CIS, deposit rule, validity, payment terms, standard exclusions, brand colour, logo (https link or base64; PNG or JPEG for the PDF), quote number prefix, price book. On first call returns trade_key ONCE: it is shown only once and every other tool needs it. Also returns nero_trade_ref, the same identity the Nero Work exchange and Spark Pack use. Money in pounds.
