{"serverId":"mcp-registry/london.taskman/home-services","tools":[{"name":"check_availability","fixed":{"name":"check_availability","description":"Use when the user asks about dates, timing, or whether a service can likely be booked soon.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["service_type","postcode"],"properties":{"postcode":{"type":"string","maxLength":12,"minLength":3},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"time_preference":{"enum":["morning","afternoon","evening","flexible"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":181,"tokensAfter":181},{"name":"check_service_area","fixed":{"name":"check_service_area","description":"Use when the user provides a London postcode or asks whether TaskMan covers their area.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["postcode"],"properties":{"postcode":{"type":"string","maxLength":12,"minLength":3},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"create_booking_request","fixed":{"name":"create_booking_request","description":"Use when the user is ready to submit details for a real TaskMan of London booking request.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["customer_name","phone","postcode","service_type","task_summary","consent_to_contact"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":25,"minLength":7},"source":{"type":"string","const":"chatgpt_app","default":"chatgpt_app"},"postcode":{"type":"string","maxLength":12,"minLength":3},"photos_url":{"type":"string","format":"uri"},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"task_summary":{"type":"string","maxLength":500,"minLength":8},"customer_name":{"type":"string","maxLength":120,"minLength":2},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8},"time_preference":{"enum":["morning","afternoon","evening","flexible"],"type":"string"},"consent_to_contact":{"type":"boolean"}},"additionalProperties":false},"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":356,"tokensAfter":356},{"name":"create_customer_booking","fixed":{"name":"create_customer_booking","description":"Use after verification, detail collection, and confirmed paid payment session to create a booking scoped to the verified customer.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token","service_type","task_summary","payment_session_id"],"properties":{"address_id":{"type":"string","maxLength":120,"minLength":2},"contact_id":{"type":"string","maxLength":120,"minLength":1},"photos_url":{"type":"string","format":"uri"},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"task_summary":{"type":"string","maxLength":500,"minLength":8},"session_token":{"type":"string","maxLength":300,"minLength":20},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"idempotency_key":{"type":"string","maxLength":200,"minLength":8},"time_preference":{"enum":["morning","afternoon","evening","flexible"],"type":"string"},"consent_to_contact":{"type":"boolean","default":true},"payment_session_id":{"type":"string","maxLength":200,"minLength":6}},"additionalProperties":false},"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":324,"tokensAfter":324},{"name":"find_services","fixed":{"name":"find_services","description":"Use when the user needs help identifying which TaskMan of London service fits their job, especially for vague home-service requests in London.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"area":{"type":"string","maxLength":80,"minLength":2},"query":{"type":"string","maxLength":200,"minLength":2},"urgency":{"enum":["flexible","specific_date","urgent"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"get_booking_payment_status","fixed":{"name":"get_booking_payment_status","description":"Use to check whether a booking payment session is pending, paid, failed, canceled, or expired before attempting booking creation.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token","payment_session_id"],"properties":{"session_token":{"type":"string","maxLength":300,"minLength":20},"payment_session_id":{"type":"string","maxLength":200,"minLength":6}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":138,"tokensAfter":138},{"name":"get_booking_status","fixed":{"name":"get_booking_status","description":"Use when the user already has a TaskMan booking request and wants an update.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["booking_request_id"],"properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":25,"minLength":7},"booking_request_id":{"type":"string","maxLength":80,"minLength":4}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":158,"tokensAfter":158},{"name":"get_customer_availability","fixed":{"name":"get_customer_availability","description":"Use after verification to check availability for a verified customer at a selected saved address.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token","service_type"],"properties":{"address_id":{"type":"string","maxLength":120,"minLength":2},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"session_token":{"type":"string","maxLength":300,"minLength":20},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"time_preference":{"enum":["morning","afternoon","evening","flexible"],"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":205,"tokensAfter":205},{"name":"get_customer_profile","fixed":{"name":"get_customer_profile","description":"Use after verification to load scoped customer profile details from CRM for booking.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token"],"properties":{"session_token":{"type":"string","maxLength":300,"minLength":20}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":99,"tokensAfter":99},{"name":"get_quote_estimate","fixed":{"name":"get_quote_estimate","description":"Use when the user asks about likely cost, ballpark pricing, or whether a task needs a custom quote.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["service_type","task_summary"],"properties":{"brand":{"type":"string","maxLength":80},"postcode":{"type":"string","maxLength":12},"item_type":{"type":"string","maxLength":80},"wall_type":{"type":"string","maxLength":80},"item_count":{"type":"integer","maximum":25,"exclusiveMinimum":0},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"task_summary":{"type":"string","maxLength":500,"minLength":8},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"photos_provided":{"type":"boolean"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"list_customer_addresses","fixed":{"name":"list_customer_addresses","description":"Use after verification to list saved addresses linked to the verified customer.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token"],"properties":{"session_token":{"type":"string","maxLength":300,"minLength":20}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"list_service_types","fixed":{"name":"list_service_types","description":"Use after verification to show supported service types before collecting booking details.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token"],"properties":{"session_token":{"type":"string","maxLength":300,"minLength":20}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"start_booking_payment","fixed":{"name":"start_booking_payment","description":"Use after collecting booking details to create a Stripe checkout payment session before final booking submission.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token","service_type","task_summary"],"properties":{"address_id":{"type":"string","maxLength":120,"minLength":2},"contact_id":{"type":"string","maxLength":120,"minLength":1},"service_type":{"enum":["furniture_assembly","wall_mounting","handyman","electrician","smart_home_installation"],"type":"string"},"task_summary":{"type":"string","maxLength":500,"minLength":8},"session_token":{"type":"string","maxLength":300,"minLength":20},"preferred_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"deposit_amount_minor":{"type":"integer","maximum":500000,"exclusiveMinimum":0}},"additionalProperties":false},"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":245,"tokensAfter":245},{"name":"start_customer_verification","fixed":{"name":"start_customer_verification","description":"Use when an existing customer wants to verify identity (OTP or magic link) before assistant-led booking.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["identifier"],"properties":{"identifier":{"type":"string","maxLength":200,"minLength":5},"method_preference":{"enum":["otp","magic_link","auto"],"type":"string","default":"auto"},"channel_preference":{"enum":["sms","email","auto"],"type":"string","default":"auto"}},"additionalProperties":false},"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":153,"tokensAfter":153},{"name":"start_trusted_phone_session","fixed":{"name":"start_trusted_phone_session","description":"Use in trusted telephony flows when the caller number is already verified by the channel provider and you need a short-lived booking session without OTP.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["identifier"],"properties":{"identifier":{"type":"string","maxLength":200,"minLength":5}},"additionalProperties":false},"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":118,"tokensAfter":118},{"name":"update_contact_note","fixed":{"name":"update_contact_note","description":"Use to append an internal CRM note for the verified customer during or after booking.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["session_token","note"],"properties":{"note":{"type":"string","maxLength":2000,"minLength":4},"session_token":{"type":"string","maxLength":300,"minLength":20}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116}],"toolsChanged":16,"tokensSaved":0,"todo":[{"tool":"check_availability","params":["postcode","service_type","preferred_date","time_preference"]},{"tool":"check_service_area","params":["postcode","service_type"]},{"tool":"create_booking_request","params":["email","phone","source","postcode","photos_url","service_type","task_summary","customer_name","preferred_date","idempotency_key","time_preference","consent_to_contact"]},{"tool":"create_customer_booking","params":["address_id","contact_id","photos_url","service_type","task_summary","session_token","preferred_date","idempotency_key","time_preference","consent_to_contact","payment_session_id"]},{"tool":"find_services","params":["area","query","urgency"]},{"tool":"get_booking_payment_status","params":["session_token","payment_session_id"]},{"tool":"get_booking_status","params":["email","phone","booking_request_id"]},{"tool":"get_customer_availability","params":["address_id","service_type","session_token","preferred_date","time_preference"]},{"tool":"get_customer_profile","params":["session_token"]},{"tool":"get_quote_estimate","params":["brand","postcode","item_type","wall_type","item_count","service_type","task_summary","preferred_date","photos_provided"]},{"tool":"list_customer_addresses","params":["session_token"]},{"tool":"list_service_types","params":["session_token"]},{"tool":"match_providers","params":["urgency","location_id","service_type","area_postcode","preferred_date"]},{"tool":"start_booking_payment","params":["address_id","contact_id","service_type","task_summary","session_token","preferred_date","deposit_amount_minor"]},{"tool":"start_customer_verification","params":["identifier","method_preference","channel_preference"]},{"tool":"start_trusted_phone_session","params":["identifier"]},{"tool":"tag_contact","params":["tags","session_token"]},{"tool":"update_contact_note","params":["note","session_token"]},{"tool":"verify_customer_otp","params":["otp_code","challenge_id"]},{"tool":"verify_magic_link_token","params":["token"]}],"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."}