{
  "name": "Efficiency Heating & Cooling",
  "description": "Portland, Oregon HVAC contractor since 2008: furnace, AC, heat pump, ductless mini-split, ductwork, and indoor air quality. 24/7 emergency, ~90-minute average response. NATE Certified, Energy Trust Trade Ally. CCB #187834.",
  "url": "https://www.eheatcool.com",
  "provider": { "name": "Efficiency Heating & Cooling", "url": "https://www.eheatcool.com" },
  "version": "1.0",
  "protocolVersion": "0.2",
  "documentationUrl": "https://www.eheatcool.com/llms.txt",
  "capabilities": { "streaming": false },
  "defaultInputModes": ["text"],
  "defaultOutputModes": ["application/json", "text"],
  "discovery": {
    "entityIndex": "https://www.eheatcool.com/llms.txt",
    "sitemap": "https://www.eheatcool.com/sitemap-ehc.xml",
    "contact": "https://www.eheatcool.com/contact",
    "onPageSchema": "https://www.eheatcool.com/ (HVACBusiness JSON-LD in <head>)"
  },
  "skills": [
    {
      "id": "get_services",
      "name": "Get services",
      "x_invocable": true,
      "x_method": "GET",
      "x_endpoint": "https://www.eheatcool.com/.well-known/get_services.json",
      "x_response_type": "application/json",
      "examples": ["What HVAC services do you offer?"]
    },
    {
      "id": "check_service_area",
      "name": "Check service area",
      "x_invocable": true,
      "x_method": "GET",
      "x_endpoint": "https://www.eheatcool.com/.well-known/service-area?city={city}",
      "x_response_type": "application/json",
      "x_required_params": ["city"],
      "x_error_behavior": "Missing/empty city → HTTP 400. Unknown/out-of-area city → HTTP 200 with served:false (not an error). The city param tolerates loose input (e.g. 'Beaverton, OR', neighborhood-qualified).",
      "description": "Returns whether a city is served plus the canonical service-area page URL. Always returns HTTP 200 for a provided city (served=true/false).",
      "examples": ["Do you serve Beaverton?", "Is Gresham in your area?"]
    },
    {
      "id": "get_pricing",
      "name": "Pricing guidance",
      "x_invocable": true,
      "x_method": "GET",
      "x_endpoint": "https://www.eheatcool.com/.well-known/get_pricing.json",
      "x_response_type": "application/json",
      "description": "Ballpark price ranges per service plus the qualifying questions an assistant should ask to tighten the estimate. Wide ranges, not quotes. Installs narrow from the answers (then route to the online estimator); repairs are pinned by the $189 on-site diagnostic. Always route to an on-site estimate and/or booking.",
      "x_human_url": "https://www.eheatcool.com/online-estimates",
      "examples": ["How much for a furnace replacement?", "Roughly what does AC repair cost in Portland?"]
    },
    {
      "id": "book_service",
      "name": "Book service",
      "x_invocable": false,
      "x_action": "human_handoff",
      "x_response_type": "text/html",
      "description": "24/7 emergency and scheduling. Browser-native human handoff (ScheduleEngine / ServiceTitan online scheduler) — open x_human_url in a browser; do NOT attempt a REST/JSON call. No autonomous booking or payment.",
      "x_human_url": "https://www.eheatcool.com/schedule",
      "examples": ["Book a furnace repair"]
    }
  ],
  "x_static_discovery": false,
  "x_schema_note": "Non-standard AEO/agent discovery card. Loosely modeled on the A2A AgentCard shape but NOT strict-A2A: invocability is expressed via x_invocable/x_endpoint extension fields, not native A2A skill semantics. Treat x_endpoint URLs as read-only REST hints, not A2A skill invocations.",
  "x_note": "get_services + check_service_area + get_pricing are backed by real read-only endpoints that return HTTP 200. book_service is a handoff to the human booking flow. No autonomous transaction or payment endpoint exists."
}
