MCP Server

MCP Near Me

com.voicedispatcher/mcp-near-me
Business & Operations Public & reachable MCP 2025-11-25

What this MCP does

Matches users with local service providers, gathers booking requirements, presents available options, and supports confirmed appointment creation, rescheduling, and cancellation.

cancel_service_booking
Cancel an approved appointment
Use this only with the one-time approval issued after the user confirms the exact cancellation inside the protected management form. It cancels only the authorized active booking, frees its capacity, and sends transactional notifications. Safe retries must reuse the same idempotency key.
Destructive Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_change_authorization_token', 'idempotency_key', 'source', 'anonymous_session_id', 'correlation_id'], 'properties': {'source': {'enum': ['chatgpt_plugin', 'chatgpt_ads', 'ai_search', 'organic_search', 'paid_search', 'manual_referral', 'provider_referral', 'direct', 'test'], 'type': 'string'}, 'correlation_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'anonymous_session_id': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'booking_change_authorization_token': {'type': 'string', 'minLength': 32, 'description': 'One-time approval supplied only by the protected management form.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'status'], 'properties': {'status': {'type': 'string'}, 'timezone': {'type': 'string'}, 'booking_id': {'type': 'string'}, 'service_date': {'type': 'string'}, 'arrival_window': {'type': 'string'}, 'account_linking': {'anyOf': [{'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'already_linked'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unavailable'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'linking_session_id', 'expires_at', 'next_action'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'expires_at': {'type': 'string'}, 'next_action': {'type': 'string', 'const': 'complete_account_link'}, 'linking_session_id': {'type': 'string'}}, 'additionalProperties': False}]}, 'public_booking_ref': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
complete_account_link
Finish saving booking details
Compatibility-only completion for an explicitly initiated legacy profile-link session. Never call it as part of a new booking and never ask for an SMS code in chat. Viewing or managing an existing appointment starts Connect through the corresponding booking-management tool.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linking_session_id'], 'properties': {'linking_session_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['linked'], 'properties': {'linked': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
create_service_booking
Create the confirmed service booking
Use only from the protected final card with its one-time authorization after the user presses Confirm. Provider, request, hold, time and protected answers come from server context; do not pass or reconstruct them. This anonymous action completes the booking and must not trigger Connect or phone verification. Safe retries must reuse the same idempotency key.
Destructive Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_authorization_token', 'idempotency_key', 'source', 'anonymous_session_id', 'correlation_id'], 'properties': {'source': {'enum': ['chatgpt_plugin', 'chatgpt_ads', 'ai_search', 'organic_search', 'paid_search', 'manual_referral', 'provider_referral', 'direct', 'test'], 'type': 'string'}, 'campaign_id': {'type': 'string', 'maxLength': 200}, 'correlation_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'anonymous_session_id': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'booking_authorization_token': {'type': 'string', 'minLength': 32}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'status'], 'properties': {'status': {'type': 'string'}, 'timezone': {'type': 'string'}, 'booking_id': {'type': 'string'}, 'service_date': {'type': 'string'}, 'arrival_window': {'type': 'string'}, 'account_linking': {'anyOf': [{'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'already_linked'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unavailable'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'linking_session_id', 'expires_at', 'next_action'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'expires_at': {'type': 'string'}, 'next_action': {'type': 'string', 'const': 'complete_account_link'}, 'linking_session_id': {'type': 'string'}}, 'additionalProperties': False}]}, 'public_booking_ref': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
get_my_service_booking
Open one of my appointments
Open an appointment that belongs to the connected customer. This is read-only. Historical appointments have no available management actions; a current manageable appointment can provide the protected card for exact reschedule or cancellation review.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_id'], 'properties': {'intent': {'enum': ['view', 'reschedule', 'cancel'], 'type': 'string', 'default': 'view'}, 'booking_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['booking', 'next_action'], 'properties': {'booking': {'type': 'object', 'required': ['booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'status', 'public_booking_ref', 'is_active', 'is_manageable', 'is_past', 'available_actions'], 'properties': {'status': {'type': 'string'}, 'is_past': {'type': 'boolean'}, 'timezone': {'type': 'string'}, 'is_active': {'type': 'boolean'}, 'booking_id': {'type': 'string'}, 'service_date': {'type': 'string'}, 'is_manageable': {'type': 'boolean'}, 'arrival_window': {'type': 'string'}, 'available_actions': {'type': 'array', 'items': {'enum': ['reschedule', 'cancel'], 'type': 'string'}}, 'public_booking_ref': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': False}, 'next_action': {'enum': ['view_complete', 'choose_available_time', 'review_cancellation'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
get_service_options
Get current service options
Use after intake required fields are known, or to refresh matching data. It returns live aggregated potential windows and the current refinement batch without company names. It does not select a provider or reserve capacity.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id'], 'properties': {'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['request_id', 'state_version', 'vertical_id', 'user_stage', 'known_fields', 'field_batch', 'next_action'], 'properties': {'request_id': {'type': 'string'}, 'user_stage': {'enum': ['intake', 'matching', 'confirmation'], 'type': 'string'}, 'field_batch': {'type': 'object', 'required': ['required', 'conditionally_required', 'optional'], 'properties': {'optional': {'type': 'array', 'items': {}}, 'required': {'type': 'array', 'items': {}}, 'conditionally_required': {'type': 'array', 'items': {}}}, 'additionalProperties': {}}, 'next_action': {'type': 'string'}, 'vertical_id': {'type': 'string'}, 'known_fields': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'vertical_introduction': {'type': 'object', 'required': ['message', 'presentation_order', 'present_once'], 'properties': {'message': {'type': 'string'}, 'present_once': {'type': 'boolean', 'const': True}, 'presentation_order': {'type': 'string', 'const': 'lead_same_message'}}, 'additionalProperties': False}}, 'additionalProperties': {}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
list_my_service_bookings
List my appointments
Use immediately when the user asks to see or manage appointments. For cancellation or rescheduling, pass status='active'. Active means a confirmed or rescheduled appointment whose arrival window has not ended; past or terminal bookings are never active. If multiple active appointments are returned, show the choices instead of guessing. Connect is handled by the platform; never ask for a phone or code in chat.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'status': {'type': 'string', 'maxLength': 40, 'description': "Use 'active' for cancellation or rescheduling. It returns only actionable appointments whose arrival window has not ended; omit to include history."}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['bookings', 'count', 'active_count'], 'properties': {'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'bookings': {'type': 'array', 'items': {'type': 'object', 'required': ['booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'status', 'public_booking_ref', 'is_active', 'is_manageable', 'is_past'], 'properties': {'status': {'type': 'string'}, 'is_past': {'type': 'boolean'}, 'timezone': {'type': 'string'}, 'is_active': {'type': 'boolean'}, 'booking_id': {'type': 'string'}, 'service_date': {'type': 'string'}, 'is_manageable': {'type': 'boolean'}, 'arrival_window': {'type': 'string'}, 'public_booking_ref': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': False}}, 'active_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
prepare_service_booking_change
Review an exact appointment change
Use this only from the protected management form after secure appointment access. It prepares the exact reschedule or cancellation review but does not change the booking. A reschedule accepts only a live slot returned inside the protected form and temporarily reserves that capacity. The user must separately confirm the exact preview before a write tool can run.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['action', 'idempotency_key'], 'properties': {'action': {'enum': ['reschedule', 'cancel'], 'type': 'string'}, 'booking_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}, 'new_slot_id': {'type': 'string', 'minLength': 32}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'management_context_token': {'type': 'string', 'minLength': 32, 'description': 'Opaque short-lived context supplied only by the protected management form.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['action', 'booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'policy_text', 'confirmation_required', 'next_action'], 'properties': {'action': {'enum': ['reschedule', 'cancel'], 'type': 'string'}, 'timezone': {'type': 'string'}, 'booking_id': {'type': 'string'}, 'next_action': {'type': 'string', 'const': 'confirm_in_protected_form'}, 'policy_text': {'type': 'string'}, 'service_date': {'type': 'string'}, 'arrival_window': {'type': 'string'}, 'provider_public_name': {'type': 'string'}, 'confirmation_required': {'type': 'boolean', 'const': True}, 'previous_service_date': {'type': 'string'}, 'previous_arrival_window': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
render_service_request_form
Open the final service confirmation card
Use only when update_service_request returns next_action=render_service_request_form. It opens the one final card containing exact provider options, booking fields, policies and Confirm. Do not ask for contact PII in chat.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id'], 'properties': {'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['request_id', 'state_version', 'vertical_id', 'user_stage', 'known_fields', 'field_batch', 'next_action'], 'properties': {'request_id': {'type': 'string'}, 'user_stage': {'enum': ['intake', 'matching', 'confirmation'], 'type': 'string'}, 'field_batch': {'type': 'object', 'required': ['required', 'conditionally_required', 'optional'], 'properties': {'optional': {'type': 'array', 'items': {}}, 'required': {'type': 'array', 'items': {}}, 'conditionally_required': {'type': 'array', 'items': {}}}, 'additionalProperties': {}}, 'next_action': {'type': 'string'}, 'vertical_id': {'type': 'string'}, 'known_fields': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'vertical_introduction': {'type': 'object', 'required': ['message', 'presentation_order', 'present_once'], 'properties': {'message': {'type': 'string'}, 'present_once': {'type': 'boolean', 'const': True}, 'presentation_order': {'type': 'string', 'const': 'lead_same_message'}}, 'additionalProperties': False}}, 'additionalProperties': {}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
reschedule_service_booking
Reschedule an approved appointment
Use this only with the one-time approval issued after the user confirms the exact reschedule inside the protected management form. It moves the existing booking to the reserved available time, preserves its prior-time history, frees the old capacity, and sends transactional notifications. Safe retries must reuse the same idempotency key.
Destructive Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['booking_change_authorization_token', 'idempotency_key', 'source', 'anonymous_session_id', 'correlation_id'], 'properties': {'source': {'enum': ['chatgpt_plugin', 'chatgpt_ads', 'ai_search', 'organic_search', 'paid_search', 'manual_referral', 'provider_referral', 'direct', 'test'], 'type': 'string'}, 'correlation_id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'anonymous_session_id': {'type': 'string', 'maxLength': 200, 'minLength': 8}, 'booking_change_authorization_token': {'type': 'string', 'minLength': 32, 'description': 'One-time approval supplied only by the protected management form.'}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['booking_id', 'provider_public_name', 'service_date', 'arrival_window', 'timezone', 'status'], 'properties': {'status': {'type': 'string'}, 'timezone': {'type': 'string'}, 'booking_id': {'type': 'string'}, 'service_date': {'type': 'string'}, 'arrival_window': {'type': 'string'}, 'account_linking': {'anyOf': [{'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'already_linked'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'unavailable'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['status', 'linking_session_id', 'expires_at', 'next_action'], 'properties': {'status': {'type': 'string', 'const': 'required'}, 'expires_at': {'type': 'string'}, 'next_action': {'type': 'string', 'const': 'complete_account_link'}, 'linking_session_id': {'type': 'string'}}, 'additionalProperties': False}]}, 'public_booking_ref': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
select_service_option
Select a company in the final card
Use only from the final protected card when the user selects one exact provider option. It rechecks availability, releases any previous selection, creates one temporary hold for the selected company, and returns its protected booking schema. It does not create a booking.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id', 'expected_state_version', 'option_key', 'idempotency_key'], 'properties': {'option_key': {'type': 'string', 'maxLength': 100, 'minLength': 10}, 'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'expected_state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['request_id', 'state_version', 'option_key', 'provider_public_name', 'service_date', 'arrival_window', 'next_action'], 'properties': {'option_key': {'type': 'string'}, 'request_id': {'type': 'string'}, 'next_action': {'type': 'string', 'const': 'complete_protected_form'}, 'service_date': {'type': 'string'}, 'state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'arrival_window': {'type': 'string'}, 'provider_public_name': {'type': 'string'}}, 'additionalProperties': {}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
start_service_request
Start a service request
Use this immediately when the user asks to book a supported local service. Pass the complete user intent and every public service detail already stated. The tool determines the vertical, creates the server-side request, and returns a vertical-specific introduction plus either one intake field batch or matching data when intake is already complete. In one customer-facing reply, lead with the introduction and immediately continue with the returned next step; do not wait for acknowledgment. Send provider_hint only when the user explicitly named a company. Do not collect contact PII.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['user_intent', 'idempotency_key'], 'properties': {'answers': {'type': 'object', 'default': {}, 'properties': {'brand': {'description': 'Brand. Use the exact key brand.'}, 'model': {'description': 'Model. Use the exact key model.'}, 'zip_code': {'description': 'ZIP. Use the exact key zip_code.'}, 'appliance_type': {'description': 'Appliance type. Use the exact key appliance_type.'}, 'selected_time_key': {'type': 'string', 'minLength': 1, 'description': 'Exact time key returned by MCP Near Me after the user chooses an arrival window.'}, 'problem_description': {'description': 'Problem. Use the exact key problem_description.'}}, 'additionalProperties': False}, 'user_intent': {'type': 'string', 'maxLength': 3000, 'minLength': 3}, 'provider_hint': {'anyOf': [{'type': 'string', 'maxLength': 100, 'minLength': 3}, {'type': 'null'}]}, 'vertical_hint': {'enum': ['appliance_repair', 'commercial_kitchen_refrigeration_repair'], 'type': 'string', 'description': 'Optional exact live vertical ID. Omit it when uncertain and let the server classify user_intent.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['request_id', 'state_version', 'vertical_id', 'user_stage', 'known_fields', 'field_batch', 'next_action'], 'properties': {'request_id': {'type': 'string'}, 'user_stage': {'enum': ['intake', 'matching', 'confirmation'], 'type': 'string'}, 'field_batch': {'type': 'object', 'required': ['required', 'conditionally_required', 'optional'], 'properties': {'optional': {'type': 'array', 'items': {}}, 'required': {'type': 'array', 'items': {}}, 'conditionally_required': {'type': 'array', 'items': {}}}, 'additionalProperties': {}}, 'next_action': {'type': 'string'}, 'vertical_id': {'type': 'string'}, 'known_fields': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'vertical_introduction': {'type': 'object', 'required': ['message', 'presentation_order', 'present_once'], 'properties': {'message': {'type': 'string'}, 'present_once': {'type': 'boolean', 'const': True}, 'presentation_order': {'type': 'string', 'const': 'lead_same_message'}}, 'additionalProperties': False}}, 'additionalProperties': {}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
update_service_request
Update a service request
Use this for the user's partial response to the current intake or matching batch. Pass only values the user supplied plus selected_time_key when chosen. Fields absent from answers are treated as omitted for that prompt batch; optional and conditionally required omissions do not block progress. Always pass the latest expected_state_version.
Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id', 'expected_state_version', 'idempotency_key'], 'properties': {'answers': {'type': 'object', 'default': {}, 'properties': {'brand': {'description': 'Brand. Use the exact key brand.'}, 'model': {'description': 'Model. Use the exact key model.'}, 'zip_code': {'description': 'ZIP. Use the exact key zip_code.'}, 'appliance_type': {'description': 'Appliance type. Use the exact key appliance_type.'}, 'selected_time_key': {'type': 'string', 'minLength': 1, 'description': 'Exact time key returned by MCP Near Me after the user chooses an arrival window.'}, 'problem_description': {'description': 'Problem. Use the exact key problem_description.'}}, 'additionalProperties': False}, 'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16}, 'expected_state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'explicitly_unknown_field_ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'default': []}}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'required': ['request_id', 'state_version', 'vertical_id', 'user_stage', 'known_fields', 'field_batch', 'next_action'], 'properties': {'request_id': {'type': 'string'}, 'user_stage': {'enum': ['intake', 'matching', 'confirmation'], 'type': 'string'}, 'field_batch': {'type': 'object', 'required': ['required', 'conditionally_required', 'optional'], 'properties': {'optional': {'type': 'array', 'items': {}}, 'required': {'type': 'array', 'items': {}}, 'conditionally_required': {'type': 'array', 'items': {}}}, 'additionalProperties': {}}, 'next_action': {'type': 'string'}, 'vertical_id': {'type': 'string'}, 'known_fields': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'state_version': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'vertical_introduction': {'type': 'object', 'required': ['message', 'presentation_order', 'present_once'], 'properties': {'message': {'type': 'string'}, 'present_once': {'type': 'boolean', 'const': True}, 'presentation_order': {'type': 'string', 'const': 'lead_same_message'}}, 'additionalProperties': False}}, 'additionalProperties': {}}, {'type': 'object', 'required': ['error'], 'properties': {'error': {'type': 'object', 'required': ['code', 'category', 'message', 'retryable', 'correlation_id', 'details'], 'properties': {'code': {'type': 'string'}, 'details': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'message': {'type': 'string'}, 'category': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'correlation_id': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
Added
cancel_service_booking
Sept. 17, 2026, 12:38 p.m.
Added
reschedule_service_booking
Sept. 17, 2026, 12:38 p.m.
Added
prepare_service_booking_change
Sept. 17, 2026, 12:38 p.m.
Added
get_my_service_booking
Sept. 17, 2026, 12:38 p.m.
Added
list_my_service_bookings
Sept. 17, 2026, 12:38 p.m.
Added
complete_account_link
Sept. 17, 2026, 12:38 p.m.
Added
create_service_booking
Sept. 17, 2026, 12:38 p.m.
Added
select_service_option
Sept. 17, 2026, 12:38 p.m.
Added
render_service_request_form
Sept. 17, 2026, 12:38 p.m.
Added
get_service_options
Sept. 17, 2026, 12:38 p.m.
Added
update_service_request
Sept. 17, 2026, 12:38 p.m.
Added
start_service_request
Sept. 17, 2026, 12:38 p.m.