MCP Near Me
Find participating local service providers and book live appointment times.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"mcp-near-me": {
"url": "https://mcp.voicedispatcher.com/mcp"
}
}
}遠端端點
https://mcp.voicedispatcher.com/mcpstreamable-httphttps://mcpnear.com/mcpstreamable-http它能做什麼
工具清單
工具(12)
🟡start_service_request(user_intent, vertical_hint, provider_hint, answers, idempotency_key)
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.
輸入結構描述
{
"type": "object",
"properties": {
"user_intent": {
"type": "string",
"minLength": 3,
"maxLength": 3000
},
"vertical_hint": {
"description": "Optional exact live vertical ID. Omit it when uncertain and let the server classify user_intent.",
"type": "string",
"enum": [
"appliance_repair",
"commercial_kitchen_refrigeration_repair"
]
},
"provider_hint": {
"anyOf": [
{
"type": "string",
"minLength": 3,
"maxLength": 100
},
{
"type": "null"
}
]
},
"answers": {
"default": {},
"type": "object",
"properties": {
"zip_code": {
"description": "ZIP. Use the exact key zip_code."
},
"appliance_type": {
"description": "Appliance type. Use the exact key appliance_type."
},
"brand": {
"description": "Brand. Use the exact key brand."
},
"model": {
"description": "Model. Use the exact key model."
},
"problem_description": {
"description": "Problem. Use the exact key problem_description."
},
"selected_time_key": {
"description": "Exact time key returned by MCP Near Me after the user chooses an arrival window.",
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
}
},
"required": [
"user_intent",
"idempotency_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
},
"state_version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"vertical_id": {
"type": "string"
},
"vertical_introduction": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"presentation_order": {
"type": "string",
"const": "lead_same_message"
},
"present_once": {
"type": "boolean",
"const": true
}
},
"required": [
"message",
"presentation_order",
"present_once"
],
"additionalProperties": false
},
"user_stage": {
"type": "string",
"enum": [
"intake",
"matching",
"confirmation"
]
},
"known_fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"field_batch": {
"type": "object",
"properties": {
"required": {
"type": "array",
"items": {}
},
"conditionally_required": {
"type": "array",
"items": {}
},
"optional": {
"type": "array",
"items": {}
}
},
"required": [
"required",
"conditionally_required",
"optional"
],
"additionalProperties": {}
},
"next_action": {
"type": "string"
}
},
"required": [
"request_id",
"state_version",
"vertical_id",
"user_stage",
"known_fields",
"field_batch",
"next_action"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡update_service_request(request_id, expected_state_version, answers, explicitly_unknown_field_ids, idempotency_key)
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.
輸入結構描述
{
"type": "object",
"properties": {
"request_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
},
"expected_state_version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"answers": {
"default": {},
"type": "object",
"properties": {
"zip_code": {
"description": "ZIP. Use the exact key zip_code."
},
"appliance_type": {
"description": "Appliance type. Use the exact key appliance_type."
},
"brand": {
"description": "Brand. Use the exact key brand."
},
"model": {
"description": "Model. Use the exact key model."
},
"problem_description": {
"description": "Problem. Use the exact key problem_description."
},
"selected_time_key": {
"description": "Exact time key returned by MCP Near Me after the user chooses an arrival window.",
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
},
"explicitly_unknown_field_ids": {
"default": [],
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
}
},
"required": [
"request_id",
"expected_state_version",
"idempotency_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
},
"state_version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"vertical_id": {
"type": "string"
},
"vertical_introduction": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"presentation_order": {
"type": "string",
"const": "lead_same_message"
},
"present_once": {
"type": "boolean",
"const": true
}
},
"required": [
"message",
"presentation_order",
"present_once"
],
"additionalProperties": false
},
"user_stage": {
"type": "string",
"enum": [
"intake",
"matching",
"confirmation"
]
},
"known_fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"field_batch": {
"type": "object",
"properties": {
"required": {
"type": "array",
"items": {}
},
"conditionally_required": {
"type": "array",
"items": {}
},
"optional": {
"type": "array",
"items": {}
}
},
"required": [
"required",
"conditionally_required",
"optional"
],
"additionalProperties": {}
},
"next_action": {
"type": "string"
}
},
"required": [
"request_id",
"state_version",
"vertical_id",
"user_stage",
"known_fields",
"field_batch",
"next_action"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_service_options(request_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"request_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
}
},
"required": [
"request_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
},
"state_version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"vertical_id": {
"type": "string"
},
"vertical_introduction": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"presentation_order": {
"type": "string",
"const": "lead_same_message"
},
"present_once": {
"type": "boolean",
"const": true
}
},
"required": [
"message",
"presentation_order",
"present_once"
],
"additionalProperties": false
},
"user_stage": {
"type": "string",
"enum": [
"intake",
"matching",
"confirmation"
]
},
"known_fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"field_batch": {
"type": "object",
"properties": {
"required": {
"type": "array",
"items": {}
},
"conditionally_required": {
"type": "array",
"items": {}
},
"optional": {
"type": "array",
"items": {}
}
},
"required": [
"required",
"conditionally_required",
"optional"
],
"additionalProperties": {}
},
"next_action": {
"type": "string"
}
},
"required": [
"request_id",
"state_version",
"vertical_id",
"user_stage",
"known_fields",
"field_batch",
"next_action"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢render_service_request_form(request_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"request_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
}
},
"required": [
"request_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
},
"state_version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"vertical_id": {
"type": "string"
},
"vertical_introduction": {
"type": "object",
"properties": {
"message": {
"type": "string"
},
"presentation_order": {
"type": "string",
"const": "lead_same_message"
},
"present_once": {
"type": "boolean",
"const": true
}
},
"required": [
"message",
"presentation_order",
"present_once"
],
"additionalProperties": false
},
"user_stage": {
"type": "string",
"enum": [
"intake",
"matching",
"confirmation"
]
},
"known_fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"field_batch": {
"type": "object",
"properties": {
"required": {
"type": "array",
"items": {}
},
"conditionally_required": {
"type": "array",
"items": {}
},
"optional": {
"type": "array",
"items": {}
}
},
"required": [
"required",
"conditionally_required",
"optional"
],
"additionalProperties": {}
},
"next_action": {
"type": "string"
}
},
"required": [
"request_id",
"state_version",
"vertical_id",
"user_stage",
"known_fields",
"field_batch",
"next_action"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡select_service_option(request_id, expected_state_version, option_key, idempotency_key)
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.
輸入結構描述
{
"type": "object",
"properties": {
"request_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
},
"expected_state_version": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"option_key": {
"type": "string",
"minLength": 10,
"maxLength": 100
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
}
},
"required": [
"request_id",
"expected_state_version",
"option_key",
"idempotency_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"request_id": {
"type": "string"
},
"state_version": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"option_key": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"next_action": {
"type": "string",
"const": "complete_protected_form"
}
},
"required": [
"request_id",
"state_version",
"option_key",
"provider_public_name",
"service_date",
"arrival_window",
"next_action"
],
"additionalProperties": {}
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴create_service_booking(booking_authorization_token, idempotency_key, source, campaign_id, anonymous_session_id, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"booking_authorization_token": {
"type": "string",
"minLength": 32
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
},
"source": {
"type": "string",
"enum": [
"chatgpt_plugin",
"chatgpt_ads",
"ai_search",
"organic_search",
"paid_search",
"manual_referral",
"provider_referral",
"direct",
"test"
]
},
"campaign_id": {
"type": "string",
"maxLength": 200
},
"anonymous_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 200
},
"correlation_id": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"booking_authorization_token",
"idempotency_key",
"source",
"anonymous_session_id",
"correlation_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"status": {
"type": "string"
},
"public_booking_ref": {
"type": "string"
},
"account_linking": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "already_linked"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unavailable"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"linking_session_id": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"next_action": {
"type": "string",
"const": "complete_account_link"
}
},
"required": [
"status",
"linking_session_id",
"expires_at",
"next_action"
],
"additionalProperties": false
}
]
}
},
"required": [
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}⚪complete_account_link(linking_session_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"linking_session_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
}
},
"required": [
"linking_session_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"linked": {
"type": "boolean",
"const": true
}
},
"required": [
"linked"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢list_my_service_bookings(status, limit)
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.
輸入結構描述
{
"type": "object",
"properties": {
"status": {
"description": "Use 'active' for cancellation or rescheduling. It returns only actionable appointments whose arrival window has not ended; omit to include history.",
"type": "string",
"maxLength": 40
},
"limit": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"bookings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"status": {
"type": "string"
},
"public_booking_ref": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"is_manageable": {
"type": "boolean"
},
"is_past": {
"type": "boolean"
}
},
"required": [
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"status",
"public_booking_ref",
"is_active",
"is_manageable",
"is_past"
],
"additionalProperties": false
}
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"active_count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"bookings",
"count",
"active_count"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_my_service_booking(booking_id, intent)
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.
輸入結構描述
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
},
"intent": {
"default": "view",
"type": "string",
"enum": [
"view",
"reschedule",
"cancel"
]
}
},
"required": [
"booking_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"booking": {
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"status": {
"type": "string"
},
"public_booking_ref": {
"type": "string"
},
"is_active": {
"type": "boolean"
},
"is_manageable": {
"type": "boolean"
},
"is_past": {
"type": "boolean"
},
"available_actions": {
"type": "array",
"items": {
"type": "string",
"enum": [
"reschedule",
"cancel"
]
}
}
},
"required": [
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"status",
"public_booking_ref",
"is_active",
"is_manageable",
"is_past",
"available_actions"
],
"additionalProperties": false
},
"next_action": {
"type": "string",
"enum": [
"view_complete",
"choose_available_time",
"review_cancellation"
]
}
},
"required": [
"booking",
"next_action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟡prepare_service_booking_change(booking_id, management_context_token, action, new_slot_id, idempotency_key)
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.
輸入結構描述
{
"type": "object",
"properties": {
"booking_id": {
"type": "string",
"minLength": 10,
"maxLength": 200
},
"management_context_token": {
"description": "Opaque short-lived context supplied only by the protected management form.",
"type": "string",
"minLength": 32
},
"action": {
"type": "string",
"enum": [
"reschedule",
"cancel"
]
},
"new_slot_id": {
"type": "string",
"minLength": 32
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
}
},
"required": [
"action",
"idempotency_key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"reschedule",
"cancel"
]
},
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"previous_service_date": {
"type": "string"
},
"previous_arrival_window": {
"type": "string"
},
"policy_text": {
"type": "string"
},
"confirmation_required": {
"type": "boolean",
"const": true
},
"next_action": {
"type": "string",
"const": "confirm_in_protected_form"
}
},
"required": [
"action",
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"policy_text",
"confirmation_required",
"next_action"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴reschedule_service_booking(booking_change_authorization_token, idempotency_key, source, anonymous_session_id, correlation_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"booking_change_authorization_token": {
"type": "string",
"minLength": 32,
"description": "One-time approval supplied only by the protected management form."
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
},
"source": {
"type": "string",
"enum": [
"chatgpt_plugin",
"chatgpt_ads",
"ai_search",
"organic_search",
"paid_search",
"manual_referral",
"provider_referral",
"direct",
"test"
]
},
"anonymous_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 200
},
"correlation_id": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"booking_change_authorization_token",
"idempotency_key",
"source",
"anonymous_session_id",
"correlation_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"status": {
"type": "string"
},
"public_booking_ref": {
"type": "string"
},
"account_linking": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "already_linked"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unavailable"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"linking_session_id": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"next_action": {
"type": "string",
"const": "complete_account_link"
}
},
"required": [
"status",
"linking_session_id",
"expires_at",
"next_action"
],
"additionalProperties": false
}
]
}
},
"required": [
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🔴cancel_service_booking(booking_change_authorization_token, idempotency_key, source, anonymous_session_id, correlation_id)
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.
輸入結構描述
{
"type": "object",
"properties": {
"booking_change_authorization_token": {
"type": "string",
"minLength": 32,
"description": "One-time approval supplied only by the protected management form."
},
"idempotency_key": {
"type": "string",
"minLength": 16,
"maxLength": 200
},
"source": {
"type": "string",
"enum": [
"chatgpt_plugin",
"chatgpt_ads",
"ai_search",
"organic_search",
"paid_search",
"manual_referral",
"provider_referral",
"direct",
"test"
]
},
"anonymous_session_id": {
"type": "string",
"minLength": 8,
"maxLength": 200
},
"correlation_id": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"booking_change_authorization_token",
"idempotency_key",
"source",
"anonymous_session_id",
"correlation_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"anyOf": [
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"provider_public_name": {
"type": "string"
},
"service_date": {
"type": "string"
},
"arrival_window": {
"type": "string"
},
"timezone": {
"type": "string"
},
"status": {
"type": "string"
},
"public_booking_ref": {
"type": "string"
},
"account_linking": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "already_linked"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "unavailable"
}
},
"required": [
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "required"
},
"linking_session_id": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"next_action": {
"type": "string",
"const": "complete_account_link"
}
},
"required": [
"status",
"linking_session_id",
"expires_at",
"next_action"
],
"additionalProperties": false
}
]
}
},
"required": [
"booking_id",
"provider_public_name",
"service_date",
"arrival_window",
"timezone",
"status"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"category": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
},
"correlation_id": {
"type": "string"
},
"details": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"code",
"category",
"message",
"retryable",
"correlation_id",
"details"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
}
]
}
},
"required": [
"result"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社群
證據