{"serverId":"mcp-registry/ai.bezal/local-commerce","tools":[{"name":"check_business_availability","fixed":{"name":"check_business_availability","description":"Check whether a business is open on a date, based on its posted opening hours. Hours are shared only for providers on a paid Bezal plan, and other listings come back with open set to \"unknown\". It doesn't know about bookings, so confirm a time with the business.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_id","date"],"properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"ISO date (YYYY-MM-DD)"},"business_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Business UUID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"compare_businesses","fixed":{"name":"compare_businesses","description":"Compare up to 5 businesses side by side: the public profile fields plus services, BezalRank and whether the profile is claimed. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_ids"],"properties":{"business_ids":{"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"maxItems":5,"minItems":1,"description":"Array of business UUIDs to compare"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":265,"tokensAfter":265},{"name":"get_business","fixed":{"name":"get_business","description":"Get the public Bezal profile for one business by UUID. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium. For services, use get_service_catalog.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"The UUID of the business to look up"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":235,"tokensAfter":235},{"name":"get_provider_details","fixed":{"name":"get_provider_details","description":"Legacy alias for get_business. Prefer get_business for new clients.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_id"],"properties":{"business_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"get_reviews","fixed":{"name":"get_reviews","description":"Get reviews for a specific business: Bezal reviews (rating, text, verified flag, date and the reviewer as first name and last initial) plus the Google rating and review count.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_id"],"properties":{"limit":{"type":"number","default":10,"maximum":50,"minimum":1,"description":"Max reviews to return"},"business_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Business UUID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"get_service_catalog","fixed":{"name":"get_service_catalog","description":"Get services and pricing for a specific business. Falls back to the list of service names if no priced catalog exists.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_id"],"properties":{"business_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$","description":"Business UUID"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"list_categories","fixed":{"name":"list_categories","description":"List all available business categories in the directory.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":41,"tokensAfter":41},{"name":"search_businesses","fixed":{"name":"search_businesses","description":"Search local business profiles on Bezal by name, category, or location. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"city":{"type":"string","maxLength":100,"description":"City name"},"limit":{"type":"number","default":5,"maximum":20,"minimum":1,"description":"Number of results to return (1-20)"},"query":{"type":"string","maxLength":200,"description":"Free-text search across business name and description"},"state":{"type":"string","maxLength":40,"description":"Two-letter state code or full state name"},"category":{"type":"string","maxLength":100,"description":"Category keyword (e.g. \"plumbing\", \"hr consulting\")"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":291,"tokensAfter":291},{"name":"search_by_city","fixed":{"name":"search_by_city","description":"Search for businesses in a specific city, optionally filtered by category. Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["city"],"properties":{"city":{"type":"string","maxLength":100,"description":"City name"},"limit":{"type":"number","default":10,"maximum":20,"minimum":1,"description":"Max results"},"state":{"type":"string","maxLength":40,"description":"Two-letter state code or full name"},"category":{"type":"string","maxLength":100,"description":"Category keyword filter"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":249,"tokensAfter":249},{"name":"search_by_service","fixed":{"name":"search_by_service","description":"Find businesses that list a specific service, when you know the exact service rather than the category (for example \"Drain cleaning\" rather than \"plumbing\"). Every business includes name, category, city, state, rating, review count, tier and quote_request_url (its public Bezal profile, where a person can send a request). Phone, website, address, hours, photos and coordinates are included only for providers on a paid Bezal plan, and the description only on Business and Premium.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["service_type"],"properties":{"location":{"type":"string","maxLength":100,"description":"Optional city or state to filter by"},"service_type":{"type":"string","maxLength":100,"description":"Exact service offered (matched against the services list)"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":244,"tokensAfter":244},{"name":"search_providers","fixed":{"name":"search_providers","description":"Legacy alias for search_businesses. Prefer search_businesses for new clients.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"number","default":5,"maximum":20,"minimum":1},"query":{"type":"string","maxLength":200},"category":{"type":"string","maxLength":100},"location":{"type":"string","maxLength":100}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"submit_quote_request","fixed":{"name":"submit_quote_request","description":"Legacy alias for request_service. Prefer request_service for new clients.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["business_id","seeker_name","seeker_email","message"],"properties":{"message":{"type":"string","maxLength":4000,"minLength":1},"business_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"seeker_name":{"type":"string","maxLength":200,"minLength":1},"seeker_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,}$","maxLength":254}}},"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":227,"tokensAfter":227}],"toolsChanged":12,"tokensSaved":0,"todo":[{"tool":"get_provider_details","params":["business_id"]},{"tool":"search_providers","params":["limit","query","category","location"]},{"tool":"submit_quote_request","params":["message","business_id","seeker_name","seeker_email"]}],"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."}