{"openapi":"3.1.0","info":{"title":"Fast Fibre — fiber availability and call requests","version":"1.0.0","description":"For AI assistants helping a person get fiber internet in Hinesville & Midway, GA. Check an address, then, if the person asks, request a call from a specialist. No sign-up, no API key. Guide: https://www.fastfibre.org/llms.txt. The same tools over MCP: https://www.fastfibre.org/api/mcp.","contact":{"email":"13ulkin@gmail.com"}},"servers":[{"url":"https://www.fastfibre.org"}],"paths":{"/api/agent/availability":{"get":{"operationId":"checkFiberAvailability","summary":"Check fiber availability","description":"Check whether fiber internet is available at a street address. Fast Fibre is an independent local service in Hinesville & Midway, GA; the fiber network is Brightspeed's. Free, no sign-up. Returns the status, a summary to tell the person, the speeds the block can get and whether a call can be requested. Prices are never quoted online: a specialist tells them on the call.","parameters":[{"name":"street","in":"query","required":true,"schema":{"type":"string"},"description":"House number and street, e.g. \"511 Azalea St\""},{"name":"unit","in":"query","required":false,"schema":{"type":"string"},"description":"Apartment or unit, if any"},{"name":"zip","in":"query","required":true,"schema":{"type":"string"},"description":"5-digit ZIP code"}],"responses":{"200":{"description":"The answer","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["available","partial","likely","waitlist","unavailable","unknown","outside"]},"summary":{"type":"string","description":"Tell this to the person"},"address":{"type":["string","null"]},"max_speed_mbps":{"type":["number","null"]},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fits":{"type":"string"}}}},"can_request":{"type":"boolean"},"next_step":{"type":"string"},"request_link":{"type":["string","null"],"description":"For the person to finish on the site"}}}}}},"400":{"description":"The address is incomplete","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Too many checks; try again in a few minutes","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"503":{"description":"The address service didn't answer; try again","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}},"post":{"operationId":"checkFiberAvailabilityPost","summary":"Check fiber availability","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"street":{"type":"string","description":"House number and street, e.g. \"511 Azalea St\""},"unit":{"description":"Apartment or unit, if any","type":"string"},"zip":{"type":"string","description":"5-digit ZIP code"}},"required":["street","zip"],"additionalProperties":false}}}},"responses":{"200":{"description":"The answer","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["available","partial","likely","waitlist","unavailable","unknown","outside"]},"summary":{"type":"string","description":"Tell this to the person"},"address":{"type":["string","null"]},"max_speed_mbps":{"type":["number","null"]},"plans":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fits":{"type":"string"}}}},"can_request":{"type":"boolean"},"next_step":{"type":"string"},"request_link":{"type":["string","null"],"description":"For the person to finish on the site"}}}}}}}}},"/api/agent/requests":{"post":{"operationId":"requestCallback","summary":"Request a call from a specialist","description":"Ask Fast Fibre to call the person about fiber internet at their address. Only when the person asked you to, with their own name and mobile number — never guess them. Before calling this tool, tell the person and get their yes to: \"The person asked their AI assistant to request a call from Fast Fibre about fiber internet at this address, and agreed that Fast Fibre may call them at this number to confirm the request.\" Then set user_confirmed to true. A specialist calls usually the same day to confirm the request; nothing is ordered until the person confirms on that call. Relay the message in the result to the person, with the confirm link if there is one.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The person's name, as they gave it"},"phone":{"type":"string","description":"The person's 10-digit US mobile number, as they gave it. Never guess it."},"street":{"type":"string","description":"House number and street, e.g. \"511 Azalea St\""},"unit":{"description":"Apartment or unit, if any","type":"string"},"zip":{"type":"string","description":"5-digit ZIP code"},"plan":{"description":"\"500\" = 500 Mbps, \"1g\" = 1 Gig, \"2g\" = 2 Gig, \"help\" = not sure yet (default)","type":"string","enum":["500","1g","2g","help"]},"best_time":{"description":"When the person prefers a call","type":"string","enum":["morning","afternoon","evening","anytime"]},"situation":{"description":"\"xfinity\" = switching from Xfinity, \"other\" = from another provider, \"moving\" = moving in / no internet","type":"string","enum":["xfinity","other","moving"]},"extras":{"description":"\"wifi\" = whole-home Wi-Fi, \"phone\" = home phone","type":"array","items":{"type":"string","enum":["wifi","phone"]}},"agent":{"description":"Your name as an assistant, e.g. \"ChatGPT\" or \"Claude\"","type":"string"},"user_confirmed":{"type":"boolean","description":"true only after the person asked you to request the call and agreed to this: The person asked their AI assistant to request a call from Fast Fibre about fiber internet at this address, and agreed that Fast Fibre may call them at this number to confirm the request."}},"required":["name","phone","street","zip","user_confirmed"],"additionalProperties":false}}}},"responses":{"200":{"description":"Already received earlier","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"received"},"reference":{"type":"string","example":"FF-3F9A2C"},"message":{"type":"string","description":"Tell this to the person"},"confirm_url":{"type":["string","null"],"description":"Optional link for the person to confirm right away"},"next_steps":{"type":"array","items":{"type":"string"}}}}}}},"201":{"description":"Received","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","const":"received"},"reference":{"type":"string","example":"FF-3F9A2C"},"message":{"type":"string","description":"Tell this to the person"},"confirm_url":{"type":["string","null"],"description":"Optional link for the person to confirm right away"},"next_steps":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Something to fix; the error says what","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"409":{"description":"This number can't be taken online","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"422":{"description":"The address is outside the service area","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Too many requests; try again later","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}}}}