Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Recently observed → Live
Live → Recently observed
Recently observed → Live
Live → Recently observed
Changed the definition of "check_service_area", "confirm_booking", "customer_lookup" and 5 more
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"state":{"description":"Two-letter state code; defaults to MA. Any state other than MA is outside the service area.","maxLength":2,"minLength":2,"type":"string"},"town":{"description":"Massachusetts town, city or neighborhood name on its own, e.g. \"Quincy\" or \"Dorchester\". Answers \"do you serve <town>?\" directly; do not demand a ZIP first.","maxLength":60,"minLength":2,"type":"string"},"zip":{"description":"Five-digit service ZIP (ZIP+4 accepted). Town name alone is enough; pass a ZIP only when the town result is partially_covered or unknown_town, or when the customer already gave the full address. Send zip or town; an empty call returns LOCATION_REQUIRED.","maxLength":10,"minLength":3,"type": ⟨3 unchanged words⟩
Recently observed → Live
Live → Recently observed
Recently observed → Live
Live → Recently observed
Added "request_out_of_area_callback"; changed the definition of "check_service_area" and "submit_customer_info" (15 tools before, 16 now)
Checkthea service ZIP, or a Massachusetts town, city or neighborhood name on its own, against the coverage database for Norfolk, Suffolk and Plymouth counties.AAnswer "do you serve <town>?" directly with townalone(noreturnsZIPneeds_more_informationneeded):askcovered = yes; partially_covered = yes for the listed covered_zips, confirm the customer's
Certificate changed, valid to 2026-12-19
Recently observed → Live
Live → Recently observed
Certificate recorded, valid to 2026-10-21
Authorization not required
Changed the definition of "business_info", "check_service_area", "customer_lookup" and 3 more
⟨6 unchanged words⟩ agent_context":{"additionalProperties":false,"properties":{"availability":{"additionalProperties":false,"properties":{"creates_appointment":{"type":"boolean"},"kind":{"type":"string"},"tool":{"type":"string"}},"required":["tool","kind","creates_appointment"],"type":"object"},"customer_records":{"type":"string"},"instructions" ⟨141 unchanged words⟩ "},"timezone":{"type":"string"},"writes":{"additionalProperties":false,"properties":{"confirm_booking":{"additionalProperties":false,"properties":{"requires_sms_code":{"type":"boolean"},"success_requires":{"additionalProperties":false,"properties":{"booked":{"type":"boolean"},"status":{"type":"string"}},"required":["status","booked"],"type":"object"}},"required":["requires_sms_code","success_requires"],"type":"object"},"request_booking":{"additionalProperties":false,"properties":{"creates_appointment":{"type":"boolean"},"requires_explicit_user_consent":{"type":"boolean"},"sends_sms_code":{"type":"boolean"}},"required":["requires_explicit_user_consent","sends_sms_code","creates_appointment"],"type":"object"},"request_callback":{"additionalProperties":false,"properties":{"creates_appointment":{"type":"boolean"},"requires_explicit_user_consent":{"type":"boolean"}},"required":["requires_explicit_user_consent","creates_appointment"],"type":"object"}},"required":["request_callback","request_booking","confirm_booking"],"type":"object"}},"required":["
Changed the definition of "open_customer_portal"
⟨31 unchanged words⟩ or creating a booking. History requires SMS verificationinsideandthistheMCPcustomersession.card’s private, short-lived proof. Booking requires reviewing details and the customer-supplied SMS code.
Added "customer_lookup", "open_customer_portal", "search_service_history" and 1 more; changed the definition of "business_info", "check_service_area", "confirm_booking" and 5 more (11 tools before, 15 now)
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"agent_context":{"additionalProperties":false,"properties":{"customer_records":{"type":"string"},"instructions":{"type":"string"},"knowledge":{"additionalProperties":false,"properties":{"instructions":{"type":"string"},"missing_information":{"type":"string"},"read_tool":{"type":"string"},"search_tool":{"type":"string"}},"required":["search_tool","read_tool","instructions","missing_information"],"type":"object"},"locations":{"items":{"additionalProperties":false,"properties":{"city":{"type":"string"},"name":{"type":"string"},"state":{"type":"string"},"street":{"type":"string"},"zip":{"type":"string"}},"required":["name","street","city","state","zip"],"type":"object"},"type":"array"},"pricing":{"additionalProperties":false,"properties":{"currency":{"type":"string"},"dispatch_fee":{"type":"number"},"estimates":{"type":"string"},"policy":{"type":"string"}},"required":["currency","dispatch_fee","policy","estimates"],"type":"object"},"scheduling":{"additionalProperties":false,"properties":{"after_hours":{"type":"string"},"emergency":{"type":"string"},"regular":{"type":"string"},"routine":{"type":"string"}},"required":["regular","after_hours","routine","emergency"],"type":"object"},"service_area":{"additionalProperties":false,"properties":{"exact_coverage_tool":{"type":"string"},"summary":{"type":"string"},"towns":{"items":{"type":"string"},"type":"array"}},"required":["summary","towns","exact_coverage_tool"],"type":"object"},"services":{"items":{"additionalProperties":false,"properties":{"name":{"type":"string"},"summary":{"type":"string"}},"required":["name","summary"],"type":"object"},"type":"array"},"timezone":{"type":"string"}},"required":["instructions","timezone","locations","services","service_area","pricing","scheduling","knowledge","customer_records"],"type":"object"},"Changed the definition of "get_availability"
⟨39 unchanged words⟩ items":{"additionalProperties":false,"properties":{"arrival_end":{"description":"Customer-facing two-hour arrival promise.","type":"string"},"arrival_start":{"type":"string"},"available":{"type":"boolean"},"end_local":{"type":"string"},"end_time":{"description":"Reserved three-hour job-block end; pass unchanged to request_booking.","type":"string"},"part_of_day":{"enum" ⟨6 unchanged words⟩ {"type":"string"},"start_time":{"description":"Selected job-block start; pass unchanged to request_booking.","type":"string"}},"required":["start_time","end_time","arrival_start","arrival_end","start_local","end_local","part_of_day","available ⟨16 unchanged words⟩
First tool surface recorded: 11 tools (server version 1.0.0)
Showing the latest 20 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"booking_id":{"description":"The booking_id (UUID) returned by request_booking for this pending booking.","format":"uuid","type":"string"},"code":{"description":"The 6-digit code the customer received by SMS after request_booking. Ask the customer for it; never guess or reuse a customer_lookup code.","pattern":"^\\d{6}$","type": ⟨6 unchanged words⟩
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"challenge_id":{"description":"The challenge_id returned by the first call; send it together with code on the second call.","format":"uuid","type":"string"},"code":{"description":"The 6-digit verification code the customer received by SMS; send it together with challenge_id. Keep it separate from booking codes.","pattern":"^\\d{6}$","type":"string"},"confirmed":{"const":true,"description":"True only after the customer agreed to receive a verification code at this number.","type":"boolean"},"phone":{"description":"Phone number on the customer account, any common US format; the verification code is texted to it.","minLength":7,"type":"string"}}, ⟨5 unchanged words⟩
⟨5 unchanged words⟩ properties":{"days":{"default":7,"description":"How many calendar days to search from start_date (or today), 1 to 14; default 7.","maximum":14,"minimum":1,"type":"integer"},"start_date":{"description":"First day to search as YYYY-MM-DD in the company time zone; omit for today. Past dates are rejected.","pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"state":{"description":"Two-letter state code, normally MA; send only together with zip or town.","maxLength":2,"minLength":2,"type":"string"},"time_preference":{"default":"any","description":"Part of day to keep: any (default), morning, afternoon or evening.","enum":["any","morning","afternoon","evening"],"type":"string"},"town":{"description":"Service town when known, e.g. \"Quincy\", sent alongside zip. A town without a ZIP returns needs_more_information; use check_service_area for town-only coverage questions.","maxLength":60,"minLength":2,"type": ⟨29 unchanged words⟩
⟨5 unchanged words⟩ properties":{"address":{"additionalProperties":false,"description":"Full service address: street, optional unit, city, two-letter state (default MA) and five-digit ZIP. The ZIP decides service-area eligibility; the booking is placed at this address.","properties":{"city":{"minLength":2," ⟨68 unchanged words⟩ ,"type":"string"},"email":{"description":"Customer email as given. Required when customer_type is new; optional for returning customers. Never invent it.","format":"email","type":"string"}, ⟨85 unchanged words⟩ array"},"promotion_review_requested":{"default":false,"description":"True only when the customer asked for a current promotion to be reviewed with this visit; the office reviews it, nothing is applied automatically.","type":"boolean"},"referral_code":{"description":"Referral code the customer supplied, exactly as given; omit when none was offered.","maxLength":300,"type":"string"}," ⟨45 unchanged words⟩
⟨22 unchanged words⟩ ,"type":"boolean"},"email":{"description":"Customer email, only when the customer offered it; never invent one.","format":"email","type":"string"}, ⟨54 unchanged words⟩ "string"},"urgency":{"default":"routine","description":"How soon the customer needs the call: routine (default), soon or urgent. A callback is never emergency dispatch; life-safety situations go through emergency_help first.","enum":["routine","soon"," ⟨10 unchanged words⟩
⟨5 unchanged words⟩ properties":{"address":{"additionalProperties":false,"description":"Service address: city, two-letter state and five-digit ZIP are required; street and unit are optional.","properties":{"city":{"maxLength":60," ⟨134 unchanged words⟩
⟨5 unchanged words⟩ properties":{"address":{"additionalProperties":false,"description":"Full service address: street, optional unit, city, two-letter state and five-digit ZIP (ZIP+4 accepted). The ZIP decides service-area coverage.","properties":{"city":{"minLength":2," ⟨51 unchanged words⟩ ,"type":"boolean"},"email":{"description":"Customer email address as given; never invent it.","format":"email","type":"string"}, ⟨61 unchanged words⟩ 3,"type":"string"},"phone":{"description":"Customer mobile number in any common US format; the booking SMS code goes here later.","maxLength":30,"minLength":7,"type": ⟨10 unchanged words⟩
⟨9 unchanged words⟩ :"string"},"type":"array"},"covered_zips":{"description":"Town lookups only: the town ZIPs inside the automatic-booking area.","items":{"type":"string"},"type":"array"},"error":{"type":"string"},"error_code" ⟨23 unchanged words⟩ ,"next_step":{"type":"string"},"outside_zips":{"description":"Town lookups only: the town ZIPs outside the automatic-booking area.","items":{"type":"string"},"type":"array"},"resolved_town":{"description":"Town lookups only: the Massachusetts place the name was matched to.","type":"string"},"review_sandbox":{"type":"boolean"},"status":{"enum":["covered","partially_covered","outside_service_area","unknown_town","needs_more_information","unavailable"],"type":" ⟨14 unchanged words⟩
⟨51 unchanged words⟩ for office review and never books a job. For a Massachusetts address outside the area that lead is also flagged for an ASAP office callback (office_callback_requested:true), so do not call request_out_of_area_callback afterwards. Say the description was saved only when issue_description_saved ⟨28 unchanged words⟩
⟨11 unchanged words⟩ ,"error_code":{"type":"string"},"in_massachusetts":{"description":"Outside-area leads only: whether the service ZIP is in Massachusetts.","type":"boolean"},"in_service_area":{"type":"boolean"},"issue_description_saved" ⟨26 unchanged words⟩ "string"},"next_step":{"type":"string"},"office_callback_requested":{"description":"True when the outside-area lead was flagged for an ASAP office callback (Massachusetts addresses).","type":"boolean"},"record_id":{"description":"Saved office ⟨45 unchanged words⟩
Request Out-of-Area Office Callback — Use as soon as a caller is found to be outside the automatic-booking service area and agrees to a call from the office. Requires name, phone, city, state, service ZIP, issue_description and confirmed:true. The server rechecks coverage: in_service_area means continue normal booking (no callback is created). For a Massachusetts address it flags the office to call back ASAP (status office_callback_requested); tell the caller the office will call them soon and that they are also welcome to call (617) 479-9911. Outside Massachusetts returns outside_massachusetts and creates nothing. It never books…
UseCheckthisthewhenservice ZIP against theusercoveragegivesdatabaseaforMassachusettsNorfolk,ZIPSuffolkcodeandorPlymouth counties. A townandalonewantsreturnstoneeds_more_information:knowaskwhetherforJohnsontheBros.ZIPservesorit.fullDoaddress. Unavailable coverage is unknown, notuseoutside-area.thisThisasneverproofproves that aspecificparticular appointment is available.
⟨30 unchanged words⟩ ,"message":{"type":"string"},"missing_fields":{"items":{"type":"string"},"type":"array"},"next_step":{"type":"string"},"review_sandbox":{"type":"boolean"},"status":{"enum":["covered","outside_service_area","needs_more_information","unavailable"],"type":"string"},"success":{"type":"boolean"} ⟨10 unchanged words⟩
⟨8 unchanged words⟩ ":"string"},"customer":{"additionalProperties":false,"properties":{"addresses":{"items":{"additionalProperties":false,"properties":{"city":{"type":"string"},"country":{"type":"string"},"state":{"type":"string"},"street":{"type":"string"},"street_line_2":{"type":"string"},"zip":{"type":"string"}},"type":"object"},"type":"array"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"}},"required":["phone","addresses"],"type":"object"},"history":{"items":{"additionalProperties":false,"properties":{"description":{"type":"string"},"scheduledStart":{"type":"string"},"workStatus":{"type":"string"}},"required":["description","workStatus"],"type":"object"},"type":"array"},"history_status" ⟨5 unchanged words⟩ ,"message":{"type":"string"},"next_step":{"type":"string"},"record_id":{"description":"Saved office lead reference, when applicable.","type":"string"},"request_id":{"description":"Public operation receipt for support; never a provider customer ID.","format":"uuid","type":"string"},"review_sandbox":{"type":"boolean"},"status" ⟨6 unchanged words⟩ {"type":"boolean"}},"required":["request_id","next_step","success","status","message"],"type":"object"}
Use this when the user wants live Johnson Bros. appointment availability.ReturnsIncludecustomer-facingziparrivalandwindowsanyandknown town/state for a customer booking inquiry. Outside-area or unresolved locations receive no windows. Without a location, this returns general capacity only,nevernot eligibility to book; coverage_status is not_checked. Never call for a customerdata.alreadyDofoundnotoutsideusecoverage.itDotonot promise or create an appointment; use request_booking andconfirm_booking for that.confirm_booking.
⟨22 unchanged words⟩ {2}$","type":"string"},"state":{"maxLength":2,"minLength":2,"type":"string"},"time_preference":{"default":"any","enum":["any","morning","afternoon","evening"],"type":"string"},"town":{"maxLength":60,"minLength":2,"type":"string"},"zip":{"description":"Service ZIP when known. Always include the customer location for a booking inquiry; outside-area requests receive no windows.","maxLength":10,"minLength":3,"type":"string"}},"type":"object"}
⟨6 unchanged words⟩ {"booking_flow":{"type":"string"},"coverage_status":{"enum":["verified","not_checked","outside_service_area","unknown"],"type":"string"},"error_code":{"type":"string"},"has_more":{"type":"boolean"},"missing_fields":{"items":{"type":"string"},"type":"array"},"next_step":{"type":"string"},"open_windows":{"type":"integer"},"privacy" ⟨7 unchanged words⟩ "integer"},"review_sandbox":{"type":"boolean"},"status":{"enum":["available","needs_more_information","outside_service_area","unavailable"],"type":"string"},"success":{"type":"boolean"} ⟨97 unchanged words⟩
⟨15 unchanged words⟩ ,"phone_last4":{"type":"string"},"record_id":{"type":"string"},"request_id":{"format":"uuid","type":"string"},"review_sandbox":{"type":"boolean"},"status" ⟨6 unchanged words⟩ {"type":"boolean"}},"required":["request_id","success","status","message","next_step"] ⟨2 unchanged words⟩
⟨18 unchanged words⟩ email, phone and where they found us. Include the customer-approved issue_description when the service or symptoms are already known. Saves an in-area customer; outside database coverage saves a lead with the supplied description for office review and never books a job. Say the description was saved only when issue_description_saved is true; in-area booking notes are saved later with request_booking. Lead submissions can notify the office and send ⟨10 unchanged words⟩
⟨51 unchanged words⟩ "Customer submitted or approved the new customer form, including any supplied issue description","type":"boolean"},"email":{ ⟨16 unchanged words⟩ the platform","maxLength":200,"minLength":1,"type":"string"},"issue_description":{"description":"Customer-approved service and reported symptoms, if already provided. Preserved in outside-area office lead notes; do not invent a diagnosis. Optional so contact-only intake still works.","maxLength":4000,"type":"string"},"name":{" ⟨28 unchanged words⟩
⟨14 unchanged words⟩ ,"in_service_area":{"type":"boolean"},"issue_description_saved":{"description":"True only after a supplied issue description was saved with an office-review lead. Customer creation alone does not save booking notes.","type":"boolean"},"message":{"type":"string"},"next_step":{"type":"string"},"record_id":{"description":"Saved office lead reference, when applicable.","type":"string"},"request_id":{"description":"Public operation receipt for support; never a provider customer ID.","format":"uuid","type":"string"},"review_sandbox":{"type":"boolean"},"status" ⟨7 unchanged words⟩ {"type":"boolean"}},"required":["request_id","next_step","success","status","in_service_area","booked", ⟨3 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"state":{"maxLength":2,"minLength":2,"type":"string"},"town":{"maxLength":60,"minLength":2, ⟨11 unchanged words⟩
Use this after the customer supplies the six-digit SMS code from request_booking. It can create customer and job records or an office-review lead, notify the office, and send transactional customer or referral-status texts. Only status:confirmed with booked:true means the ⟨34 unchanged words⟩
{"destructiveHint":falsetrue,"idempotentHint":true,"openWorldHint":true,"readOnlyHint" ⟨4 unchanged words⟩
⟨6 unchanged words⟩ {"booking_flow":{"type":"string"},"has_more":{"type":"boolean"},"open_windows":{"type":"integer"},"privacy" ⟨2 unchanged words⟩ ,"requested_days":{"type":"integer"},"returned_windows":{"type":"integer"},"review_sandbox":{"type":"boolean"},"success" ⟨9 unchanged words⟩ "string"},"timezone":{"type":"string"},"total_matching_windows":{"type":"integer"},"total_windows":{"type":"integer"} ⟨80 unchanged words⟩
⟨9 unchanged words⟩ ,"error":{"type":"string"},"error_code":{"type":"string"},"estimated_duration":{"type":"string"},"estimated_price_range" ⟨15 unchanged words⟩ ,"currency"],"type":"object"},"next_step":{"type":"string"},"next_steps":{"type":"string"},"notes" ⟨13 unchanged words⟩ "string"},"service_fee":{"type":"string"},"service_supported":{"type":"boolean"},"success":{"type":"boolean"} ⟨7 unchanged words⟩
⟨9 unchanged words⟩ :"string"},"type":"array"},"error":{"type":"string"},"error_code":{"type":"string"},"next_step":{"type":"string"},"pricing_disclaimer":{"type":"string"},"review_sandbox":{"type":"boolean"},"service_fee":{"type":"string"},"service_supported":{"type":"boolean"},"services":{"items":{"additionalProperties" ⟨57 unchanged words⟩
⟨62 unchanged words⟩ SMS code","type":"boolean"},"customer_type":{"description":"Required for booking: answer to Have you used us before?","enum":["new","returning"],"type":"string"},"email":{"format":"email","type":"string"},"heard_about_us":{"description":"Required for new customers: where they found us","maxLength":200,"minLength":1,"type":"string"},"name":{" ⟨124 unchanged words⟩
{"destructiveHint":falsetrue,"idempotentHint":false,"openWorldHint":true,"readOnlyHint" ⟨4 unchanged words⟩
⟨23 unchanged words⟩ This creates a callback lead, not anappointment.appointment, and can notify the office and send a transactional SMS acknowledgment. Do not use it for emergency dispatch; tell ⟨6 unchanged words⟩
{"destructiveHint":falsetrue,"idempotentHint":false,"openWorldHint":true,"readOnlyHint" ⟨4 unchanged words⟩
Verify Returning Customer and Retrieve History — For a returning customer: first call with phone and confirmed:true to request a code. Next call with the returned challenge_id and customer-supplied code. Saved details and recent service history are returned only after successful verification. If lookup fails, offer the new-customer form or office assistance. Never claim a match from the initial response.
Book a Visit or Search My Service History — Use this when the customer wants to book Johnson Bros. service or search their own past visits. Opens a compact card that expands into a customer form without sending a message or creating a booking. History requires SMS verification inside this MCP session. Booking requires reviewing details and the customer-supplied SMS code.
Search My Verified Service History — Use this from the customer card or browser bridge after customer_lookup verifies SMS and supplies private proof. Shared agents must use the history returned by customer_lookup or open the customer portal; an MCP connection alone never authorizes history. Searches the authenticated account records available from the customer portal by repair keywords, date text, and status. No customer IDs or portal bearer tokens are accepted. If verification expires, use customer_lookup again. Results cover only the records loaded by the portal, not a guaranteed lifetime archive.
Submit New Customer Form — After asking Have you used us before?, use for NEW customers only after they approve full name, address, email, phone and where they found us. Saves an in-area customer; outside database coverage saves a lead for office review and never books a job. Lead submissions can notify the office and send a transactional SMS acknowledgment; they do not authorize marketing texts.