{"availableMcpServers":[{"name":"Address Validation API","description":"Check if an address is valid.","tools":[{"name":"Get Geo Address","description":"Geocodes an address using Google Maps Geocoding API. Takes a street address or ZIP code and returns geocoded address suggestions. Uses optional city, state, and country MCP properties to streamline search when provided.","methodName":"getGeoAddress","params":[{"name":"street","description":"Street address or ZIP code to geocode.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"address-validation-api","properties":[{"name":"country","propertyKey":"country","description":"Default country (or comma-separated list of countries) for address searches (optional). When multiple countries are provided, the geocoder is queried in parallel for each and results are merged. Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"states","propertyKey":"states","description":"Default states to search for for address searches (optional). Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"values":["Alabama","Alaska","Arizona","Arkansas","California","Colorado","Connecticut","Delaware","Florida","Georgia","Hawaii","Idaho","Illinois","Indiana","Iowa","Kansas","Kentucky","Louisiana","Maine","Maryland","Massachusetts","Michigan","Minnesota","Mississippi","Missouri","Montana","Nebraska","Nevada","New Hampshire","New Jersey","New Mexico","New York","North Carolina","North Dakota","Ohio","Oklahoma","Oregon","Pennsylvania","Rhode Island","South Carolina","South Dakota","Tennessee","Texas","Utah","Vermont","Virginia","Washington","West Virginia","Wisconsin","Wyoming"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","propertyKey":"city","description":"Default city for address searches (optional). Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"Genesys Cloud API","description":"Interact with Genesys Cloud for call handling, conversation management, and participant attribute management.","tools":[{"name":"Forward To Agent","description":"Forward the current call to a human agent. Automatically saves session data to Genesys and initiates conversation stitching.","methodName":"forwardToAgent","params":[{"name":"escalationReason","description":"Reason for escalating to human agent","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"summary","description":"Summary of the interaction so far","required":true,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Get Appointment Slots","description":"Retrieves available appointment slots from CertaPro by zip code. Returns a list of available time slots with human-readable date, day, and time information. Optionally filter to only show slots within the next N days.","methodName":"getAppointmentSlots","params":[{"name":"zipCode","description":"Zip code to search for available appointment slots","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"numDays","description":"Number of days from now to include available slots (e.g. 7 for next 7 days)","required":true,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Submit Lead","description":"Submits a new lead to CertaPro with customer information, job details, and selected appointment. Returns a confirmation number on success.","methodName":"submitLead","params":[{"name":"firstName","description":"Customer's first name","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastName","description":"Customer's last name","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phoneNumber","description":"Customer's phone number","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"streetAddress","description":"Street address for the job","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"City for the job location","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"state","description":"State for the job location","required":true,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipcode","description":"Zip code for the job location","required":true,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"emailAddress","description":"Customer's email address","required":true,"index":7,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobType","description":"Type of painting job: Interior, Exterior, or Both","required":true,"index":8,"schema":{"_def":{"values":["Interior","Exterior","Both"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"notes","description":"Additional notes about the job","required":true,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"appointmentId","description":"ID of the selected appointment slot from getAppointmentSlots","required":true,"index":10,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"genesys-cloud","properties":[{"name":"pollingIntervalMs","propertyKey":"pollingIntervalMs","description":"Polling interval in milliseconds when monitoring for new conversations (default: 2000).","schema":{"_def":{"innerType":{"_def":{"checks":[{"kind":"min","value":500,"inclusive":true},{"kind":"max","value":30000,"inclusive":true}],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"pollingTimeoutMs","propertyKey":"pollingTimeoutMs","description":"Maximum time to poll for new conversations in milliseconds (default: 60000).","schema":{"_def":{"innerType":{"_def":{"checks":[{"kind":"min","value":5000,"inclusive":true},{"kind":"max","value":300000,"inclusive":true}],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"transferTargetNumber","propertyKey":"transferTargetNumber","description":"Default target number for call transfers to human agents.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"certaproLeadSource","propertyKey":"certaproLeadSource","description":"Lead source identifier for CertaPro lead submissions.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"Housecall v1 API","description":"Interact with selected Housecall v1 endpoints (customers, jobs).","tools":[{"name":"Get Customer","description":"Retrieve a customer by ID from Housecall.","methodName":"getCustomer","params":[{"name":"id","description":"The UUID of the customer to retrieve","required":true,"index":0,"schema":{"_def":{"checks":[{"kind":"uuid"}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Search Customers By Phone","description":"Find existing customers using a phone number provided during the call.","methodName":"searchCustomersByPhone","params":[{"name":"phone","description":"Phone number (partial or full) used to search","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Find Or Create Customer","description":"Lookup by phone and create if not found (returns the single customer record).","methodName":"findOrCreateCustomer","params":[{"name":"last_name","description":"Optional last name","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"first_name","description":"Optional first name","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Customer phone number","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"List Available Estimate Slots","description":"Return available estimate slots for the given date with bookable employees.","methodName":"listAvailableEstimateSlots","params":[{"name":"date","description":"Date (YYYY-MM-DD) in EST","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Book Estimate","description":"Create and schedule an estimate with required last name, free estimate line item, bookable employees, and call summary note.","methodName":"bookEstimate","params":[{"name":"call_summary","description":"A Detailed summary of what was discussed during the call","required":true,"index":11,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"description","description":"Short description","required":false,"index":10,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"end_time","description":"End time (ISO8601 EST 2hr block)","required":true,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"start_time","description":"Start time (ISO8601 EST 2hr block)","required":true,"index":8,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"country","description":"Country code","required":false,"index":7,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zip","description":"Postal code","required":true,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"state","description":"State/Province","required":true,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"City","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"street","description":"Street address","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"last_name","description":"Last name (required)","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"first_name","description":"First name","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Customer phone","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"housecall-v1","properties":[{"name":"apiKey","propertyKey":"apiKey","description":"Housecall API key for Authorization header","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"callHandlerEmails","propertyKey":"callHandlerEmails","description":"Emails of employees who will handle calls(comma-separated)","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"slotSizeHours","propertyKey":"slotSizeHours","description":"Duration of each estimate slot in hours (default: 2)","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"bufferMinutes","propertyKey":"bufferMinutes","description":"Buffer time in minutes to add after each booking (default: 0)","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"HubSpot CRM API","description":"Interact with HubSpot CRM for contact management and appointment scheduling.","tools":[{"name":"Create Contact","description":"Create a new contact in HubSpot CRM with contact information.","methodName":"createContact","params":[{"name":"jobtitle","description":"Contact's job title","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"company","description":"Contact's company name","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Contact's phone number","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastname","description":"Contact's last name","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstname","description":"Contact's first name","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Contact's email address","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Get Contact","description":"Retrieve a contact by ID or email from HubSpot.","methodName":"getContact","params":[{"name":"email","description":"Contact's email address","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"contactId","description":"HubSpot contact ID","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Search Contacts","description":"Search for contacts in HubSpot using various criteria.","methodName":"searchContacts","params":[{"name":"limit","description":"Maximum number of results","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Search by phone number","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastname","description":"Search by last name","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstname","description":"Search by first name","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Search by email","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Get Meeting Booking Info","description":"Get booking information and availability for a meeting link.","methodName":"getMeetingBookingInfo","params":[{"name":"monthOffset","description":"Months forward from current month","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timezone","description":"Timezone (e.g., 'America/New_York') MUST BE IN PROPER TZ DATABASE FORMAT","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Get Available Time Slots","description":"Get human-readable available time slots for booking meetings.","methodName":"getMeetingAvailability","params":[{"name":"days","description":"Number of days to look ahead (default: 14)","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timezone","description":"Timezone (e.g., 'America/New_York')","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Book Meeting Slot","description":"Book a meeting using a time slot ID from the availability results.","methodName":"bookMeeting","params":[{"name":"locale","description":"Locale (e.g., 'en-us')","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timezone","description":"Timezone","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Attendee email","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastName","description":"Attendee last name","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstName","description":"Attendee first name","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timeSlotId","description":"Time slot ID from availability results","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Create Note","description":"Create a note in HubSpot and associate it with contacts.","methodName":"createNote","params":[{"name":"contactIds","description":"Contact IDs to associate with","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"noteBody","description":"Content of the note","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Test Connection","description":"Test the HubSpot API connection and authentication.","methodName":"testConnection","params":[],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"hubspot","properties":[{"name":"accessToken","propertyKey":"accessToken","description":"HubSpot Private App Access Token for API authentication","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"meetingSlug","propertyKey":"meetingSlug","description":"HubSpot meeting link slug (e.g., 'jdoe') for scheduling operations","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"Outreachgenius Calendar","description":"Get and book slots via Outreachgenius","tools":[{"name":"Get Available Slots","description":"Return available Cronofy slots for an eventId (mapped via project/zip if provided)","methodName":"getAvailableSlots","params":[{"name":"timezone","description":"Timezone","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipCode","description":"Zip code of the customer","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Book Slot","description":"Book a Cronofy calendar slot for an event","methodName":"bookSlot","params":[{"name":"timezone","description":"Timezone","required":false,"index":8,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"cname","description":"Company/name","required":false,"index":7,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastName","description":"Last name","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipCode","description":"Zip code of the customer","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Phone number","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstName","description":"First name","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"leadEmail","description":"Lead email","required":true,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Attendee email","required":true,"index":1,"schema":{"_def":{"checks":[{"kind":"email"}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"slotId","description":"Base64 encoded slot ID from getAvailableSlots","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"Outreachgenius","properties":[]},{"name":"Public Holiday API","description":"Check if today is a public holiday.","tools":[{"name":"holiday-check-v1","description":"Checks if today is a public holiday in the given timezone. Returns an object where success is true and the message contains the holiday name (or 'Specified By Date') if it is a holiday. If it is not a holiday, success is false and the message provides the reason or status.","methodName":"isPublicHoliday","params":[{"name":"dateToCheck","description":"The date to check for a public holiday in YYYY-MM-DD format","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"public-holiday-api","properties":[{"name":"timezone","propertyKey":"timezone","description":"The timezone applied when identifying holidays","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"holidaynames","propertyKey":"holidaynames","description":"List of holiday names to check for. (e.g. ['New Year's Day', 'Christmas Day'])","schema":{"_def":{"type":{"_def":{"values":["New Year's Day","Easter Sunday","Memorial Day","Labor Day","Independence Day","Thanksgiving Day","Day after Thanksgiving Day","Christmas Eve","Christmas Day"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"holidaydates","propertyKey":"holidaydates","description":"Comma-separated list of holiday dates to check for.(e.g 2025-11-12, 2025-12-25)","schema":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"Sample API","description":"This is a sample MCP API.","tools":[{"name":"Sample Tool","description":"This is a sample tool within the Sample API.","methodName":"sampleTool","params":[{"name":"param1","description":"This is a sample parameter.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"Counter Tool","description":"This tool increments a counter stored in the session.","methodName":"counterTool","params":[],"outputSchema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"id":"sample-api","properties":[{"name":"sampleProperty","propertyKey":"sampleProperty","description":"This is a sample property.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"ServiceMinder API","description":"Interact with ServiceMinder for contact management, appointment booking, and scheduling - focused on receptionist workflows.","tools":[{"name":"Locate Contact","description":"Search for existing contacts by name, phone, email, or address. Essential for identifying callers.","methodName":"locateContact","params":[{"name":"limit","description":"Maximum number of results to return","required":false,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"addressSearch","description":"Search by address","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"emailSearch","description":"Search by email address","required":false,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phoneSearch","description":"Search by phone number","required":false,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"nameSearch","description":"Search by customer name","required":false,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Add or Update Contact","description":"Create a new contact or update existing one. Use when customer information needs to be added or modified.","methodName":"addUpdateContact","params":[{"name":"campaign","description":"Marketing campaign","required":false,"index":10,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"channel","description":"Lead source channel","required":false,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zip","description":"ZIP code","required":false,"index":8,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"state","description":"State","required":false,"index":7,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"City","required":false,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address2","description":"Apartment/unit number","required":false,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address1","description":"Street address","required":false,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"company","description":"Company name","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Email address","required":false,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Primary phone number","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Customer's full name","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Add Note to Contact","description":"Add a note to a customer's record. Useful for call logs and follow-up information.","methodName":"addNoteToContact","params":[{"name":"noteBody","description":"Content of the note","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"noteTitle","description":"Title of the note","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"contactId","description":"Contact ID to add note to","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Search Available Slots","description":"Find available appointment slots for scheduling. Essential for booking appointments.","methodName":"searchAvailableSlots","params":[{"name":"slotWindowDays","description":"Number of days to search ahead","required":false,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timeframe","description":"Preferred time (morning, afternoon, evening)","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"searchDate","description":"Date to search from (YYYY-MM-DD)","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"duration","description":"Duration in minutes","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"contactId","description":"Customer's contact ID","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Book Appointment","description":"Book a confirmed appointment for a customer. Use after finding available slots.","methodName":"bookAppointment","params":[{"name":"quantity","description":"Quantity of service","required":false,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"serviceName","description":"Name of the service (uses default if not provided)","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"notes","description":"Additional notes for the appointment","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"duration","description":"Duration in minutes","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"targetDate","description":"Appointment date and time (YYYY-MM-DD HH:MM)","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"contactId","description":"Customer's contact ID","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"Log Call","description":"Log details of a phone call interaction.","methodName":"logCall","params":[{"name":"callDetails","description":"Details of the call","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"length","description":"Call duration in minutes","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}}],"id":"serviceminder","properties":[{"name":"apiKey","propertyKey":"apiKey","description":"ServiceMinder API key for authentication","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"serviceType","propertyKey":"serviceType","description":"Default service type/name for booking appointments","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"serviceAgentEmails","propertyKey":"serviceAgentEmails","description":"Comma-separated list of service agent emails to book appointments with","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"CertaPro API","description":"CertaPro calendar and lead management API for scheduling painting estimates and appointments via Cronofy integration.","tools":[{"name":"Get Events","description":"Retrieves available calendar events/slots filtered by the configured filterName. Events are filtered to only show slots where the summary matches the filter (e.g., \"ALL\" for available slots).","methodName":"getEvents","params":[{"name":"zipCode","description":"Zip code of the customer","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Event","description":"Books/updates a calendar event with customer information. Takes an event_uid from the available slots and updates it with customer details.","methodName":"updateEvent","params":[{"name":"notes","description":"Additional notes","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Service address","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipCode","description":"Zip code of the customer","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Customer phone number","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"prospectName","description":"Full name of the prospect/customer","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Customer email address","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"event_uid","description":"The event_uid of the slot to book (from getEvents)","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"certapro","properties":[{"name":"timeZone","propertyKey":"timeZone","description":"Timezone for date/time operations.","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"filterName","propertyKey":"filterName","description":"Name to filter calendar events by (e.g., 'ALL' for all available slots).","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"filterMode","propertyKey":"filterMode","description":"How to match filterName: 'equal' for exact match, 'included' for contains match.","schema":{"_def":{"innerType":{"_def":{"values":["equal","included"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestStartMessage","propertyKey":"toolRequestStartMessage","description":"Comma-separated messages spoken when a tool call starts (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestCompleteMessage","propertyKey":"toolRequestCompleteMessage","description":"Comma-separated messages spoken when a tool call completes (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestFailedMessage","propertyKey":"toolRequestFailedMessage","description":"Comma-separated messages spoken when a tool call fails (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestResponseDelayedMessage","propertyKey":"toolRequestResponseDelayedMessage","description":"Comma-separated messages spoken when a tool call is delayed (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"CertaPro V2 API","description":"CertaPro calendar and lead management API for scheduling painting estimates and appointments via Cronofy integration.","tools":[{"name":"Get Events","description":"Retrieves available calendar events/slots filtered by the configured filterName. Events are filtered to only show slots where the summary matches the filter (e.g., \"ALL\" for available slots).","methodName":"getEvents","params":[{"name":"zipCode","description":"Zip code of the customer","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Event","description":"Books/updates a calendar event with customer information. Takes an event_uid from the available slots and updates it with customer details.","methodName":"updateEvent","params":[{"name":"event_uid","description":"The event_uid of the slot to book (from getEvents)","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Customer email address","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"prospectName","description":"Full name of the prospect/customer","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Customer phone number","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipCode","description":"Zip code of the customer","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Service address","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"notes","description":"Additional notes","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"certaprov2","properties":[{"name":"timeZone","propertyKey":"timeZone","description":"Timezone for date/time operations.","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"filterName","propertyKey":"filterName","description":"Name to filter calendar events by (e.g., 'ALL' for all available slots).","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"filterMode","propertyKey":"filterMode","description":"How to match filterName: 'equal' for exact match, 'included' for contains match.","schema":{"_def":{"innerType":{"_def":{"values":["equal","included"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"eventId","propertyKey":"eventId","description":"The event ID to use when querying calendar events from the event table.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestStartMessage","propertyKey":"toolRequestStartMessage","description":"Comma-separated messages spoken when a tool call starts (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestCompleteMessage","propertyKey":"toolRequestCompleteMessage","description":"Comma-separated messages spoken when a tool call completes (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestFailedMessage","propertyKey":"toolRequestFailedMessage","description":"Comma-separated messages spoken when a tool call fails (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestResponseDelayedMessage","propertyKey":"toolRequestResponseDelayedMessage","description":"Comma-separated messages spoken when a tool call is delayed (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"CertaPro V3 API","description":"CertaPro calendar and lead management API for scheduling painting estimates and appointments via Cronofy integration.","tools":[{"name":"Get Events","description":"Retrieves available calendar slots by finding teams matching the zip code and team type, then filtering each calendar's events using its configured filter rules.","methodName":"getEvents","params":[{"name":"zipCode","description":"Zip code of the customer. Falls back to the configured default zip code if not provided.","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"teamType","description":"Team type (residential or commercial). Falls back to the configured default team type if not provided.","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"values":["residential","commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Event","description":"Books/updates a calendar event with customer information. Takes an event_uid from the available slots and updates it with customer details.","methodName":"updateEvent","params":[{"name":"event_uid","description":"The event_uid of the slot to book (from getEvents)","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Customer email address","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"prospectName","description":"Full name of the prospect/customer","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"Customer phone number","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zipCode","description":"Zip code of the customer","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"teamType","description":"Team type (residential or commercial). Falls back to the configured default team type if not provided.","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"values":["residential","commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Service address","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"notes","description":"Additional notes","required":false,"index":7,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"certaprov3","properties":[{"name":"timeZone","propertyKey":"timeZone","description":"Timezone for date/time operations.","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"defaultZipCode","propertyKey":"defaultZipCode","description":"Optional default zip code used when no zip code is provided by the caller.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"useZipPrefix","propertyKey":"useZipPrefix","description":"When 'true', matches zip codes by prefix (e.g. team zip 'R3C' matches caller zip 'R3C 3G4'). When 'false', requires exact match.","schema":{"_def":{"innerType":{"_def":{"values":["true","false"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"defaultTeamType","propertyKey":"defaultTeamType","description":"Optional default team type used when no team type is provided by the caller.","schema":{"_def":{"innerType":{"_def":{"values":["residential","commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestStartMessage","propertyKey":"toolRequestStartMessage","description":"Comma-separated messages spoken when a tool call starts (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestCompleteMessage","propertyKey":"toolRequestCompleteMessage","description":"Comma-separated messages spoken when a tool call completes (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestFailedMessage","propertyKey":"toolRequestFailedMessage","description":"Comma-separated messages spoken when a tool call fails (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestResponseDelayedMessage","propertyKey":"toolRequestResponseDelayedMessage","description":"Comma-separated messages spoken when a tool call is delayed (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"PSA API","description":"SOAP-based API for PSA (Canam) system integration - job management and more.","tools":[{"name":"Get Job","description":"Retrieve job details by ID from PSA system.","methodName":"getJob","params":[{"name":"jobId","description":"The ID of the job to retrieve","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Company","description":"Retrieve company details by ID from PSA system.","methodName":"getCompany","params":[{"name":"companyId","description":"The ID of the company to retrieve","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Contact","description":"Retrieve contact details by ID from PSA system.","methodName":"getContact","params":[{"name":"contactId","description":"The ID of the contact to retrieve","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Add Company","description":"Create a new company in PSA system with primary site and optional contact info.","methodName":"addCompany","params":[{"name":"phone","description":"Phone number","required":false,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Email address","required":false,"index":8,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"postalCode","description":"Postal/ZIP code","required":false,"index":7,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"country","description":"Country","required":false,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"siteName","description":"Site name","required":true,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"region","description":"Province/State","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"City","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Street address","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"companyType","description":"Company type: CUSTOMER=1, VENDOR=2","required":true,"index":1,"schema":{"_def":{"values":{"1":"CUSTOMER","2":"VENDOR","CUSTOMER":1,"VENDOR":2},"typeName":"ZodNativeEnum"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Company name","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Add Contact","description":"Create a new contact in PSA system associated with the configured company.","methodName":"addContact","params":[{"name":"phone","description":"Phone number of the contact","required":false,"index":10,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"Email address of the contact","required":false,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"subregion","description":"County/Subregion of the contact","required":false,"index":8,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"postalCode","description":"Postal/ZIP code of the contact","required":false,"index":7,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"country","description":"Country of the contact","required":false,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"title","description":"Title of the contact (e.g., Doctor, Mr., Mrs.)","required":false,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"region","description":"Province/State of the contact","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"City of the contact","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Street address of the contact","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastName","description":"Last name of the contact","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstName","description":"First name of the contact","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Add Job","description":"Create a new job in PSA system. Only name is required.","methodName":"addJob","params":[{"name":"siteName","description":"Site name","required":false,"index":6,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"siteRegion","description":"Province/State","required":false,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"siteCity","description":"City","required":false,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"siteAddress","description":"Street address","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"contactId","description":"Contact ID to link to the job","required":false,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"buildingType","description":"Building type (e.g., 'Residential', 'Commercial')","required":false,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Job name","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"psa","properties":[{"name":"apiKey","propertyKey":"apiKey","description":"PSA API Key received from support@canamsys.com when customer approves integration","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"schemaID","propertyKey":"schemaID","description":"Schema ID received from support@canamsys.com when customer approves integration","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"syncType","propertyKey":"syncType","description":"Constant value signifying the integration that is sending the request","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"loginServiceUrl","propertyKey":"loginServiceUrl","description":"Login Service URL for PSA (e.g., https://beta.psarcweb.com/LoginService/LoginService.svc)","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"companyId","propertyKey":"companyId","description":"Company ID for the PSA integration","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"ServiceTitan API","description":"This is the ServiceTitan MCP API.","tools":[{"name":"Get Campaigns","description":"Retrieves all active campaigns from ServiceTitan.","methodName":"getCampaignsPublic","params":[],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Business Units","description":"Retrieves all active business units from ServiceTitan.","methodName":"getBusinessUnitsPublic","params":[],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Job Types","description":"Retrieves all active job types from ServiceTitan.","methodName":"getJobTypesPublic","params":[],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Geo Address","description":"Geocodes an address using Google Maps Geocoding API. Takes a street address or ZIP code and returns geocoded address suggestions. Uses optional city, state, and country MCP properties to streamline search when provided.","methodName":"getGeoAddress","params":[{"name":"street","description":"Street address or ZIP code to geocode.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Customer by Phone","description":"Retrieves customer information from ServiceTitan by phone number.","methodName":"getCustomer","params":[{"name":"phone","description":"The customer's phone number.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Customer Locations","description":"Retrieves location information for a customer from ServiceTitan by customer ID.","methodName":"getCustomerLocations","params":[{"name":"customerId","description":"The customer's ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Create Customer","description":"Creates a new customer in ServiceTitan.","methodName":"createCustomer","params":[{"name":"contacts","description":"Array of contact objects (optional).","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"locations","description":"Array of location objects with address and optional contacts.","required":true,"index":3,"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Customer address object with street, city, state, zip, country.","required":true,"index":2,"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"type","description":"Customer type (Residential or Commercial).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"values":["Residential","Commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Customer name.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Customer","description":"Updates an existing customer in ServiceTitan.","methodName":"updateCustomer","params":[{"name":"contacts","description":"Array of contact objects (optional).","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Customer address object (optional).","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"type","description":"Customer type (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"values":["Residential","Commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Customer name (optional).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"customerId","description":"The customer ID to update.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Create Customer Location","description":"Creates a new location for a customer in ServiceTitan.","methodName":"createCustomerLocation","params":[{"name":"name","description":"Location name (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Location address object with street, city, state, zip, country.","required":true,"index":1,"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null}},{"name":"customerId","description":"The customer ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Create Job for New Customer","description":"Creates a new customer FIRST, then creates a job for that customer in ServiceTitan. Two-step process. Summary is required and will be used to automatically classify the job using GPT to determine businessUnitId and jobTypeId. Campaign ID is taken from MCP property.","methodName":"createJobForNewCustomer","params":[{"name":"customer","description":"Customer data object with name, type, locations, address, contacts.","required":true,"index":0,"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"name":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"type":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"values":["Residential","Commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}},"locations":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"address":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"street":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"city":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"state":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"zip":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"country":{"_def":{"description":"2 letter country code","innerType":{"_def":{"innerType":{"_def":{"checks":[{"kind":"length","value":2},{"kind":"toUpperCase"}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}},"unit":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["street","city","state","zip","country","unit"]}},"contacts":{"_def":{"innerType":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"type":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"value":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"memo":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["type","value","memo"]}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"name":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},"keys":["address","contacts","name"]}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"address":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"street":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"city":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"state":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"zip":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"country":{"_def":{"description":"2 letter country code","innerType":{"_def":{"innerType":{"_def":{"checks":[{"kind":"toUpperCase"},{"kind":"length","value":2}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}},"unit":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["street","city","state","zip","country","unit"]}},"contacts":{"_def":{"innerType":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"type":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"value":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"memo":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["type","value","memo"]}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["name","type","locations","address","contacts"]}}},{"name":"appointments","description":"Array of appointment objects with start, end, technicianIds, arrivalWindowStart, arrivalWindowEnd.","required":true,"index":1,"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"start":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"end":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"technicianIds":{"_def":{"innerType":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"arrivalWindowStart":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"arrivalWindowEnd":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},"keys":["start","end","technicianIds","arrivalWindowStart","arrivalWindowEnd"]}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"summary","description":"Job summary description. Required for automatic GPT classification.","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"incomingPhoneNumber","description":"Caller's phone number to match campaign (optional, uses default if not provided).","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"businessUnitId","description":"The business unit ID (will be overridden by GPT classification).","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobTypeId","description":"The job type ID (will be overridden by GPT classification).","required":false,"index":5,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"priority","description":"Job priority (defaults to High).","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"values":["Low","Normal","High","Emergency"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Create Job for Existing Customer","description":"Creates a new job for an existing customer in ServiceTitan. Summary is required and will be used to automatically classify the job using GPT. Campaign ID is taken from MCP property.","methodName":"createJobForExistingCustomer","params":[{"name":"customerId","description":"The existing customer ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"locationId","description":"The existing location ID.","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"appointments","description":"Array of appointment objects with start, end, technicianIds, arrivalWindowStart, arrivalWindowEnd.","required":true,"index":2,"schema":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"start":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"end":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"technicianIds":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"arrivalWindowStart":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"arrivalWindowEnd":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},"keys":["start","end","technicianIds","arrivalWindowStart","arrivalWindowEnd"]}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"summary","description":"Detailed job summary including: what happened during the call, the customer's issue/request, any special instructions, urgency level, and relevant timestamps. This is used for automatic job classification and stored as the job description. Example: 'Customer reported water heater leaking since yesterday evening. Requested emergency service. Prefers afternoon appointment.'","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Service location address for the job.","required":true,"index":4,"schema":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":{"shape":{"street":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"city":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"state":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"zip":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},"keys":["street","city","state","zip"]}}},{"name":"incomingPhoneNumber","description":"Caller's phone number to match campaign (optional, uses default if not provided).","required":false,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"customerType","description":"Customer type (Residential or Commercial). Optional, helps with classification.","required":false,"index":6,"schema":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"values":["Residential","Commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"businessUnitId","description":"The business unit ID (will be overridden by GPT classification).","required":false,"index":7,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobTypeId","description":"The job type ID (will be overridden by GPT classification).","required":false,"index":8,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"priority","description":"Job priority (defaults to High).","required":false,"index":9,"schema":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"values":["Low","Normal","High"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Jobs by Customer","description":"Retrieves all jobs for a specific customer.","methodName":"getJobsByCustomer","params":[{"name":"customerId","description":"The customer ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Job","description":"Updates an existing job in ServiceTitan.","methodName":"updateJob","params":[{"name":"appointments","description":"Array of appointment objects (optional).","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"summary","description":"Job summary (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"priority","description":"Job priority (optional).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"values":["Low","Normal","High","Emergency"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobId","description":"The job ID to update.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Available Technicians","description":"Retrieves both regular available technicians with their free time slots AND the on-call technicians (current and upcoming shifts) for a specific date.","methodName":"getAvailableTechnicians","params":[{"name":"date","description":"Target date in YYYY-MM-DD format (optional, defaults to today).","required":false,"index":0,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"summary","description":"Job summary to determine business unit for filtering technicians. Only used when filter_technicians_by_business_unit is enabled.","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Active Technicians","description":"Retrieves all active technicians from ServiceTitan Settings API.","methodName":"getActiveTechnicians","params":[],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Appointments","description":"Retrieves appointments for a specific job.","methodName":"getAppointments","params":[{"name":"jobId","description":"The job ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Reschedule Appointment","description":"Reschedules an existing appointment in ServiceTitan.","methodName":"rescheduleAppointment","params":[{"name":"arrivalWindowEnd","description":"New arrival window end time (optional).","required":false,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"arrivalWindowStart","description":"New arrival window start time (optional).","required":false,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"end","description":"New appointment end time in ISO 8601 format (optional).","required":false,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"start","description":"New appointment start time in ISO 8601 format (optional).","required":false,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"appointmentId","description":"The appointment ID to reschedule.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Location Contact","description":"Updates contact details (email and/or phone) for a location.","methodName":"updateLocationContact","params":[{"name":"phone","description":"New phone number (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"New email address (optional).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"locationId","description":"The location ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Customer Contact","description":"Updates contact details (email and/or phone) for a customer.","methodName":"updateCustomerContact","params":[{"name":"phone","description":"New phone number (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"New email address (optional).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"customerId","description":"The customer ID.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Get Cancellation Reasons","description":"Retrieves all available job cancellation reasons.","methodName":"getCancellationReasons","params":[],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Cancel Job","description":"Intelligent job cancellation with automatic invoice cleanup. First checks if the job has any invoice items: if yes, removes them automatically before canceling; if no, proceeds directly to cancellation. This handles the ServiceTitan requirement that jobs with invoice items cannot be canceled directly.","methodName":"cancelJob","params":[{"name":"memo","description":"Cancellation memo/notes (optional, defaults to 'cancel appointment').","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"reasonId","description":"The cancellation reason ID.","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobId","description":"The job ID to cancel.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Update Customer Details","description":"Updates comprehensive customer details including name, type, address, and tags.","methodName":"updateCustomerDetails","params":[{"name":"tagTypeIds","description":"Array of tag type IDs (optional).","required":false,"index":4,"schema":{"_def":{"innerType":{"_def":{"type":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"minLength":null,"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"address","description":"Customer address object (optional).","required":false,"index":3,"schema":{"_def":{"innerType":{"_def":{"unknownKeys":"strip","catchall":{"_def":{"typeName":"ZodNever"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodObject"},"~standard":{"version":1,"vendor":"zod"},"_cached":null},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"type","description":"Customer type (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"values":["Residential","Commercial"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"name","description":"Customer name (optional).","required":false,"index":1,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"customerId","description":"The customer ID to update.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Add Call Summary Note","description":"Adds a call summary note to a job by appending to the existing job summary. Includes timestamp and formatted call details.","methodName":"addCallSummaryNote","params":[{"name":"additionalDetails","description":"Any additional details to include in the note (optional).","required":false,"index":2,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"callSummary","description":"Summary of what happened during the call.","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"jobId","description":"The job ID to add the note to.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodNumber","coerce":false},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"service-titan","properties":[{"name":"tenant_id","propertyKey":"tenant_id","description":"ServiceTitan tenant ID.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"client_id","propertyKey":"client_id","description":"ServiceTitan client ID.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"client_secret","propertyKey":"client_secret","description":"ServiceTitan client secret.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"appKey","propertyKey":"appKey","description":"ServiceTitan application key.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timezone","propertyKey":"timezone","description":"Timezone for date/time operations.","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"campaignId","propertyKey":"campaignId","description":"Default campaign ID for job creation (as string).","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"classification_prompt","propertyKey":"classification_prompt","description":"GPT prompt template for business unit classification. Use {{summary}}, {{customerType}}, {{appointmentTime}}, {{businessUnits}} as placeholders.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"job_type_classification_prompt","propertyKey":"job_type_classification_prompt","description":"GPT prompt template for job type classification. Use {{summary}}, {{customerType}}, {{appointmentTime}}, {{jobTypes}} as placeholders.","schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","propertyKey":"city","description":"Default city for address searches (optional). Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"state","propertyKey":"state","description":"Default state for address searches (optional). Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"country","propertyKey":"country","description":"Default country for address searches (optional). Streamlines geo-address searches when provided.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"business_hours_start","propertyKey":"business_hours_start","description":"Business hours start time in HH:MM format (24-hour). Used for technician availability calculations.","schema":{"_def":{"innerType":{"_def":{"checks":[{"kind":"regex","regex":{}}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"business_hours_end","propertyKey":"business_hours_end","description":"Business hours end time in HH:MM format (24-hour). Used for technician availability calculations.","schema":{"_def":{"innerType":{"_def":{"checks":[{"kind":"regex","regex":{}}],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"excluded_technician_ids","propertyKey":"excluded_technician_ids","description":"Comma-separated list of technician IDs to exclude from available technicians.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"include_technician_ids","propertyKey":"include_technician_ids","description":"Comma-separated list of technician IDs to exclusively include. When set, only these technicians will be considered for availability.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"filter_technicians_by_business_unit","propertyKey":"filter_technicians_by_business_unit","description":"When enabled, filter available technicians by business unit based on job summary classification.","schema":{"_def":{"innerType":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"additional_notes","propertyKey":"additional_notes","description":"Additional notes to append to the job summary after a successful booking (optional).","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"technicianWorkflow","propertyKey":"technicianWorkflow","description":"Enable technician SMS workflow when job is booked.","schema":{"_def":{"innerType":{"_def":{"values":["yes","no"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodDefault"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"workflow_project_id","propertyKey":"workflow_project_id","description":"Project ID used for workflow triggers (e.g. technician SMS workflows).","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"tag_type_ids","propertyKey":"tag_type_ids","description":"Comma-separated list of tag type IDs to apply to jobs when booking (optional).","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestStartMessage","propertyKey":"toolRequestStartMessage","description":"Comma-separated messages spoken when a tool call starts (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestCompleteMessage","propertyKey":"toolRequestCompleteMessage","description":"Comma-separated messages spoken when a tool call completes (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestFailedMessage","propertyKey":"toolRequestFailedMessage","description":"Comma-separated messages spoken when a tool call fails (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestResponseDelayedMessage","propertyKey":"toolRequestResponseDelayedMessage","description":"Comma-separated messages spoken when a tool call is delayed (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"advanceDays","propertyKey":"advanceDays","description":"Number of days in advance to search for technician availability (e.g. 5 means search from today through the next 5 days). If not set, only the requested date is checked.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]},{"name":"YouCanBookMe API","description":"Lists available slots and creates bookings on a YouCanBookMe booking page (api.youcanbook.me/v1). Form fields below are tuned for the Allbright Call Center booking page.","tools":[{"name":"Get Available Slots","description":"Returns available booking slots for the single estimator selected by priority routing. Among estimators who (a) serve the caller's job-site area and (b) cover the requested specialty, the highest-priority one with availability is chosen (the coating specialist is only chosen when he can come within 4 days, otherwise routing falls through to the next estimator). All returned slots belong to that one estimator. Each slot includes a 'startsAt' token AND a 'teamMemberId' — both MUST be passed back unchanged to bookSlot.","methodName":"getAvailableSlots","params":[{"name":"area","description":"COMPULSORY. The caller's job-site area or city (e.g. 'Santa Clarita Valley', 'Santa Monica', 'Pasadena', 'Ventura County'). Matched case-insensitively against each estimator's served areas in the teamMemberRouting config.","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"specialty","description":"COMPULSORY. The specialty needed for this job. 'Residential Painting' for interior/exterior painting jobs (EXTP/INTP). 'Concrete Coating' for floor/coating jobs (FLR).","required":true,"index":1,"schema":{"_def":{"values":["Residential Painting","Concrete Coating"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}},{"name":"Book Slot","description":"Books the chosen slot on the YouCanBookMe page. Creates a real confirmed booking. Pass the 'startsAt' value exactly as returned by getAvailableSlots. Fields marked COMPULSORY must be collected from the customer before calling.","methodName":"bookSlot","params":[{"name":"startsAt","description":"COMPULSORY. The startsAt token of the chosen slot, exactly as returned by getAvailableSlots (millisecond unix timestamp as string).","required":true,"index":0,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"teamMemberId","description":"COMPULSORY. The teamMemberId from the chosen slot, exactly as returned by getAvailableSlots. The booking will be made against this estimator.","required":true,"index":1,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"firstName","description":"COMPULSORY. Customer first name. → YCBM 'First Name' (FNAME).","required":true,"index":2,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"lastName","description":"COMPULSORY. Customer last name. → YCBM 'Last Name' (LNAME).","required":true,"index":3,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"email","description":"COMPULSORY. Customer email address (validated as email by YCBM). → YCBM 'Email' (EMAIL).","required":true,"index":4,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"phone","description":"COMPULSORY. Customer mobile phone number (validated as mobile by YCBM). → YCBM 'Phone' (PHONE).","required":true,"index":5,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"source","description":"COMPULSORY. How the customer heard about us. → YCBM 'How did you hear about us?' (SOURCE). One of: Brand, Online, Social Media, Direct Mail, Email / Text, Referral, Repeat Client, Biz Dev, Other.","required":true,"index":6,"schema":{"_def":{"values":["Brand","Online","Social Media","Direct Mail","Email / Text","Referral","Repeat Client","Biz Dev","Other"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"address","description":"COMPULSORY. Job site street address. → YCBM 'Job Site Address' (ADDRESS).","required":true,"index":7,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"city","description":"COMPULSORY. Job site city. → YCBM 'Job Site City' (CITY).","required":true,"index":8,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"zip","description":"COMPULSORY. Job site zip code. → YCBM 'Job Site Zip Code' (ZIP).","required":true,"index":9,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"description","description":"COMPULSORY. Free-form project description capturing the painting / coating qualification answers (scope, surfaces, problem areas, etc.). → YCBM 'Please describe your project' (DESCRIPTION).","required":true,"index":10,"schema":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}}},{"name":"projectType","description":"COMPULSORY. One or more project types (multi-select). → YCBM 'Project Type' (PROJECT_TYPE). FLR = Concrete Coating, EXTP = Exterior Painting, INTP = Interior Painting. Example: [\"INTP\", \"EXTP\"].","required":true,"index":11,"schema":{"_def":{"type":{"_def":{"values":["FLR","EXTP","INTP"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"minLength":{"value":1},"maxLength":null,"exactLength":null,"typeName":"ZodArray"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"projectTimeline","description":"COMPULSORY. Customer's timeline. → YCBM 'When are you looking to get this done?' (PROJECT_TIMELINE). One of: ASAP, Within the next 2 weeks, Sometime in the next month, Sometime this year, Just getting ideas and budget.","required":true,"index":12,"schema":{"_def":{"values":["ASAP","Within the next 2 weeks","Sometime in the next month","Sometime this year","Just getting ideas and budget"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"state","description":"OPTIONAL. Job site state. → YCBM 'Job Site State' (STATE). The booking page currently only accepts 'CA'. Defaults to 'CA' when not provided. Send it when you have the customer's state.","required":false,"index":13,"schema":{"_def":{"innerType":{"_def":{"values":["CA"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"companyName","description":"OPTIONAL. Customer company name. → YCBM 'Company Name' (COMPANY_NAME).","required":false,"index":14,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"gateCode","description":"OPTIONAL. Gate code or access instructions if the home is in a gated community. → YCBM 'Gate Code' (GATE_CODE).","required":false,"index":15,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"builtBefore1978","description":"OPTIONAL. Whether the home was built before 1978 (lead-paint screening). → YCBM 'House Built Before 1978?' (BUILT). 'Yes' or 'No'.","required":false,"index":16,"schema":{"_def":{"innerType":{"_def":{"values":["Yes","No"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"divisionType","description":"OPTIONAL. Division/Type tag. → YCBM 'Division/Type' (DIVISION_TYPE). One of: RES - EXT, RES - INT, RES - INT/EXT, FLR - EXT, FLR - INT, FLR - INT/EXT.","required":false,"index":17,"schema":{"_def":{"innerType":{"_def":{"values":["RES - EXT","RES - INT","RES - INT/EXT","FLR - EXT","FLR - INT","FLR - INT/EXT"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"revenueType","description":"OPTIONAL. → YCBM 'Revenue Type' (REVENUE_TYPE). 'Painting' or 'Coating'.","required":false,"index":18,"schema":{"_def":{"innerType":{"_def":{"values":["Painting","Coating"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"propertyOwner","description":"OPTIONAL. Whether the caller is the property owner. → YCBM 'Property Owner' (PROPERTY_OWNER). 'Yes, I am' or 'No, I am not'.","required":false,"index":19,"schema":{"_def":{"innerType":{"_def":{"values":["Yes, I am","No, I am not"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"secondHomeowner","description":"OPTIONAL. Whether a second homeowner will attend. → YCBM '2nd Homeowner' (SECOND_HOMEOWNER). One of: 'Yes - Will be at appt', 'No - Not available', 'N/A - No other decision maker'.","required":false,"index":20,"schema":{"_def":{"innerType":{"_def":{"values":["Yes - Will be at appt","No - Not available","N/A - No other decision maker"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"schedulingIncentive","description":"OPTIONAL. Customer's response to the scheduling incentive pre-close. → YCBM 'Scheduling Incentive' (SCHED_INCENTIVE). One of: 'Yes - Ready to Sign at Appt', 'No - Not Ready to Sign at Appt', 'Unsure - Timeline', 'Unsure - Budget', 'Unsure - Trust'.","required":false,"index":21,"schema":{"_def":{"innerType":{"_def":{"values":["Yes - Ready to Sign at Appt","No - Not Ready to Sign at Appt","Unsure - Timeline","Unsure - Budget","Unsure - Trust"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"personalDetails","description":"OPTIONAL. Personal details captured during the call (interests, life events, etc.) for unreasonable-hospitality follow-up. → YCBM 'Personal Details' (PERSONAL_DETAILS).","required":false,"index":22,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"hospitalityNotes","description":"OPTIONAL. Suggestions for what the estimator can bring (e.g. dog toy, sports swag). → YCBM 'Unreasonable Hospitality' (HOSPITALITY).","required":false,"index":23,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"referredBy","description":"OPTIONAL. Name of the person who referred the customer. → YCBM 'Referred By:' (REFERRAL).","required":false,"index":24,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"previousCustomer","description":"OPTIONAL. → YCBM 'Previous Customer' (PREV_CUSTOMER). One of: 'Yes - At least one previous won deal', 'No - Past bids but no won deals', 'No History - No past deals/bids'.","required":false,"index":25,"schema":{"_def":{"innerType":{"_def":{"values":["Yes - At least one previous won deal","No - Past bids but no won deals","No History - No past deals/bids"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"dealId","description":"OPTIONAL. CRM Deal ID to attach to the booking. → YCBM 'Deal ID' (DEAL_ID). Omitted when not provided.","required":false,"index":26,"schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}],"outputSchema":{"_def":{"typeName":"ZodAny"},"~standard":{"version":1,"vendor":"zod"},"_any":true}}],"id":"youcanbookme","properties":[{"name":"subdomain","propertyKey":"subdomain","description":"YouCanBookMe booking-page subdomain (the bit before .youcanbook.me — e.g. 'allbright-ai'). Defaults to the current Allbright booking page.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"teamMemberRouting","propertyKey":"teamMemberRouting","description":"JSON string describing the YCBM team members, the geographic areas they serve, their specialties, and their booking priority. Used by getAvailableSlots to pick the estimator based on the caller's area and project specialty. Eligible members (area + specialty match) are tried in ascending `priority` order and the first one with availability is booked. An optional `maxLeadDays` gates a member so they are only chosen when their soonest slot is within that many days (used for the coating specialist, who is skipped when he can't come soon). Shape: { \"members\": [ { \"id\": \"m280425\", \"name\": \"Jake Abramson\", \"areas\": [\"Santa Clarita Valley\", \"San Fernando Valley\", ...], \"specialties\": [\"Residential Painting\", \"Concrete Coating\"], \"priority\": 3, \"maxLeadDays\": 4 }, ... ] }. Defaults to the current Allbright (allbright-ai) estimator roster.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"timeZone","propertyKey":"timeZone","description":"IANA timezone used when formatting slot times for display (e.g. 'America/New_York'). Booking timestamps are unchanged.","schema":{"_def":{"values":["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","America/Anchorage","America/Adak","America/Detroit","America/Indianapolis","America/Louisville","America/Boise","America/Juneau","America/Nome","America/Sitka","America/Yakutat","America/Toronto","America/Vancouver","America/Edmonton","America/Winnipeg","America/Halifax","America/St_Johns","America/Regina","America/Mexico_City","America/Cancun","America/Tijuana","America/Monterrey","America/Merida","America/Hermosillo","America/Chihuahua","America/Mazatlan","America/Guatemala","America/El_Salvador","America/Tegucigalpa","America/Managua","America/Costa_Rica","America/Panama","America/Bogota","America/Lima","America/Guayaquil","America/Caracas","America/La_Paz","America/Santiago","America/Asuncion","America/Montevideo","America/Buenos_Aires","America/Sao_Paulo","America/Rio_Branco","America/Manaus","America/Cuiaba","America/Recife","America/Fortaleza","America/Belem","America/Havana","America/Jamaica","America/Port-au-Prince","America/Santo_Domingo","America/Puerto_Rico","America/Barbados","America/Martinique","America/Guadeloupe","America/Aruba","America/Curacao"],"typeName":"ZodEnum"},"~standard":{"version":1,"vendor":"zod"},"_cache":{}}},{"name":"maxSlots","propertyKey":"maxSlots","description":"Maximum number of slots to return from getAvailableSlots (default 20).","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestStartMessage","propertyKey":"toolRequestStartMessage","description":"Comma-separated messages spoken when a tool call starts (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestCompleteMessage","propertyKey":"toolRequestCompleteMessage","description":"Comma-separated messages spoken when a tool call completes (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestFailedMessage","propertyKey":"toolRequestFailedMessage","description":"Comma-separated messages spoken when a tool call fails (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}},{"name":"toolRequestResponseDelayedMessage","propertyKey":"toolRequestResponseDelayedMessage","description":"Comma-separated messages spoken when a tool call is delayed (optional). Leave blank for silence.","schema":{"_def":{"innerType":{"_def":{"checks":[],"typeName":"ZodString","coerce":false},"~standard":{"version":1,"vendor":"zod"}},"typeName":"ZodOptional"},"~standard":{"version":1,"vendor":"zod"}}}]}]}