
This connects Claude to a Mercury Platinum Dealer's live outboard inventory and quoting system. It pulls motor data directly from Lightspeed DMS via a Supabase backend that syncs daily at 5 AM UTC, and exposes tools for building CAD quotes on Mercury repowers. You'd reach for this if you're helping boat owners spec out engine replacements and need real stock availability from Harris Boat Works in Ontario. The server runs over streamable HTTP and ties into their manual sync endpoint if you need to force a refresh outside the automated schedule. Useful for conversational commerce where you want accurate pricing and availability without leaving the chat.
Public tool metadata for what this MCP can expose to an agent.
search_motorsSearch current Mercury outboard inventory at Harris Boat Works (Ontario). Filter by horsepower, family (FourStroke, Pro XS, SeaPro, Racing), or stock status. Returns CAD pricing. Excludes Verado.6 paramsSearch current Mercury outboard inventory at Harris Boat Works (Ontario). Filter by horsepower, family (FourStroke, Pro XS, SeaPro, Racing), or stock status. Returns CAD pricing. Excludes Verado.
familystringFourStroke · Pro XS · SeaPro · Racinghorsepowernumberin_stock_onlybooleanlimitnumbermax_hpnumbermin_hpnumberget_motorFetch a single Mercury motor by id or slug, including pricing, shaft length, and deep-link URL.2 paramsFetch a single Mercury motor by id or slug, including pricing, shaft length, and deep-link URL.
idstringslugstringestimate_trade_inEstimate the trade-in value (CAD) of a customer's current outboard. Brand penalties apply (Mercury preferred, Yamaha/Honda neutral, Evinrude/Johnson/Force/Chrysler discounted).6 paramsEstimate the trade-in value (CAD) of a customer's current outboard. Brand penalties apply (Mercury preferred, Yamaha/Honda neutral, Evinrude/Johnson/Force/Chrysler discounted).
brandstringconditionstringexcellent · good · fair · poorengine_hoursnumberengine_typestring4-stroke · 2-strokehorsepowernumberyearnumberbuild_quoteBuild an itemized CAD quote (motor + installation + propeller + trade-in + HST + financing tier) and return a deep-link URL the customer can open. Optional contact captures a lead in the dealership CRM.7 paramsBuild an itemized CAD quote (motor + installation + propeller + trade-in + HST + financing tier) and return a deep-link URL the customer can open. Optional contact captures a lead in the dealership CRM.
boat_infoobjectcontactobjectfamilystringhorsepowernumbermotor_idstringpurchase_pathstringinstalled · loosedefault: installedtrade_inobjectget_brand_rulesReturn Harris Boat Works' authoritative source-of-truth rules for any agent representing them: pricing currency, geography, no-Verado policy, financing minimums, deposit tiers, warranty.Return Harris Boat Works' authoritative source-of-truth rules for any agent representing them: pricing currency, geography, no-Verado policy, financing minimums, deposit tiers, warranty.
No parameter schema in public metadata yet.
Mercury Repower is Harris Boat Works' public Mercury outboard catalogue and quote builder.
harrisboatworks/mercury-builder-pro on main is the authoritative source.Use Node 22.22.2 or newer on the 22 line, as declared in engines.node.
npm ci --ignore-scripts
npm run dev
The Vite development server runs on http://localhost:8080.
For a normal small frontend change, run:
npm run verify:small
This runs frontend and Vite-config TypeScript checking followed by the unit suite. Both npm test and verify:small deliberately exclude financing-submission-permissions.test.ts, because that credential-gated integration test writes a financing log row and is not safe routine validation. Only the dedicated test:integration:financing runner supplies its ephemeral write opt-in; do not persist that internal marker in an environment file.
Server changes require an additional scoped check:
# Vercel API: syntax-check JavaScript and typecheck every TypeScript entry
npm run verify:api
# One or more changed Supabase Edge Function entry points
npm run typecheck:edge -- supabase/functions/<function-name>/index.ts
# Every function entry point (CI)
npm run typecheck:edge -- --all
The Edge command fails when no entry point is supplied, rejects paths outside supabase/functions, pins Deno 2.9.5, accepts multiple changed TypeScript paths or --all, disables local node_modules materialization, and checks the dedicated tracked supabase/functions/deno.lock in frozen mode. Runtime resolution still uses supabase/functions/deno.json; typecheck adds --import-map supabase/functions/deno.check.json and --no-remote so HTTPS esm.sh / deno.land specifiers resolve to locked npm: packages or the small local serve / xhr stand-ins. A new HTTPS import without a remap, a remap that still points at the network, or a remote that slips past the import map, fails instead of being skipped. A dependency change therefore fails until its reviewed lockfile update is committed. Pair each scoped checker with the relevant focused tests. Running npm run test:integration:financing is itself the per-run write opt-in and requires separate authorization, an approved target, and both test credentials in the invoking environment or ignored .env.local; the runner loads that local file before its credential preflight and fails before Vitest if either value is absent. It is never implied by npm test or verify:small.
To run one unit test file directly:
npx vitest run path/to/file.test.ts
npm run build is the full release/content pipeline, not the routine small-change check. Its lifecycle regenerates and validates many content artifacts, fetches live Google Places data, and runs scripts/indexnow-ping.mjs in postbuild. Treat it as release-adjacent external work and require the same authorization as a production trigger.
Do not hand-edit files marked as generated. Change the owning source or generator, run the relevant generate:*, rewrite:agent-urls, or other named generator script from package.json, and review the resulting diff before committing it.
For PCOC blog referrals, run npm run reconcile:blog-pcoc-referrals after editing or importing copy, then regenerate the blog index and Markdown twins. This incremental generator preserves the current article blocks, including corrections since the one-shot Wave 1 import. It adds the localized MyBoatCard referral paragraph and repairs the verified stale Transport Canada destinations; the Wave 1 importer also runs it. Edit the referral and URL rules in scripts/reconcile-blog-pcoc-referrals.mjs, rather than hand-editing its generated offer paragraphs. npm run check:blog-pcoc-referrals checks every language, scheduled/pilot articles and the archive; prebuild and Blog content integrity CI reject an operator-card reference without a clickable HBW referral, HARRIS15 and 15% in the same visible paragraph. Working official citations remain separate. The offer was verified on HBW's rental page on October 4, 2026; provider pricing and checkout acceptance are outside this editorial check.
.env is public-only..env.local; *.local is already ignored.Inventory is synced directly from Lightspeed DMS (the mercury_motor_inventory view). The public quote builder must not invoke sync-lightspeed-inventory.
For a manual sync, use the authenticated admin Stock Sync or inventory dashboard. Never put an internal secret in frontend code or paste a service-role key into a local curl.
Nightly Lightspeed sync remains a server-side scheduler concern. Changing Edge Function auth or cron is a separate production configuration change.
Inventory sync is production-adjacent. Do not document service-role keys, bearer tokens, customer-private data, or copy-and-paste production requests in this repository. Any manual production trigger or write requires explicit authorization and must use approved stored-secret tooling.