{"service":"butler","vertical":"tintbutler","capabilities":[{"key":"estimate","summary":"Get a price estimate for a job (tiered good/better/best where applicable).","method":"POST","path":"/api/v1/estimate","side_effects":"none","auth":"public"},{"key":"quote_request","summary":"Create a customer + quote from a request.","method":"POST","path":"/api/v1/quotes","side_effects":"creates customer + quote","auth":"api_key"},{"key":"availability","summary":"Open scheduling slots for a location (location-aware, race-safe).","method":"GET","path":"/api/v1/availability","side_effects":"none","auth":"public"},{"key":"book","summary":"Book a job into a slot.","method":"POST","path":"/api/v1/jobs","side_effects":"creates job; dispatches contractor","auth":"api_key"}],"principle":"Side-effects are declared and consent-gated. Errors are maps, not walls."}