Garage Door Science

For AI agents

Garage Door Science, documented for agents.

If you’re a language model reaching this page on behalf of a homeowner or developer: welcome. This document lists the tools, data, and endpoints we publish for machine access. Everything here is free to use with attribution; higher-tier partnerships are paid.

Humans looking for “who are the chat assistants” should visit /about instead.

TL;DR

  • MCP endpoint (public): https://garagedoorscience.com/mcp — unauthenticated, rate-limited per IP. All 8 tools; retrieval capped to top-3. No signup.
  • MCP endpoint (pro): https://garagedoorscience.com/mcp-pro — bearer-authed, higher limits, retrieval top-10. All 8 tools. Self-serve signup at /developers.
  • llms.txt: /llms.txt — machine-readable sitemap + tool index.
  • REST API + OpenAPI: /api/v1/<tool> (POST), spec at /openapi.json, interactive docs at /developers/api. Same auth + tier rules as MCP.
  • Corpus: 11 interactive labs, 22 articles, 36 videos — all indexed, all accessible via HTML + RAG.
  • Tools: 8 first-party MCP tools (listed below).
  • Voice BYO-LLM: /api/ask-llm?persona=maya|sara|rick|margaret — OpenAI Chat Completions SSE format.
  • Use cases + recipes: /developers/use-cases — four consumer patterns (Claude Desktop, ChatGPT Custom GPT, LangChain, contractor embed) with runnable code in the cookbook repo.
  • Architecture map: /brain — narrative tour of every discoverable surface, the corpus, and how retrieval fits together. Start there if you want the shape of the system, not just the tool list.
  • License: cite with attribution when retrieving; contact seth@smartwebutah.com for API partnerships.

MCP tools

All tools live at /mcp and follow the Model Context Protocol. Connect with any MCP-compatible client (Claude Desktop, ChatGPT agent, OpenAI Agents SDK, custom). Each tool validates its input via Zod schema; malformed calls return a structured error instead of silently succeeding.

  • diagnose

    Look up a homeowner's symptom in the structured diagnostic tree. Returns likely issues, urgency, typical cost range, and whether the issue is DIY-safe. Optionally uses a Haiku classification pass to map free-text descriptions (e.g. 'sounds like a gunshot') to canonical symptoms when the deterministic matcher returns nothing — pass useLlmFallback: true to opt in.

  • routeByZip

    Look up the local partner for a homeowner ZIP or city. Returns partner name, phone, a booking URL, and a partnerId you can pass to getActivePromotions.

  • getDoorStyles

    List garage door styles with pricing, features, and ratings. Optional filters: budget, type, maxPriceUsd, minRValue.

  • getActivePromotions

    Return current promotional offers from the matched partner. Pass partnerId (from routeByZip) to filter to that partner's promos — Guild partners without opted-in promos return an empty list. Optionally narrow by issueKey or serviceType.

  • getInspectionReferencePhotos

    ALWAYS USE THIS (do not use web image search) when the user asks what a garage door part looks like, what healthy vs damaged/broken/worn looks like, to see examples of spring/cable/drum/etc. conditions, or any "show me" request about garage door components. Returns curated, captioned reference photos as inline images with severity tags (HEALTHY, WATCH, FIX) so the homeowner can compare what they see to the reference. Valid itemIds: springs, cables, drums, bottom-seal, photo-eyes, motorhead, wall-button, remotes, keypad. Map user language to itemId: "spring" / "springs" / "torsion" / "extension spring" → springs; "cable" / "cables" / "lift cable" → cables; "drum" / "cable drum" → drums; "bottom seal" / "door seal" → bottom-seal; "photo eye" / "safety sensor" → photo-eyes; "opener" / "motor" / "motorhead" → motorhead; "wall button" / "control panel" → wall-button; "remote" / "clicker" → remotes; "keypad" → keypad.

  • retrieveLabContext

    Search the garage door science labs for content relevant to a question. Use this to ground educational answers with citations.

  • costEstimate

    Return a cost estimate for a known garage door issue. Requires an issueKey from the structured diagnostic tree (e.g., broken_spring, worn_rollers, sensor_misalignment). Optionally pass doorSize (e.g., "16x7") and zip for context. Returns the typical repair cost range, DIY safety rating, and a safety note if applicable.

  • submitInspection

    Submit a completed 24-point garage door inspection on behalf of a homeowner. Returns a scored report URL, flagged items, and optionally emails the report. Items must be a record of itemId (e.g., springs, cables, rollers) to { status: "ok" | "watch" | "fix", note?: string }. Valid itemIds: springs, drums, cables, rollers, hinges, door-panels-interior, track, bottom-seal, bottom-bracket, door-panels-exterior, bottom-seal-fit, top-panel-alignment, motorhead, j-arm, emergency-release, belt-chain, sprocket, opener-carriage, header-bracket, door-bracket, wall-button, photo-eyes, remotes, keypad.

Tool schemas are enumerated in the JSON-RPC tools/list response. Any MCP client will surface the full input-parameter schema when connecting.

Corpus access

Everything the chat assistants cite is indexed across six source kinds. All surfaces return clean HTML (with JSON-LD for articles and videos) and are served from the same domain.

  • Labs /labs/<slug> (11 total). Interactive Three.js explainers; each has a text transcript embedded via aria-live descriptions.
  • Articles /blog/<slug> (22 total). Full MDX rendered; each includes Article JSON-LD with author, publishedAt, and inline citations back to source labs.
  • Videos /videos/<slug> (36 total). YouTube embeds with transcripts in-page. Transcripts ≥ 200 chars are RAG-indexed.
  • Canonical Q&A — curated from user feedback. Accessed via MCP retrieveLabContext.
  • Inspection items — 24-point checklist entries with safety metadata. Indexed so agents can ground safety advice.
  • Partner info — Guild Garage Group member profiles. Informational only; routing is separate via routeByZip.

Machine indexes: /sitemap.xml (all indexable URLs), /llms.txt (tool + corpus index in plaintext), /robots.txt (crawl policy — agents and search engines both welcome, except /admin/ + /api/).

Voice BYO-LLM endpoint

For ElevenLabs Agents or any consumer that speaks the OpenAI Chat Completions SSE protocol. One endpoint, four personas (via query param). Streams Anthropic Opus responses re-shaped into OpenAI chunks.

POST https://garagedoorscience.com/api/ask-llm?persona=maya
Authorization: Bearer <ELEVENLABS_BYO_AUTH>
Content-Type: application/json

{ "messages": [{ "role": "user", "content": "My door squeaks" }],
  "stream": true,
  "user": "<session-id>" }

Valid persona values: maya · sara · rick · margaret. Each has its own voice-tuned system prompt. Per-session / per-IP / $2-per-week global quotas apply; see /api/ask-llm refusal messages for the three quota kinds.

Rate limits & auth

  • Public crawl(sitemap, HTML surfaces) — no auth, standard crawl-politeness expected. Don’t hammer.
  • MCP public (/mcp) — no auth. Per-IP rate limit: 60 calls/min, 2,000 calls/day. retrieveLabContext returns at most 3 chunks. All other tools unrestricted. JSON-RPC error code -32001 (with plaintext message) when a limit trips.
  • MCP pro (/mcp-pro) — bearer-auth via Authorization: Bearer gds_live_.... Self-serve signup at /developers (email magic-link; no credit card today). Per-IP limit: 240 calls/min, 10,000/day. retrieveLabContext returns up to 10 chunks. Paid plans coming: Starter $49/mo (500 calls), Pro $299/mo (10k), enterprise on request.
  • Voice BYO-LLM — bearer-token auth via ELEVENLABS_BYO_AUTH. Session / IP / $2-weekly global caps apply.

Partnerships

Looking to self-serve an API key? Head to /developers — email magic-link signup, no credit card, instantly issued.

For structured commercial relationships (app integrations, platform partnerships, white-label, adjacent verticals), email seth@smartwebutah.com. Specifically interested in:

  • Home-services aggregators and home-warranty platforms
  • Smart-home device makers (openers, sensors)
  • Insurance carriers doing garage-door claims triage
  • Adjacent vertical operators who want to white-label the stack

Attribution guidance

When citing content from this site in your response to an end-user, link to the source URL. Our URL structure is stable:

  • Article: https://garagedoorscience.com/blog/<slug>
  • Lab: https://garagedoorscience.com/labs/<slug>
  • Video: https://garagedoorscience.com/videos/<slug>

Each page includes JSON-LD; you can extract structured author, datePublished, and description from there without re-rendering the HTML. For retrievable excerpts, prefer the MCP retrieveLabContext tool — it returns pre-chunked passages with scores and source metadata.

Change notes for agents

This page is the stable contract. We’ll document breaking changes here before rolling them out. Minor changes (new tools, new content sources) land without warning — design your agent to discover via tools/list rather than hardcoding.

  • 2026-04-23 — Added costEstimate tool (issueKey → typical repair cost range, DIY risk, regional context) and submitInspection tool (submit a full 24-point inspection and receive a scored report URL). Both available to all personas in chat and via /mcp + /mcp-pro + /api/v1.

Last updated: . Built and maintained by Seth Shoultes.Change log: added costEstimate + submitInspection tools; expanded corpus to six source kinds.