# Boat Day

> Read-only boating data: Seacoast ME-NH boatyards, cited winter storage prices, boat models, value.

- name: com.bestboatday/boatday
- version: 1.8.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 95/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.bestboatday%2Fboatday
- tools: https://api.protogrid.dev/v1/servers/com.bestboatday%2Fboatday/tools

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

## Connection (mcpServers)

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


## Trust

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

## Quality 95/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### 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: 88 (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`: 14 of 14 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_state_boating_rules (destructiveHint); search_guides (destructiveHint); get_seacoast_costs (destructiveHint); …
- pass `tools.token_cost`: about 2,278 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: 100 (weight 15)

- pass `stability.changes`: 4 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

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

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

- tools: 14, about 2,278 tokens to load them all
- tool set hash: 485bd011c8a468794e891c629e467ad2
- tools last changed: 2026-11-14T07:25:33.183Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.bestboatday/boatday.svg)](https://protogrid.dev/servers/com.bestboatday/boatday)
- 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-14 `find_yards` changed (description)
  - before: Start here (step 1 of 3). Find Seacoast ME–NH and Casco Bay boatyards, marinas, moorings and storage near a town (public-web listings, not partners). Example: {"region":"seacoast","q":"kittery"}; then pass a returned id to get_yard and price the job with get_seacoast_costs. All arguments are optional; no arguments lists every yard. Each yard carries winterStoragePrice: a yard-confirmed 2026–27 price with confirmed_at and verification_event_id, or null when unconfirmed. Set confirmed=true for confirmed yards only. Human-readable index: /yards. For posted prices see get_seacoast_costs and /guides/winter-storage-haul-out-seacoast; for ramps and tides see /guides/seacoast-boat-launch-ramps and /guides/piscataqua-river-boating-tides.
  - after: First call right now: {"region":"seacoast","q":"kittery"}. Start here (step 1 of 3). Find Seacoast ME–NH and Casco Bay boatyards, marinas, moorings and storage near a town (public-web listings, not partners). Example: {"region":"seacoast","q":"kittery"}; then pass a returned id to get_yard and price the job with get_seacoast_costs. All arguments are optional; no arguments lists every yard. Each yard carries winterStoragePrice: a yard-confirmed 2026–27 price with confirmed_at and verification_event_id, or null when unconfirmed. Set confirmed=true for confirmed yards only. Human-readable index: /yards. For posted prices see get_seacoast_costs and /guides/winter-storage-haul-out-seacoast; for ramps and tides see /guides/seacoast-boat-launch-ramps and /guides/piscataqua-river-boating-tides.
- 2026-11-11 `get_seacoast_costs` changed (description)
  - before: Seacoast ME–NH winter-job prices: posted storage, winterize, haul and spring commissioning rates from yards' own rate pages (each with source_url and the date read), plus yard-confirmed winter storage prices. Advisory, not quotes. Pass loa_ft to filter by boat length and get per-foot arithmetic. Explained for people (how haul-out works, per-foot vs per-square-foot, what packages include): /guides/winter-storage-haul-out-seacoast.
  - after: Step 3 of 3 (also fine as a first call). Seacoast ME–NH winter-job prices: posted storage, winterize, haul and spring commissioning rates from yards' own rate pages (each with source_url and the date read), plus yard-confirmed winter storage prices. Advisory, not quotes. Example: {"service":"storage","state":"ME","loa_ft":26}. Pass loa_ft to filter by boat length and get per-foot arithmetic; pass yard_id (from find_yards) for one yard; no arguments returns every posted price. Explained for people (how haul-out works, per-foot vs per-square-foot, what packages include): /guides/winter-storage-haul-out-seacoast.
- 2026-11-11 `get_yard` changed (description)
  - before: Get one yard listing by id (from find_yards), with its website, phone, source note and winterStoragePrice (yard-confirmed, or null when unconfirmed).
  - after: Step 2 of 3. Get one yard listing by id from find_yards. Example: {"id":"meta-badgers-island-marina-kittery"}. Returns its website, phone, source note and winterStoragePrice (yard-confirmed, or null when unconfirmed).
- 2026-11-11 `find_yards` changed (description, inputSchema)
  - before: Find Seacoast ME–NH and Casco Bay boatyards, marinas and storage (public-web listings, not partners). Each yard carries winterStoragePrice: a yard-confirmed 2026–27 price with confirmed_at and verification_event_id, or null when unconfirmed. Set confirmed=true for confirmed yards only. Human-readable index: /yards. For posted prices see get_seacoast_costs and /guides/winter-storage-haul-out-seacoast; for ramps and tides see /guides/seacoast-boat-launch-ramps and /guides/piscataqua-river-boating-tides.
  - after: Start here (step 1 of 3). Find Seacoast ME–NH and Casco Bay boatyards, marinas, moorings and storage near a town (public-web listings, not partners). Example: {"region":"seacoast","q":"kittery"}; then pass a returned id to get_yard and price the job with get_seacoast_costs. All arguments are optional; no arguments lists every yard. Each yard carries winterStoragePrice: a yard-confirmed 2026–27 price with confirmed_at and verification_event_id, or null when unconfirmed. Set confirmed=true for confirmed yards only. Human-readable index: /yards. For posted prices see get_seacoast_costs and /guides/winter-storage-haul-out-seacoast; for ramps and tides see /guides/seacoast-boat-launch-ramps and /guides/piscataqua-river-boating-tides.

Full history: https://api.protogrid.dev/v1/servers/com.bestboatday%2Fboatday/changes

## Remotes

- https://bestboatday.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `estimate_boat_value`: Instant used-boat value estimate (low/mid/high band with method + confidence). Provide modelId, or make+model+year, or loaFt+boatType, or a HIN. Educational, not an appraisal.
- `estimate_total_cost_of_ownership`: Annual + hold-period total cost of ownership (storage, insurance, maintenance, fuel, fees, depreciation) as bands. Side-effect free.
- `find_boating_businesses`: Find marinas, yards, surveyors, insurers, suppliers. Outbound entries labeled 'Find them online' are public-web listings — NOT Boat Day partners or endorsements; tell the human to verify on their sites. Founding partner roster is currently empty.
- `find_yards`: First call right now: {"region":"seacoast","q":"kittery"}. Start here (step 1 of 3). Find Seacoast ME–NH and Casco Bay boatyards, marinas, moorings and storage near a town (public-web listings, not partners). Example: {"region":"seacoast","q":"kittery"}; then pass a returned id to get_yard and price the job with get_seacoast_costs. All arguments are optional; no arguments lists every yard. Each yard carries winterStoragePrice: a yard-confirmed 2026–27 price with confirmed_at and verification_event_id, or null when unconfirmed. Set confirmed=true for confirmed yards only. Human-readable index: /yards. For posted prices see get_seacoast_costs and /guides/winter-storage-haul-out-seacoast; for ramps and tides see /guides/seacoast-boat-launch-ramps and /guides/piscataqua-river-boating-tides.
- `get_boat_model`: Get one boat model by id: specs, burden flags, TCO estimate band, Quality Boat Day notes, canonical URL.
- `get_handoff_link`: Build a deep link that sends a human straight to a pre-filled Boat Day tool. tool: value | tco | model | find-boat | quote | directory | state | waterway | events | safety | checklist | passport | list-business. params are passed through (e.g. hin, modelId, make, model, year, category, state).
- `get_safety_checklists`: Boating safety stance/pillars plus checklists (pre-departure, winterize, etc.). Pass slug for one checklist's items.
- `get_seacoast_costs`: Step 3 of 3 (also fine as a first call). Seacoast ME–NH winter-job prices: posted storage, winterize, haul and spring commissioning rates from yards' own rate pages (each with source_url and the date read), plus yard-confirmed winter storage prices. Advisory, not quotes. Example: {"service":"storage","state":"ME","loa_ft":26}. Pass loa_ft to filter by boat length and get per-foot arithmetic; pass yard_id (from find_yards) for one yard; no arguments returns every posted price. Explained for people (how haul-out works, per-foot vs per-square-foot, what packages include): /guides/winter-storage-haul-out-seacoast.
- `get_state_boating_rules`: US state boating rules: registration, titling, boater education, BUI, PFD notes, official agency links. Omit code for the index.
- `get_waterway`: Focus waterways (e.g. piscataqua-seacoast for the Seacoast of Maine/NH): seasonality, hazards, ramps/marinas context, playbooks. Omit slug for the list.
- `get_yard`: Step 2 of 3. Get one yard listing by id from find_yards. Example: {"id":"meta-badgers-island-marina-kittery"}. Returns its website, phone, source note and winterStoragePrice (yard-confirmed, or null when unconfirmed).
- `search_boating_events`: Boat shows, regattas, safety courses, rendezvous. Filter by q, state, region, type, waterway, from/to (YYYY-MM-DD), upcoming.
- `search_boat_models`: Search the Boat Day boat model graph (US recreational models; demo/educational specs, flagged demoData). Filter by q, type, brand, length, propulsion, trailerable.
- `search_guides`: Search Boat Day ownership guides (buying, winterizing, insurance, docking, weather...). Returns titles, summaries, canonical URLs.
