REFERENCE
Tools
The tools an assistant sees when it connects, with their inputs and outputs. This page is generated from the live connector’s tools/list, last synced September 30, 2026.
Results come back as text (JSON) plus structuredContent matching the output schema. Tools marked sign-in trigger sign-in on first use (see Connect). Changes to these tools are additive only (see Compatibility).
search_providersget_provider_detailsget_availabilityprepare_bookingconfirm_bookingget_booking_status
search_providers
Find providers for a service the customer describes in their own words (e.g. "no hot water", "AC not cooling", "breaker keeps tripping"). Matches the description against service categories and returns providers that cover the ZIP code. No sign-in needed. If the description is a life-safety problem (gas, carbon monoxide, electrical fire/sparking) it returns safety guidance and an emergency phone instead of providers.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
need | string (≤ 300 chars) | yes | |
zip | string (pattern ^\d{5}(-\d{4})?$) | yes | |
urgency | "routine" | "soon" | "emergency" | — | |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
safety | object | yes | |
safety.triggered | boolean | yes | |
safety.category | "gas_smell" | "carbon_monoxide" | "electrical_fire" | "electrical_shock" | "flooding_electrical" | "sewage_backup" | null | yes | |
safety.guidance | string | null | yes | |
outcome | "covered" | "no_coverage" | "no_match" | "safety" | yes | |
category | object | null | yes | |
providers | object[] | yes | |
near_miss | object[] | yes | |
next_step | string | yes |
get_provider_details
Return one provider's categories, services (with how each is priced), coverage ZIPs, emergency phone, and the business's note to customers. Read-only; call it after search_providers to decide where to book.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
provider_id | string | yes | |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
provider | object | yes | |
provider.id | string | yes | |
provider.name | string | yes | |
provider.timezone | string (pattern ^[A-Za-z]+(?:\/[A-Za-z0-9_+-]+)*$) | yes | |
provider.emergency_phone | string (e164, pattern ^\+[1-9]\d{6,14}$) | yes | |
provider.paused | boolean | yes | |
provider.categories | object[] | yes | |
provider.services | object[] | yes | |
provider.coverage | string (pattern ^\d{5}(-\d{4})?$)[] | yes | |
provider.booking_policy_summary | string | yes | |
provider.customer_note | string | null | yes | |
next_step | string | yes |
get_availability
List real bookable windows from a provider's scheduler for one service (identified by service_id) and ZIP. Each option carries an opaque signed option_id, window, timezone, source, and observed_at. A 14-day range maximum applies; schedulers without real availability return clearly-labeled preferred-time requests. Read-only.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
provider_id | string | yes | |
service_id | string | yes | |
zip | string (pattern ^\d{5}(-\d{4})?$) | yes | |
date_from | string | yes | |
date_to | string | yes | |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
options | object[] | yes | |
next_step | string | yes | |
intake | object | — | |
intake.problem_label | string | — | |
intake.email_required | boolean | — | |
intake.default_state | string | — | |
intake.questions | object[] | yes |
prepare_booking
Turn a chosen option_id into an immutable, human-readable booking summary without booking anything. Runs the life-safety guard and the provider's policy, then returns preparation_id, summary, expected_outcome, and a 15-minute expiry. Pass the preparation_id to confirm_booking only after the customer approves.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
option_id | string | yes | |
customer | object | yes | |
customer.name | string | yes | |
customer.phone | string (e164, pattern ^\+[1-9]\d{6,14}$) | yes | |
customer.email | string (email, pattern ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$) | — | |
address | object | yes | |
address.line1 | string | yes | |
address.line2 | string | — | |
address.city | string | yes | |
address.state | string (pattern ^[A-Z]{2}$) | — | |
address.zip | string (pattern ^\d{5}(-\d{4})?$) | yes | |
job | object | yes | |
job.problem | string (≤ 1000 chars) | yes | |
job.access_notes | string | — | |
job.urgency | "routine" | "soon" | "emergency" | yes | |
answers | map of string | number | boolean | string[] | — | Answers to the business's questions, keyed by question key. get_availability returns that business's intake.questions for the chosen service; `required: true` means the booking cannot be prepared without it. Send a yes/no answer as true or false, a multi_select answer as an array, a date as YYYY-MM-DD and a number as a number. When something required is missing, this tool replies with what to ask the customer and stores nothing. |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
preparation_id | string | yes | |
summary | string | yes | |
expected_outcome | "AUTO_CONFIRM" | "REQUEST" | "HANDOFF" | yes | |
expires_at | string | yes |
confirm_booking
Book an approved preparation exactly once. Confirm only after the customer approves the summary. Returns booking_id, status, external_ref, and next_step. Idempotent on idempotency_key, so repeating the same key returns the same booking.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
preparation_id | string | yes | |
idempotency_key | string | yes | |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
booking_id | string | yes | |
status | "PREPARED" | "EXPIRED" | "SUBMITTING" | "CONFIRMED" | "PENDING_PROVIDER" | "HANDOFF_REQUIRED" | "FAILED" | "OUTCOME_UNKNOWN" | yes | |
external_ref | string | — | |
next_step | string | yes |
get_booking_status
Check a booking's status by booking_id. Returns status, external_ref, last_checked_at, and next_step. For an unknown or provider-pending outcome, resolves the true state through the provider's scheduler when it supports status lookup — never by creating the booking again.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
booking_id | string | yes | |
intent | string | — | One short sentence on what the customer is trying to do. Never include names, phone numbers, email addresses, or street addresses. |
Output
| Field | Type | Required | Notes |
|---|---|---|---|
booking_id | string | yes | |
status | "PREPARED" | "EXPIRED" | "SUBMITTING" | "CONFIRMED" | "PENDING_PROVIDER" | "HANDOFF_REQUIRED" | "FAILED" | "OUTCOME_UNKNOWN" | yes | |
external_ref | string | — | |
last_checked_at | string | yes | |
next_step | string | yes |
Maintainers: refresh with node scripts/sync-scheduling-tools.mjs after a release.
