Garage Door ScienceGarage 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.

Hosted consumer

Garage Door Science in ChatGPT

The published Custom GPT calls these tools as Actions. Free, no signup — best entry point for a homeowner already living in ChatGPT.

ChatGPT

TL;DR

  • MCP endpoint (public): https://garagedoorscience.com/mcp — unauthenticated, rate-limited per IP. All 15 tools; retrieval capped to top-3. No signup.
  • MCP endpoint (pro): https://garagedoorscience.com/mcp-pro — bearer-authed, higher limits, retrieval top-10. All 15 tools, plus 2 read-only team tools (see Team tools below). 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: 10 interactive labs, 92 articles, 32 videos — all indexed, all accessible via HTML + RAG.
  • Tools: 15 first-party MCP tools plus 2 team 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.

  • findCompanies

    Lists garage door companies in the Garage Door Science directory that say they serve an area, by 5-digit ZIP code, place ("City, ST") or two-letter state. It does not rank or recommend companies and is not a routing tool: use routeByZip first, and offer these only when routeByZip finds no local partner, as companies that list the area. Returns each company's name, url, phone, serviceAreas and a note saying who wrote the details; present the note as given. No ratings or reviews. ZIP codes are matched with U.S. Census Bureau 2020 ZIP Code Tabulation Areas, which do not cover every ZIP code.

  • lookupErrorCode

    What a garage door opener's flashing error code or lights mean, for LiftMaster, Chamberlain and Genie. For LiftMaster and Chamberlain give code, the number of times the UP arrow flashes then the DOWN arrow (e.g. "1-4"); with no brand both are looked up. For Genie give round and long, the two light states as the manual prints them. Returns each meaning in plain words, who should fix it (you, check then a pro, a pro, or nothing wrong) and the next step, the maker's manual it comes from (models, PDF page, URL, date read), the code's page, and, when a spring or cable may be involved, the don't-lift line with DASMA's. Pass on the notAffiliated line: Garage Door Science isn't affiliated with these makers. A code the charts don't have is reported as not found, never guessed. Nothing is stored. The same answers are at https://garagedoorscience.com/code and its pages.

  • getDoorStyles

    List garage door styles with pricing, features, and ratings. Optional filters: budget, type, maxPriceUsd. Prices are shown only where a primary source states a range; other styles say to get a written quote.

  • getActivePromotions

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

  • getInspectionReferencePhotos

    Returns curated, captioned reference photos of one garage door part, each tagged HEALTHY, WATCH or FIX, so a homeowner can compare what they see to the reference. Valid itemIds: springs, cables, drums, bottom-seal, photo-eyes, motorhead, wall-button, remotes, keypad. An itemId that is not listed returns a "no photos" message.

  • getLab

    Return a preview image, title, description, and URL for one interactive Three.js lab. The preview image is a 16:9 thumbnail of the lab; the URL opens the live interactive version in a browser. Slug must be one of the catalog: science-of-garage-doors, science-of-garage-door-springs, energy-efficiency-lab, garage-door-roi, rolling-steel-lab, spring-fatigue-cold-weather, safety-systems-lab, garage-door-trainer, garage-door-anatomy, animated.

  • getLabEmbed

    Return an iframe embed snippet for one interactive Three.js lab. Returns the iframe HTML plus the direct URL of the live lab. Slug must be one of: science-of-garage-doors, science-of-garage-door-springs, energy-efficiency-lab, garage-door-roi, rolling-steel-lab, spring-fatigue-cold-weather, safety-systems-lab, garage-door-trainer, garage-door-anatomy, animated.

  • retrieveLabContext

    Search the labs, articles and videos for passages that answer a question. Each passage gives labSlug, sourceKind (lab, blog, video, inspection, spec, partner or qa), url of its public page if any, heading, content, score. **Pro tier only**: Bearer key from /developers; public callers get 401.

  • visualDiagnose

    Diagnose a garage-door problem from a homeowner's photo (inline base64 image or imageUrl). Returns the visible part, its condition, severity, a safety flag, and an optional examples gallery id. Stores the photo briefly; a daily cleanup deletes it after about two days.

  • identifyOpener

    Identify a garage door opener brand and model from a photo of the motor head or label. Returns the matched brand, model, slug, learn button color, and confidence level. Useful for homeowners who want to find their opener in a comparison table.

  • 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 zip for context. Returns a repair cost range only where a primary source states one (otherwise null with a get-a-written-quote note), the DIY safety rating, and a safety note if applicable.

  • repairOrReplace

    Check a garage door part by part (springs, cables, rollers, hinges, opener, the door) from what the homeowner knows. Every field is optional; leave out anything they aren't sure of. Returns a call per part (stop, call a pro now, replace, plan a replacement, repair, keep an eye on it, fine for now, ask a pro), the reason, and the lines behind it quoted from makers, DASMA and the federal rule, each with its URL and the date it was read. Springs and cables are always a pro's job. A spring that looks broken means stop using the door until a pro replaces it (DASMA TDS 167). No life figure is given for cables, rollers or hinges, and no cycle count is worked out from years. Nothing is stored. The same check runs at https://garagedoorscience.com/repair-or-replace.

  • submitInspection

    Submit a completed 24-point garage door inspection on behalf of a homeowner. Saves the inspection, returns a scored report URL and flagged items, and emails the report only if emailReport is true. If any item is marked fix and a ZIP is given, also emails a link to the report to the local partner for that ZIP. 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.

Team tools (/mcp-pro only)

For a Garage Door Science key whose owner is on a company team with the Inspection checklist app. Read-only. MCP only, not on the REST API.

  • listTeamInspections

    List your company's customer inspections, newest first: your own if you are staff, the whole team's if you are a manager or the owner. Read-only. Needs a Garage Door Science key whose owner is on a company team with the Inspection checklist app.

  • getTeamInspection

    Read one of your company's customer inspections: what its report shows (customer name and address, the door, each item's mark and note), with its status and dates. Staff can read their own; managers and the owner, the team's. Read-only.

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> (10 total). Interactive Three.js explainers; each has a text transcript embedded via aria-live descriptions.
  • Door styles — /door-styles/<id> (six configurable 3D styles); color, material, windows, and width are all set via URL search params, so a specific configuration is a shareable, linkable state.
  • Articles — /blog/<slug> (92 total). Full MDX rendered; each includes Article JSON-LD with author, publishedAt, and inline citations back to source labs.
  • Videos — /videos/<slug> (32 total). YouTube embeds with transcripts in-page. Transcripts ≥ 200 chars are RAG-indexed.
  • Canonical Q&A — curated from user feedback. Accessed via MCP retrieveLabContext (pro-only; free Bearer key at /developers).
  • Inspection items — 24-point checklist entries with safety metadata. Indexed so agents can ground safety advice.
  • Partner info — profiles of the garage door companies in the directory. 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 is pro-only — public callers get JSON-RPC error -32004 pointing to /developers for a free Bearer key. All other tools unrestricted. JSON-RPC error code -32001 (plaintext message) when the rate 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-10-26: Added lookupErrorCode: what a LiftMaster or Chamberlain error code (UP flashes, then DOWN, e.g. “1-4”) or a Genie opener’s two lights mean, who should fix it and the next step, in our own words, with the maker’s manual cited (models, PDF page, URL, date read). An unknown code comes back as not found, never guessed. The same answers as /code. On /mcp, /mcp-pro, /api/v1 and the site chat; not in voice.
  • 2026-10-25: Added findCompanies: the companies in the directorythat say they serve a ZIP code, a place (“City, ST”) or a state, in alphabetical order, with name, link, phone, the places they serve and a note on who wrote the details. It lists; it doesn’t rank, recommend or route, so call routeByZipfirst. ZIP codes are matched with the U.S. Census Bureau’s 2020 ZCTA to Place Relationship File; ZIP Code Tabulation Areas don’t cover every ZIP code. On /mcp, /mcp-pro, /api/v1 and the site chat; not in voice.
  • 2026-10-25: Added repairOrReplace: what a homeowner knows about their door, springs and opener (every field optional) gives a call for each part with the sourced lines behind it. The same check as /repair-or-replace. On /mcp, /mcp-pro, /api/v1 and the site chat; not in voice yet.
  • 2026-04-24 — REST shim now collapses image-block content arrays into pre-rendered markdown links so ChatGPT Custom GPT Actions (which cannot render external images inline) get a usable response. Added /reference/[item]/[slug] as a forgiving public route that fuzzy-matches confabulated photo URLs to the right reference photo. Filed spec + 19-task plan for avisualDiagnosetool (Claude Vision over a homeowner's uploaded photo, 48h Vercel Blob retention) — not yet built.
  • 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: REST image reshape for Custom GPT compatibility; /reference/[item]/[slug] fuzzy resolver shipped; visualDiagnose spec + plan filed.