{"serverId":"mcp-registry/io.github.eziservices/mcp-public","tools":[{"name":"calculate_quote","fixed":{"name":"calculate_quote","description":"Calculate an estimated price and duration for a service WITHOUT creating a booking. Use this during the quoting phase before the customer commits.","inputSchema":{"type":"object","required":["city","category","serviceType"],"properties":{"city":{"type":"string","description":"Customer city. Valid values: Ottawa, Gatineau, Toronto, Montreal, Surrey, Miami, Dallas."},"edging":{"type":"boolean","description":"Lawn: include edging."},"garage":{"type":"boolean","description":"Include garage."},"hallway":{"type":"boolean","description":"Carpet: include hallway."},"hasPets":{"type":"boolean","description":"Customer has pets at home."},"windows":{"type":"boolean","description":"Include window cleaning."},"areaRugs":{"type":"number","description":"Carpet: number of area rugs."},"backyard":{"type":"boolean","description":"Lawn: include backyard."},"basement":{"type":"boolean","description":"Include basement."},"bedrooms":{"type":"number","description":"Number of bedrooms (cleaning/carpet)."},"category":{"enum":["Cleaning","Lawn-Care","Exterior Cleaning","Car Detailing","Snow-Removal","Tire-Changing"],"type":"string","description":"Service category."},"watering":{"type":"boolean","description":"Lawn: include watering."},"yardSize":{"enum":["standard","large"],"type":"string","description":"Lawn: yard size."},"bathrooms":{"type":"number","description":"Number of bathrooms (cleaning)."},"engineBay":{"type":"boolean","description":"Car: engine bay cleaning add-on."},"overgrown":{"type":"boolean","description":"Lawn: overgrown surcharge."},"staircase":{"type":"boolean","description":"Carpet: include staircase."},"tireCount":{"type":"number","description":"Tire: number of tires (default 4)."},"baseboards":{"type":"boolean","description":"Include baseboards."},"excessDirt":{"type":"boolean","description":"Car: very dirty interior add-on."},"iceBuildup":{"type":"boolean","description":"Snow: include hard ice buildup."},"iceSalting":{"type":"boolean","description":"Snow: include ice salting."},"livingRoom":{"type":"boolean","description":"Include living room."},"ovenInside":{"type":"boolean","description":"Include inside oven."},"carsToClear":{"type":"number","description":"Snow: number of cars to clear."},"clayAndSeal":{"type":"boolean","description":"Car: clay bar & seal add-on."},"kitchenDeep":{"type":"boolean","description":"Include kitchen deep clean."},"lawnCleanup":{"type":"boolean","description":"Lawn: include cleanup."},"leafRemoval":{"type":"boolean","description":"Lawn: include leaf removal."},"serviceType":{"enum":["DEEP-CLEAN","POST-CONSTRUCTION","AIRBNB-CLEAN","MOVE-IN-OUT-CLEAN","GENERAL-CLEAN","CARPET-CLEAN","LAWNCARE-LAWNMOWING","LAWNCARE-MAINTENANCE","LAWNCARE-PLANTING","LAWNCARE-WEED-REMOVAL","GENERAL","CLEAN_CAR_EXTERIOR","CLEAN_CAR_INTERIOR","CLEAN_CAR_COMPLETE","SNOW_REMOVAL","TIRE-CHANGE-STANDARD","TIRE-CHANGE-SEASONAL"],"type":"string","description":"Specific service type within the category."},"vehicleType":{"enum":["sedan","suv","van","truck","motorcycle"],"type":"string","description":"Vehicle type for car detailing or tire changing."},"windowPanes":{"type":"number","description":"Exterior: number of window panes."},"drivewayType":{"enum":["single","double"],"type":"string","description":"Snow: driveway type."},"fridgeInside":{"type":"boolean","description":"Include inside fridge."},"frontWalkway":{"type":"boolean","description":"Snow: include front walkway."},"femaleCleaner":{"type":"boolean","description":"Prefer a female cleaner."},"groutCleaning":{"type":"boolean","description":"Include grout cleaning."},"windowScreens":{"type":"number","description":"Exterior: number of window screens."},"gutterCleaning":{"type":"boolean","description":"Exterior: include gutter cleaning."},"kitchenSurface":{"type":"boolean","description":"Include kitchen surface clean."},"petHairRemoval":{"type":"boolean","description":"Car: pet hair removal add-on."},"spotCleanDoors":{"type":"boolean","description":"Include spot-clean doors."},"spotCleanWalls":{"type":"boolean","description":"Include spot-clean walls."},"windrowClearing":{"type":"boolean","description":"Snow: include windrow clearing."},"cleaningSupplies":{"type":"boolean","description":"Whether ezi provides supplies (default true)."},"soffitsAndFascia":{"type":"boolean","description":"Exterior: include soffits & fascia."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":1221,"tokensAfter":1221},{"name":"cancel_job","fixed":{"name":"cancel_job","description":"Cancel one of the authenticated customer's upcoming jobs. Call lookup_scheduled_jobs first to get the job ID. Get explicit customer confirmation before setting confirmed to true.","inputSchema":{"type":"object","required":["jobId","confirmed"],"properties":{"jobId":{"type":"string","description":"The job ID obtained from lookup_scheduled_jobs."},"confirmed":{"type":"boolean","description":"Must be true. Only set after the customer has explicitly confirmed."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":140,"tokensAfter":140},{"name":"create_order","fixed":{"name":"create_order","description":"Create a service order for the authenticated customer. Call calculate_quote first to get the price and recommended durationHours, then call this once the customer agrees.","inputSchema":{"type":"object","required":["category","scheduledTime","address"],"properties":{"edging":{"type":"boolean"},"garage":{"type":"boolean"},"address":{"type":"object","required":["addressLine1","city","state","postalCode"],"properties":{"city":{"type":"string"},"unit":{"type":"string"},"state":{"type":"string","description":"Province/state abbreviation (e.g. \"ON\", \"FL\")."},"country":{"enum":["CA","US"],"type":"string","description":"Defaults to CA."},"postalCode":{"type":"string"},"addressLine1":{"type":"string"}},"description":"Service address."},"comment":{"type":"string","description":"Optional notes for the service provider."},"hallway":{"type":"boolean"},"hasPets":{"type":"boolean"},"windows":{"type":"boolean"},"areaRugs":{"type":"number"},"backyard":{"type":"boolean"},"basement":{"type":"boolean"},"bedrooms":{"type":"number"},"category":{"enum":["Cleaning","Lawn-Care","Exterior Cleaning","Car Detailing","Snow-Removal","Tire-Changing"],"type":"string","description":"Service category."},"watering":{"type":"boolean"},"yardSize":{"enum":["standard","large"],"type":"string"},"bathrooms":{"type":"number"},"engineBay":{"type":"boolean"},"overgrown":{"type":"boolean"},"staircase":{"type":"boolean"},"tireCount":{"type":"number"},"baseboards":{"type":"boolean"},"excessDirt":{"type":"boolean"},"iceBuildup":{"type":"boolean"},"iceSalting":{"type":"boolean"},"livingRoom":{"type":"boolean"},"ovenInside":{"type":"boolean"},"carsToClear":{"type":"number"},"clayAndSeal":{"type":"boolean"},"kitchenDeep":{"type":"boolean"},"lawnCleanup":{"type":"boolean"},"leafRemoval":{"type":"boolean"},"serviceType":{"enum":["DEEP-CLEAN","POST-CONSTRUCTION","AIRBNB-CLEAN","MOVE-IN-OUT-CLEAN","GENERAL-CLEAN","CARPET-CLEAN","LAWNCARE-LAWNMOWING","LAWNCARE-MAINTENANCE","LAWNCARE-PLANTING","LAWNCARE-WEED-REMOVAL","GENERAL","CLEAN_CAR_EXTERIOR","CLEAN_CAR_INTERIOR","CLEAN_CAR_COMPLETE","SNOW_REMOVAL","TIRE-CHANGE-STANDARD","TIRE-CHANGE-SEASONAL"],"type":"string","description":"Specific service type."},"vehicleType":{"enum":["sedan","suv","van","truck","motorcycle"],"type":"string"},"windowPanes":{"type":"number"},"drivewayType":{"enum":["single","double"],"type":"string"},"fridgeInside":{"type":"boolean"},"frontWalkway":{"type":"boolean"},"sendQuoteSMS":{"type":"boolean","description":"Send the customer an SMS summary."},"durationHours":{"type":"number","description":"Estimated duration in hours (0.5 increments). Use the value from calculate_quote."},"femaleCleaner":{"type":"boolean"},"groutCleaning":{"type":"boolean"},"scheduledTime":{"type":"string","description":"Local date/time at the service address, without an offset (e.g. \"2025-07-15T10:00:00\"). Daylight saving is resolved for that date."},"windowScreens":{"type":"number"},"gutterCleaning":{"type":"boolean"},"kitchenSurface":{"type":"boolean"},"petHairRemoval":{"type":"boolean"},"spotCleanDoors":{"type":"boolean"},"spotCleanWalls":{"type":"boolean"},"windrowClearing":{"type":"boolean"},"cleaningSupplies":{"type":"boolean"},"soffitsAndFascia":{"type":"boolean"},"bookIfPaymentOnFile":{"type":"boolean","description":"If true and a payment method is saved, immediately confirms the booking."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":945,"tokensAfter":945},{"name":"get_available_services","fixed":{"name":"get_available_services","description":"Returns service categories and types available for a given postal or zip code, accounting for location coverage and seasonal availability. Call this after collecting the customer's postal code to determine what services to offer.","inputSchema":{"type":"object","required":["postalCode"],"properties":{"postalCode":{"type":"string","description":"Customer postal or zip code (e.g. \"K1A 0A1\" or \"90210\")."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":128,"tokensAfter":128},{"name":"get_profile","fixed":{"name":"get_profile","description":"Return the authenticated customer's profile: name, account ID, balance, primary address, and payment method status.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":57,"tokensAfter":57},{"name":"lookup_scheduled_jobs","fixed":{"name":"lookup_scheduled_jobs","description":"Return the authenticated customer's upcoming scheduled jobs. Call this before rescheduling or cancelling to get the job ID.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":62,"tokensAfter":62}],"toolsChanged":6,"tokensSaved":0,"todo":[{"tool":"create_order","params":["edging","garage","hallway","hasPets","windows","areaRugs","backyard","basement","bedrooms","watering","yardSize","bathrooms","engineBay","overgrown","staircase","tireCount","baseboards","excessDirt","iceBuildup","iceSalting","livingRoom","ovenInside","carsToClear","clayAndSeal","kitchenDeep","lawnCleanup","leafRemoval","vehicleType","windowPanes","drivewayType","fridgeInside","frontWalkway","femaleCleaner","groutCleaning","windowScreens","gutterCleaning","kitchenSurface","petHairRemoval","spotCleanDoors","spotCleanWalls","windrowClearing","cleaningSupplies","soffitsAndFascia"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}