MCP-Server

MCP Near Me

com.voicedispatcher/mcp-near-me
Business & Betrieb Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

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.
Destruktiv Externer Zugriff Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['linking_session_id'], 'properties': {'linking_session_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Ausgabeschema
{'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.
Destruktiv Externer Zugriff Idempotent
Eingabeschema
{'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}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id'], 'properties': {'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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."}}}
Ausgabeschema
{'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
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['request_id'], 'properties': {'request_id': {'type': 'string', 'maxLength': 200, 'minLength': 10}}}
Ausgabeschema
{'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.
Destruktiv Externer Zugriff Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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
Eingabeschema
{'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}}}
Ausgabeschema
{'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
Eingabeschema
{'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}}}
Ausgabeschema
{'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
Eingabeschema
{'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': []}}}
Ausgabeschema
{'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}
Hinzugefügt
cancel_service_booking
17. September 2026 12:38
Hinzugefügt
reschedule_service_booking
17. September 2026 12:38
Hinzugefügt
prepare_service_booking_change
17. September 2026 12:38
Hinzugefügt
get_my_service_booking
17. September 2026 12:38
Hinzugefügt
list_my_service_bookings
17. September 2026 12:38
Hinzugefügt
complete_account_link
17. September 2026 12:38
Hinzugefügt
create_service_booking
17. September 2026 12:38
Hinzugefügt
select_service_option
17. September 2026 12:38
Hinzugefügt
render_service_request_form
17. September 2026 12:38
Hinzugefügt
get_service_options
17. September 2026 12:38
Hinzugefügt
update_service_request
17. September 2026 12:38
Hinzugefügt
start_service_request
17. September 2026 12:38