MCP Server

Honesty Support

com.honestysupport/support
Business & Operations Payments & Fintech Public & reachable MCP 2025-11-25

What this MCP does

Provides human-operated remote IT support workflows, including issue triage, technician scheduling, ticket creation, and card or cryptocurrency payment steps.

book_technician
Reserve a previously selected time only when customer_confirmed is true and the session is waiting for that confirmation. Requires the agent bearer token. Does not mark the visit paid. Calling this with customer_confirmed false is rejected.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'customer_confirmed'], 'properties': {'name': {'type': ['string', 'null'], 'default': None}, 'email': {'type': ['string', 'null'], 'default': None}, 'session_id': {'type': 'string'}, 'idempotency_key': {'type': ['string', 'null'], 'default': None}, 'customer_confirmed': {'type': 'boolean', 'description': 'True only after the customer explicitly agrees to the price and time.'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
cancel_booking
Cancel an unpaid reservation. Paid visits are not cancelled here. Requires the agent bearer token.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
continue_triage
Add the customer's next message. If they name one of the offered times, the price is shown and nothing is reserved until they confirm.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'message'], 'properties': {'message': {'type': 'string'}, 'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
create_support_checkout
Return the Stripe checkout URL for a reserved unpaid visit. Requires the agent bearer token. Never marks the invoice paid.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'$ref': '#/$defs/BookingStatus'}, 'checkout_url': {'type': ['string', 'null']}}}
create_support_ticket
Open the support ticket for this diagnosis and store the technician summary. Requires the agent bearer token. Does not book a time.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}
get_booking_status
Payment and reservation status from the database. Paid is true only after Stripe has recorded payment.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}
get_crypto_payment
How an agent pays USDC for a human request. Lists MetaMask, Coinbase Wallet, Trust Wallet, Phantom, and Rainbow, plus the receiving address on Base, Ethereum, and Solana. Read-only. AI agents pay crypto for human requests.
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', '$defs': {'PayAccept': {'type': 'object', 'required': ['chain', 'network', 'asset', 'pay_to', 'ready'], 'properties': {'asset': {'type': 'string'}, 'chain': {'type': 'string'}, 'ready': {'type': 'boolean'}, 'pay_to': {'type': 'string'}, 'network': {'type': 'string'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['statement', 'agents_pay_crypto_for_human_requests', 'asset', 'pay_page', 'wallets', 'accepts'], 'properties': {'asset': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'$ref': '#/$defs/PayAccept'}}, 'wallets': {'type': 'array', 'items': {'type': 'string'}}, 'pay_page': {'type': 'string'}, 'statement': {'type': 'string'}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean'}}}
get_support_options
List Honesty Support categories, session lengths, and the rule that a human is booked only after the customer confirms. AI agents pay crypto for human requests. Read-only. Call this first.
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['categories', 'session_lengths', 'disclosure', 'phone', 'ai_page', 'agents_pay_crypto_for_human_requests', 'crypto_pay_page'], 'properties': {'phone': {'type': 'string'}, 'ai_page': {'type': 'string'}, 'categories': {'type': 'array', 'items': {'type': 'string'}}, 'disclosure': {'type': 'string'}, 'crypto_pay_page': {'type': 'string'}, 'session_lengths': {'type': 'array', 'items': {'type': 'integer', 'format': 'int32'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean'}}}
get_support_pricing
Authoritative one-time remote IT price. Do not invent a price. Read-only.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'minutes': {'type': ['integer', 'null'], 'format': 'int32', 'default': None, 'description': '30, 60, 90, or 120. Other values snap to the nearest allowed length.'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}
get_support_ticket
Read the structured triage and ticket id for a session the caller already has.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}
get_technician_availability
Open technician times in UTC. Times already reserved are omitted. Read-only.
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'array', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}}, 'items': {'$ref': '#/$defs/SlotOffer'}, '$schema': 'https://json-schema.org/draft/2020-12/schema'}
handoff_to_human
Same as request_human_help. Prepares the technician summary and offers times.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
request_asap_help
Open an urgent ticket and return the phone number. Does not claim a technician was pinged and does not charge. Requires the agent bearer token.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
request_human_help
Customer asked for a person. Returns open times. Does not reserve one.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
request_task
Submit one support task from the customer's words and email. Returns a task id and a crypto pay URL. AI agents pay crypto for human requests. Does not book a time, charge a card, or assign a technician.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['message', 'email'], 'properties': {'name': {'type': ['string', 'null'], 'default': None, 'description': 'Customer name, when they have given it.'}, 'email': {'type': 'string', 'description': 'Where a technician should follow up.'}, 'message': {'type': 'string', 'description': "The customer's description of the problem."}, 'idempotency_key': {'type': ['string', 'null'], 'default': None, 'description': 'Caller-supplied key so a retry returns the same task.'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['task_id', 'session_id', 'status', 'message', 'category', 'agents_pay_crypto_for_human_requests', 'crypto_pay_url'], 'properties': {'status': {'type': 'string'}, 'message': {'type': 'string'}, 'task_id': {'type': 'string'}, 'category': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'crypto_pay_url': {'type': 'string'}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean'}}}
start_support_session
Same as triage_issue. Opens a diagnosis session and does not book or charge.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['message'], 'properties': {'name': {'type': ['string', 'null'], 'default': None, 'description': 'Customer name, when they have given it.'}, 'email': {'type': ['string', 'null'], 'default': None, 'description': 'Customer email, when they have given it.'}, 'message': {'type': 'string', 'description': "The customer's own description of the problem."}, 'idempotency_key': {'type': ['string', 'null'], 'default': None, 'description': 'Caller-supplied key so a retry does not open a second diagnosis.'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
submit_crypto_payment
Confirm a USDC transfer that pays for a human task. The transaction must already be on Base, Ethereum, or Solana. Does not accept card data. AI agents pay crypto for human requests.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['task_id', 'chain', 'tx_hash'], 'properties': {'chain': {'type': 'string', 'description': 'base, ethereum, or solana.'}, 'wallet': {'type': 'string', 'default': '', 'description': 'metamask, coinbase, trust, phantom, or rainbow.'}, 'minutes': {'type': ['integer', 'null'], 'format': 'int32', 'default': None}, 'task_id': {'type': 'string'}, 'tx_hash': {'type': 'string'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['paid', 'already_recorded', 'task_id', 'chain', 'wallet', 'tx_hash', 'usdc_units', 'price_label', 'statement'], 'properties': {'paid': {'type': 'boolean'}, 'chain': {'type': 'string'}, 'wallet': {'type': 'string'}, 'task_id': {'type': 'string'}, 'tx_hash': {'type': 'string'}, 'statement': {'type': 'string'}, 'usdc_units': {'type': 'string'}, 'price_label': {'type': 'string'}, 'already_recorded': {'type': 'boolean'}}}
triage_issue
Start a diagnosis from the customer's words. Returns session_id and structured triage. Does not book or charge.
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['message'], 'properties': {'name': {'type': ['string', 'null'], 'default': None, 'description': 'Customer name, when they have given it.'}, 'email': {'type': ['string', 'null'], 'default': None, 'description': 'Customer email, when they have given it.'}, 'message': {'type': 'string', 'description': "The customer's own description of the problem."}, 'idempotency_key': {'type': ['string', 'null'], 'default': None, 'description': 'Caller-supplied key so a retry does not open a second diagnosis.'}}}
Output schema
{'type': 'object', '$defs': {'SlotOffer': {'type': 'object', 'required': ['start_utc', 'label', 'minutes'], 'properties': {'label': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'start_utc': {'type': 'string'}}}, 'PriceQuote': {'type': 'object', 'required': ['minutes', 'duration_label', 'price_cents', 'price_label', 'currency', 'source'], 'properties': {'source': {'type': 'string'}, 'minutes': {'type': 'integer', 'format': 'int32'}, 'currency': {'type': 'string'}, 'price_cents': {'type': 'integer', 'format': 'int64'}, 'price_label': {'type': 'string'}, 'duration_label': {'type': 'string'}}}, 'SessionState': {'enum': ['AI_TRIAGE', 'AI_TROUBLESHOOTING', 'HUMAN_REQUESTED', 'AWAITING_TIME_SELECTION', 'AWAITING_CUSTOMER_CONFIRMATION', 'AWAITING_PAYMENT', 'BOOKED', 'TECHNICIAN_ASSIGNED', 'SESSION_READY', 'IN_PROGRESS', 'COMPLETED', 'CANCELLED'], 'type': 'string'}, 'TriageResult': {'type': 'object', 'required': ['category', 'subcategory', 'device_type', 'operating_system', 'symptoms', 'error_messages', 'steps_already_attempted', 'severity', 'urgency', 'remote_support_possible', 'human_required', 'estimated_minutes', 'customer_summary', 'technician_summary', 'suggested_next_action', 'confidence'], 'properties': {'urgency': {'type': 'string'}, 'asked_os': {'type': 'boolean', 'default': False}, 'category': {'type': 'string'}, 'severity': {'type': 'string'}, 'symptoms': {'type': 'array', 'items': {'type': 'string'}}, 'ticket_id': {'type': ['string', 'null']}, 'confidence': {'type': 'number', 'format': 'float'}, 'device_type': {'type': 'string'}, 'subcategory': {'type': 'string'}, 'offered_slots': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'error_messages': {'type': 'array', 'items': {'type': 'string'}}, 'human_required': {'type': 'boolean'}, 'customer_summary': {'type': 'string'}, 'operating_system': {'type': 'string'}, 'estimated_minutes': {'type': 'integer', 'format': 'int32'}, 'technician_summary': {'type': 'string'}, 'suggested_next_action': {'type': 'string'}, 'remote_support_possible': {'type': 'boolean'}, 'steps_already_attempted': {'type': 'array', 'items': {'type': 'string'}}, 'agents_pay_crypto_for_human_requests': {'type': 'boolean', 'default': True, 'description': 'Always true. An agent that asks for a human pays that task in crypto.'}}}, 'BookingStatus': {'type': 'object', 'required': ['consultation_id', 'public_token', 'status', 'start_utc', 'paid'], 'properties': {'paid': {'type': 'boolean'}, 'status': {'type': 'string'}, 'start_utc': {'type': 'string'}, 'ticket_id': {'type': ['string', 'null']}, 'public_token': {'type': 'string'}, 'consultation_id': {'type': 'integer', 'format': 'int64'}}}}, '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['session_id', 'state', 'speaker', 'message', 'triage', 'slots', 'payment_status'], 'properties': {'price': {'anyOf': [{'$ref': '#/$defs/PriceQuote'}, {'type': 'null'}]}, 'slots': {'type': 'array', 'items': {'$ref': '#/$defs/SlotOffer'}}, 'state': {'$ref': '#/$defs/SessionState'}, 'triage': {'$ref': '#/$defs/TriageResult'}, 'booking': {'anyOf': [{'$ref': '#/$defs/BookingStatus'}, {'type': 'null'}]}, 'message': {'type': 'string'}, 'speaker': {'type': 'string'}, 'session_id': {'type': 'string', 'format': 'uuid'}, 'checkout_url': {'type': ['string', 'null']}, 'payment_status': {'type': 'string'}}}
Added
triage_issue
Oct. 1, 2026, 2:40 a.m.
Added
submit_crypto_payment
Oct. 1, 2026, 2:40 a.m.
Added
start_support_session
Oct. 1, 2026, 2:40 a.m.
Added
request_task
Oct. 1, 2026, 2:40 a.m.
Added
request_human_help
Oct. 1, 2026, 2:40 a.m.
Added
request_asap_help
Oct. 1, 2026, 2:40 a.m.
Added
handoff_to_human
Oct. 1, 2026, 2:40 a.m.
Added
get_technician_availability
Oct. 1, 2026, 2:40 a.m.
Added
get_support_ticket
Oct. 1, 2026, 2:40 a.m.
Added
get_support_pricing
Oct. 1, 2026, 2:40 a.m.
Added
get_support_options
Oct. 1, 2026, 2:40 a.m.
Added
get_crypto_payment
Oct. 1, 2026, 2:40 a.m.
Added
get_booking_status
Oct. 1, 2026, 2:40 a.m.
Added
create_support_ticket
Oct. 1, 2026, 2:40 a.m.
Added
create_support_checkout
Oct. 1, 2026, 2:40 a.m.
Added
continue_triage
Oct. 1, 2026, 2:40 a.m.
Added
cancel_booking
Oct. 1, 2026, 2:40 a.m.
Added
book_technician
Oct. 1, 2026, 2:40 a.m.