# GroundQuote

> Instant fence quotes: homeowners draw their fence on a map in chat; contractors get the lead.

- name: io.github.KilvingtonDigital/groundquote
- version: 1.3.1
- connection class: R2 (oauth_consent_once)
- trust: 97/100
- quality: 82/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.KilvingtonDigital%2Fgroundquote
- tools: https://api.protogrid.dev/v1/servers/io.github.KilvingtonDigital%2Fgroundquote/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "groundquote": {
      "type": "http",
      "url": "https://mcp.groundquote.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 82/100 (good)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 83 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- warn `auth.cimd`: only Dynamic Client Registration, deprecated in 2026-07-28 in favour of CIMD
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: create_contractor_account (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); set_branding (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_pricing_terms (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,555 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 12, about 2,555 tokens to load them all
- tool set hash: 0c900e5ebc83a80fc4d9afa82289f00c
- tools last changed: 2026-10-31T03:58:03.266Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.KilvingtonDigital/groundquote.svg)](https://protogrid.dev/servers/io.github.KilvingtonDigital/groundquote)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-31 `set_rental_pricing` added
  - For fence RENTAL companies (construction sites, events, security) rather than installers. Loads rental products priced in dollars per linear foot per period (day / week / month), the minimum term, per-rental gate charges, delivery and setup fees and optional add-ons (privacy screen, sandbag bases). Enables the rental option on the widget; leaves any installed-fence catalog untouched. Ask the company for real numbers; never invent them. Requires org_id and setup_claim from create_contractor_account.

Full history: https://api.protogrid.dev/v1/servers/io.github.KilvingtonDigital%2Fgroundquote/changes

## Remotes

- https://mcp.groundquote.com/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)

## Packages

_none_

## Tools (12)

- `check_account_status`: Shows whether the contractor has set their password yet (setup_link_pending), the current pricing summary, branding and install details. Requires org_id and setup_claim.
- `create_contractor_account`: Creates a GroundQuote account for a fence contractor and emails the contractor a link to set their own password (the email includes the pricing terms). Nothing is charged; no card is required. Returns org_id, slug, the embed snippet, terms_summary, and a setup_claim you must keep and pass to set_fence_pricing, set_branding, set_hosted_page, get_embed_code, check_account_status and resend_setup_email. Confirm the contractor has heard the pricing terms before calling. Use the contractor's own email as owner_email.
- `fetch`: Returns the full text of a documentation entry by id from search.
- `get_embed_code`: Returns the iframe HTML to paste into the contractor's site and the hosted-page URL. Requires org_id and setup_claim.
- `get_install_instructions`: Explains the two install paths (iframe embed on an existing site, or a GroundQuote-hosted page for contractors with no site), what works with AI site builders, and how account ownership works. Use before you promise the contractor anything about the install.
- `get_pricing_terms`: Read this first and relay it to the contractor before creating an account. Returns the plain-language pricing disclosure ($5 browsing lead, $15 high-intent lead, optional $150/month unlimited; nothing charged until the contractor unlocks a lead) and the guarantees. No inputs.
- `resend_setup_email`: Re-sends the contractor's set-password email (max 3 per day per account). Requires org_id and setup_claim.
- `search`: Searches GroundQuote's documentation (what it is, pricing, install, ownership, pricing format, rules for assistants). Returns ids to pass to fetch.
- `set_branding`: Sets logo, colors and font on the quote widget. Pass auto_fetch_from_url to read the logo and primary color from the contractor's existing site; explicit fields win over fetched values. Requires org_id and setup_claim.
- `set_fence_pricing`: Loads the contractor's price list. Rates are dollars per linear foot by material, then style, then height ("4 ft", "6 ft", "8 ft"). Gates are flat surcharges. Ask the contractor for real numbers; never invent them. Replaces the whole fence catalog each call. Requires org_id and setup_claim from create_contractor_account.
- `set_hosted_page`: For contractors without a website: turns on a branded page at groundquote.com/{slug} with headline, services and contact details. Requires org_id and setup_claim.
- `set_rental_pricing`: For fence RENTAL companies (construction sites, events, security) rather than installers. Loads rental products priced in dollars per linear foot per period (day / week / month), the minimum term, per-rental gate charges, delivery and setup fees and optional add-ons (privacy screen, sandbag bases). Enables the rental option on the widget; leaves any installed-fence catalog untouched. Ask the company for real numbers; never invent them. Requires org_id and setup_claim from create_contractor_account.
