{
  "id": null,
  "jsonrpc": "2.0",
  "result": {
    "tools": [
      {
        "description": "Book a new appointment for the caller. Collect their name, phone number, preferred date and time. Always confirm the details before booking.",
        "inputSchema": {
          "properties": {
            "date": {
              "description": "Preferred date in YYYY-MM-DD format",
              "type": "string"
            },
            "guest_email": {
              "description": "Email address (optional)",
              "type": "string"
            },
            "guest_name": {
              "description": "Full name of the person booking the appointment",
              "type": "string"
            },
            "guest_phone": {
              "description": "Phone number of the person booking",
              "type": "string"
            },
            "notes": {
              "description": "Additional notes or reason for appointment",
              "type": "string"
            },
            "service": {
              "description": "Service being booked (optional)",
              "type": "string"
            },
            "staff": {
              "description": "Preferred staff member (optional)",
              "type": "string"
            },
            "time": {
              "description": "Preferred time in HH:MM format (24-hour)",
              "type": "string"
            }
          },
          "required": [
            "guest_name",
            "guest_phone",
            "date",
            "time"
          ],
          "type": "object"
        },
        "name": "book_appointment"
      },
      {
        "description": "Cancel an existing appointment. Ask for the caller's phone number to find their appointment, then confirm before canceling.",
        "inputSchema": {
          "properties": {
            "appointment_id": {
              "description": "Specific appointment ID if known",
              "type": "integer"
            },
            "guest_phone": {
              "description": "Phone number used when booking the appointment",
              "type": "string"
            },
            "reason": {
              "description": "Reason for cancellation (optional)",
              "type": "string"
            }
          },
          "required": [
            "guest_phone"
          ],
          "type": "object"
        },
        "name": "cancel_appointment"
      },
      {
        "description": "Reschedule an existing appointment to a new date and time. Find the appointment by phone number, then move it to the new slot.",
        "inputSchema": {
          "properties": {
            "appointment_id": {
              "description": "Specific appointment ID if known",
              "type": "integer"
            },
            "guest_phone": {
              "description": "Phone number used when booking",
              "type": "string"
            },
            "new_date": {
              "description": "New preferred date in YYYY-MM-DD format",
              "type": "string"
            },
            "new_time": {
              "description": "New preferred time in HH:MM format (24-hour)",
              "type": "string"
            }
          },
          "required": [
            "guest_phone",
            "new_date",
            "new_time"
          ],
          "type": "object"
        },
        "name": "reschedule_appointment"
      },
      {
        "description": "Check available appointment slots for a specific date or date range. Returns available time slots.",
        "inputSchema": {
          "properties": {
            "date": {
              "description": "Date to check in YYYY-MM-DD format",
              "type": "string"
            },
            "service": {
              "description": "Service to check availability for (optional)",
              "type": "string"
            },
            "staff": {
              "description": "Specific staff member to check (optional)",
              "type": "string"
            }
          },
          "required": [
            "date"
          ],
          "type": "object"
        },
        "name": "check_availability"
      },
      {
        "description": "Find an existing appointment by phone number. Returns appointment details if found.",
        "inputSchema": {
          "properties": {
            "guest_phone": {
              "description": "Phone number used when booking",
              "type": "string"
            }
          },
          "required": [
            "guest_phone"
          ],
          "type": "object"
        },
        "name": "find_appointment"
      },
      {
        "description": "Add a caller to the waitlist when no appointments are available. They will be contacted when a slot opens up.",
        "inputSchema": {
          "properties": {
            "guest_email": {
              "description": "Email address (optional)",
              "type": "string"
            },
            "guest_name": {
              "description": "Full name of the person",
              "type": "string"
            },
            "guest_phone": {
              "description": "Phone number to contact",
              "type": "string"
            },
            "notes": {
              "description": "Any preferences or notes",
              "type": "string"
            },
            "preferred_date": {
              "description": "Preferred date or date range",
              "type": "string"
            }
          },
          "required": [
            "guest_name",
            "guest_phone"
          ],
          "type": "object"
        },
        "name": "add_to_waitlist"
      },
      {
        "description": "Get the list of available services offered by this business.",
        "inputSchema": {
          "properties": {},
          "required": [],
          "type": "object"
        },
        "name": "list_services"
      },
      {
        "description": "Get pricing information for a specific service or all services.",
        "inputSchema": {
          "properties": {
            "service_name": {
              "description": "Name of the service to get pricing for (optional, returns all if empty)",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "get_service_pricing"
      },
      {
        "description": "Get the list of available staff members who can provide services.",
        "inputSchema": {
          "properties": {
            "service": {
              "description": "Filter staff by service they provide (optional)",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "list_staff"
      },
      {
        "description": "Check when a specific staff member is available for appointments.",
        "inputSchema": {
          "properties": {
            "date": {
              "description": "Date to check in YYYY-MM-DD format",
              "type": "string"
            },
            "staff_name": {
              "description": "Name of the staff member",
              "type": "string"
            }
          },
          "required": [
            "staff_name",
            "date"
          ],
          "type": "object"
        },
        "name": "get_staff_availability"
      },
      {
        "description": "Look up a customer/contact by their phone number or name. Returns their information and history.",
        "inputSchema": {
          "properties": {
            "name": {
              "description": "Name to search for",
              "type": "string"
            },
            "phone": {
              "description": "Phone number to search for",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "lookup_customer"
      },
      {
        "description": "Get the appointment and interaction history for a customer.",
        "inputSchema": {
          "properties": {
            "phone": {
              "description": "Phone number of the customer",
              "type": "string"
            }
          },
          "required": [
            "phone"
          ],
          "type": "object"
        },
        "name": "get_customer_history"
      },
      {
        "description": "Get the business hours and operating schedule.",
        "inputSchema": {
          "properties": {
            "day": {
              "description": "Specific day to check (optional, returns all days if empty)",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "get_business_hours"
      },
      {
        "description": "Get the business location, address, and directions information.",
        "inputSchema": {
          "properties": {},
          "required": [],
          "type": "object"
        },
        "name": "get_location"
      },
      {
        "description": "Send an SMS message to a phone number. Use for appointment confirmations, reminders, or follow-ups.",
        "inputSchema": {
          "properties": {
            "message": {
              "description": "Message content to send",
              "type": "string"
            },
            "phone": {
              "description": "Phone number to send SMS to",
              "type": "string"
            }
          },
          "required": [
            "phone",
            "message"
          ],
          "type": "object"
        },
        "name": "send_sms"
      },
      {
        "description": "Send an email to a customer. Use for appointment confirmations, detailed information, or follow-ups.",
        "inputSchema": {
          "properties": {
            "body": {
              "description": "Email body content",
              "type": "string"
            },
            "email": {
              "description": "Email address to send to",
              "type": "string"
            },
            "subject": {
              "description": "Email subject line",
              "type": "string"
            }
          },
          "required": [
            "email",
            "subject",
            "body"
          ],
          "type": "object"
        },
        "name": "send_email"
      },
      {
        "description": "Transfer the call to a human agent when the AI cannot help or caller requests human assistance.",
        "inputSchema": {
          "properties": {
            "department": {
              "description": "Department to transfer to (sales, support, billing, general)",
              "type": "string"
            },
            "reason": {
              "description": "Reason for transfer",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "transfer_to_human"
      },
      {
        "description": "Record a callback request when someone cannot be helped immediately or office is closed.",
        "inputSchema": {
          "properties": {
            "name": {
              "description": "Caller's name",
              "type": "string"
            },
            "phone": {
              "description": "Phone number to call back",
              "type": "string"
            },
            "preferred_time": {
              "description": "Preferred callback time",
              "type": "string"
            },
            "reason": {
              "description": "Reason for callback",
              "type": "string"
            }
          },
          "required": [
            "name",
            "phone"
          ],
          "type": "object"
        },
        "name": "leave_callback_request"
      },
      {
        "description": "Check the history of previous calls from the caller's phone number.",
        "inputSchema": {
          "properties": {
            "phone_number": {
              "description": "Phone number to check history for",
              "type": "string"
            }
          },
          "required": [
            "phone_number"
          ],
          "type": "object"
        },
        "name": "check_call_history"
      }
    ]
  }
}
