add_contact_channel
ChatGPTAdd an email address, phone number, WhatsApp number, or Instagram handle to an existing contact so messages from it route to that contact. Adding a channel the contact already has is a no-op. Fails with a conflict naming the other contact when a different contact already owns the address; contacts are never merged automatically. Returns the contact with its channels.
add_listings_to_listing_group
ChatGPTAdd one or more workspace listings to an existing listing group. Listings already in the group are unchanged. Requires the Manage Properties permission.
add_ticket_tag
ChatGPTApply an existing conversation tag (from list_conversation_tags) to a ticket. Tags are stored on the ticket's contact, so every ticket of that contact shows them. Adding a tag already present is a no-op. Returns the contact's current tags.
apply_workflow_edits
ChatGPTAtomically replan and apply a previously previewed ordered edit batch. Rechecks active/latest heads and result hash, deduplicates retries by operation_id, and reports removed base steps in deleted_step_ids.
archive_portal_guide
ChatGPTArchive a portal guide without deleting it.
archive_portal_offer
ChatGPTArchive a portal offer and remove it from portal template layouts.
archive_portal_template
ChatGPTArchive a portal template without deleting its history.
assign_backup_access_code
ChatGPTAssign a prepared backup code when a guest cannot enter with their existing code. First confirm the door and entry steps. Requires a current reservation linked to the guest and lock. Returns the same backup on retries. Subsequent guest code reads use this backup. Share only the returned non-null code. A null code means the backup is still being issued; call again in a few seconds. A pending or failed windowSyncStatus means checkout expiry is not confirmed; notify the property team. If no backup is available or a backup also fails, escalate without creating another code. For a forgotten code, use list_access_codes. This tool does not revoke the original code or send a message.
assign_conversation
ChatGPTAssign or unassign a conversation, or choose an eligible assignee using the same round-robin rules as ASSIGN_CONTACT. This changes conversation ownership only and does not cascade to open tickets.
assign_device_property
ChatGPTMap a device (smart lock, thermostat, sensor, camera) to a property so it shows on that property and its name/address resolve. Devices can serve several properties (a building door serves every unit inside), so passing a listing_id ADDS a mapping without removing existing ones; pass null to clear every mapping. Provider sync leaves new devices unmapped until an operator binds them. This never touches the physical device.
assign_escalation
ChatGPTAssign a chat escalation to a workspace user for the human-handoff path. The assignee must be a member of the escalation's workspace.
assign_ticket
ChatGPTAssign a ticket to a workspace member, or pass null to unassign it. Use member_id from list_workspace_users, not the user id. Changes only the ticket's assignee, not the conversation owner, and notifies the new assignee.
book_appointment
ChatGPTComplete a booking for a selected time slot.
bulk_set_knowledge_scope
ChatGPTQueue a durable scope update for explicit files and recursive folders.
cancel_appointment
ChatGPTCancel an existing booking. This cannot be undone.
cancel_knowledge_source_sync
ChatGPTTurn off auto-sync for a knowledge source. The source and everything already imported from it stay in the knowledge base; only the schedule stops.
check_listing_availability
ChatGPTCheck one listing for one checkout-exclusive date range. Returns no alternatives; call search_listing_availability separately when alternatives are needed. Treat unknown as unconfirmed and do not claim the listing is unavailable. Availability only means every requested calendar night is open; it does not confirm all booking rules.
clone_workflow
ChatGPTClone a workflow as a validated new DRAFT. Same-workspace clones preserve protected values server-side. Cross-workspace clones require every public resource reference to resolve through explicit resource_mappings, refuse inline HTTP or authorization secrets, and require exact provider_config_overrides for provider-scoped Airtable, Shopify, HubSpot, and Salesforce metadata. Overrides should preserve source resource IDs for resource_mappings or omit optional connections. Safe retries require operation_id.
close_ticket
ChatGPTClose a resolved ticket.
confirm_booking
ChatGPTConfirm a pending booking.
create_access_code
ChatGPTProvision an access code on a smart lock — ongoing, or time-bound with a starts_at/ends_at window (e.g. a housekeeper's code for a clean, or a contact's stay window). The code is programmed onto the physical lock asynchronously and this returns only its access_code_id. The digits do NOT exist yet when this returns: the provider mints them and reports back a moment later. Read them with get_access_code, which returns code: null until the lock confirms them. Never tell anyone a code you have not read back as non-null.
create_agent_guardrail
ChatGPTAdd one guardrail to a V2 chat agent without replacing existing guardrails.
create_agent_trigger
ChatGPTAdd one trigger to a V2 chat agent without replacing its existing triggers. Cron triggers also create their schedule.
create_booking_link
ChatGPTCreate a shareable booking link to send to a contact. If you checked availability with user_ids, pass the same user_ids here so the contact can only book with those team members. For direct appointment booking, use book_appointment; it creates a booking link when needed.
create_call_group
ChatGPTCreate a call group that routes inbound calls from workspace phone numbers to workspace users. Requires the Manage Assignment Schedule permission.
create_contact
ChatGPTCreate a contact in a workspace with one or more direct channels.
create_conversation_tag
ChatGPTCreate a conversation label, root topic, or subtopic. To create a subtopic, pass kind='topic' and parent_tag_id set to a root topic id.
create_custom_attribute
ChatGPTCreate a typed custom attribute definition and return its ID. Use patch_custom_attribute for later metadata or option changes; the field type cannot change. Select require options.
create_custom_attribute_section
ChatGPTCreate a named section for organizing custom attribute definitions. Returns the generated section ID for use as section_id on create_custom_attribute or patch_custom_attribute.
create_directory
ChatGPTCreate a new directory to organize knowledge base content.
create_knowledge
ChatGPTCreate a new knowledge base article.
create_listing_group
ChatGPTCreate a listing group from a unique name and one or more workspace listings. Requires the Manage Properties permission.
create_operator_skill
ChatGPTCreate an Operator skill (knowledge card) for a workspace. Requires the Manage Agents permission.
create_portal_guide
ChatGPTCreate a portal guide for a workspace.
create_portal_listing_upload_url
ChatGPTUpload an image or video for a portal field such as the house manual or check-in instructions. Create a single-use media upload URL valid for one hour for a portal listing. POST raw file bytes with Content-Type to upload_url, then pass the returned storageId to register_portal_listing_upload. Supports JPEG, PNG, WebP, GIF, AVIF up to 10 MiB and MP4/WebM up to 50 MiB. Requires Portals access, ManageProperties permission, and write access.
create_portal_offer
ChatGPTCreate an active portal offer for a workspace.
create_portal_template
ChatGPTCreate a portal template. A template starts as a draft unless the request sets another valid status.
create_skill
ChatGPTCreate a workspace agent skill.
create_ticket_note
ChatGPTCreate an internal note on a ticket. Optional attachments must first be uploaded through the public API upload-url flow, then passed as attachment metadata.
create_verification_rule
ChatGPTCreate a portal verification rule. The rule is enabled and appended last unless the request says otherwise, and its config must match the chosen step type.
create_voice_agent
ChatGPTTurn a phone number the workspace already owns into a voice agent and provision its inbound AI agent. Identify the number by its phone_number_config_id (from list_calls / the phone numbers surface). This does not buy a new number.
create_workflow
ChatGPTCreate a new workflow from a full definition (trigger, first_step_id, steps). Call get_workflow_schema first to construct a valid definition. Created as DRAFT unless activate is true. Returns the same shape as get_workflow.
create_workflow_folder
ChatGPTCreate a workflow folder in a workspace. Requires the Manage Workflows permission.
create_workspace_role
ChatGPTCreate a custom workspace role from permission names returned by list_workspace_permissions. Requires Manage Members.
delete_access_code
ChatGPTRevoke an access code from a smart lock. The code stops working on the physical device — use when a stay ends early, a code leaks, or a vendor's window closes.
delete_agent
ChatGPTDelete a V2 chat agent.
delete_agent_guardrail
ChatGPTDelete one V2 chat agent guardrail without changing sibling guardrails.
delete_agent_trigger
ChatGPTRemove one trigger, including a manual trigger, from a V2 chat agent. A trigger shared with other agents or owned by a connection is only detached from this agent.
delete_conversation_tag
ChatGPTDelete a conversation tag. Delete or reparent subtopics before deleting their parent topic.
delete_custom_attribute
ChatGPTPermanently delete a custom attribute and all stored contact values. Refuses deletion while an active workflow or enabled agent skill references it.
delete_knowledge
ChatGPTDelete knowledge base entries and their search index data. Deleting a directory deletes its entire subtree, and a listed node that sits inside a listed directory is covered by that directory rather than deleted on its own. An id that does not exist, is already in the trash, or that this agent cannot read comes back in `not_found_ids; an id whose delete errored comes back in failed_ids`. Neither blocks the rest of the batch, and the call raises only when no id resolved at all.
delete_listing_group
ChatGPTPermanently delete a listing group without deleting its listings. Requires the Manage Properties permission.
delete_operator_skill
ChatGPTDelete an Operator skill from a workspace. Requires the Manage Agents permission.
delete_portal_template
ChatGPTPermanently delete a portal template that has no recorded sales. This action also deletes its customer sessions.
delete_skill
ChatGPTDelete a workspace agent skill.
delete_source
ChatGPTDelete all knowledge entries created by a specific import source.
delete_ticket_note
ChatGPTDelete an internal note attached to a ticket.
delete_verification_rule
ChatGPTPermanently delete a portal verification rule. Stays already collecting this step keep what they have gathered; new stays stop being asked.
delete_voice_agent
ChatGPTRemove a voice agent by converting its phone number back to a regular (non-AI) number. The phone number itself is kept.
describe_bigquery_tables
ChatGPTDiscover column names, data types, and one workspace-scoped sample row per requested table. Call this before execute_bigquery_query so you know the exact column names and can see real JSON/string value shapes.
duplicate_portal_guide
ChatGPTCreate a draft copy of a portal guide.
duplicate_portal_template
ChatGPTCreate a draft copy of a portal template.
edit_knowledge
ChatGPTEdit an existing knowledge base article. Only manually created articles can be edited. The agent must have read access to the node; otherwise it appears as "not found".
execute_bigquery_query
ChatGPTExecute a BigQuery SQL query against workspace production data. Call describe_bigquery_tables first for the specific tables you plan to query. Only SELECT statements are allowed; workspace scoping and deleted-record filtering are injected automatically (do not add them yourself); a row LIMIT is enforced. Ticket assignee attribution uses the current ticket.assigneeid only. Historical ticketevent data is frozen and unavailable for reliable point-in-time attribution. If asked who owned a ticket at the time of an event, disclose that only the current owner is available and do not present current-owner results as historical.
find_nearby_workers
ChatGPTFind on-shift workers near a property, ordered by straight-line distance. Includes sample time, GPS accuracy, and battery percentage. Excludes locations older than five minutes, poor accuracy, and away members. Proximity does not establish availability or qualifications; check existing tasks before assigning. Does not assign a task.
generate_pdf
ChatGPTGenerate a durable PDF artifact from markdown content and return a Convex download URL. Use this when the user asks to create, export, download, or share a PDF. To include a chart, call query_insights first, then put [[chart:<chart_id>]] on its own line where the chart belongs. This agent tool returns a URL directly; it does not attach or send the PDF to a conversation.
get_access_code
ChatGPTRead back one access code by its id — use this after create_access_code (which returns only an id) to learn the digits and tell the contact. Only reads a code whose access_code_id you already have. Two things to check before you give anyone a code. code is NULL until the lock confirms the digits: the provider mints them a moment after you create the code, so a fresh code reads back as null with status 'setting'. If code is null, the digits do not exist yet — do NOT invent them and do NOT read out a number from anywhere else; tell the contact the code is being programmed and check again shortly. is_live: false means the code is NOT on the door at all (removed, expired, or failed) — never give out a code that is not live.
get_agent
ChatGPTGet a single V2 chat agent by id.
get_agent_run
ChatGPTGet a single agent run's stored detail: status, disposition, error, token usage, latency, model reply, reasoning, trace ID, and ordered tool-call timeline.
get_agent_runs_by_session_id
ChatGPTGet all runs in one agent session, newest first. Use get_agent_run for a run's stored model output and tool-call timeline.
get_agent_trace
ChatGPTFetch a bounded Logfire trace for an agent run: root input/output, latency, and the ordered observation tree (LLM calls, tool calls). Large traces preserve the beginning and end, report truncation metadata, and include htmlPath for the full trace. Use the run id from get_agent_run, list_agent_runs, or get_agent_runs_by_session_id.
get_appointment
ChatGPTGet a single appointment by id, including scheduled start/end, status, and booking-time contact details.
get_appointments
ChatGPTList bookings for the workspace, optionally filtered by date range.
get_automation_rate
ChatGPTGet the automation-rate metric for a workspace over a date range. Returns the existing headline fields plus aggregate and daily decision, disposition, delivery, and input-message mapping breakdowns. Answer-and-escalate is a successful AI send in this metric. Top-level counts equal sums over the dense daily series.
get_billing_usage
ChatGPTGet the current plan, credit balance, billing-cycle usage by product, Salesbricks aggregate usage, and bonus-credit history shown on a workspace billing page.
get_booking_calendar_availability
ChatGPTCheck available booking time slots for a date range.
get_call
ChatGPTGet a single call record by id.
get_channels_for_contact
ChatGPTList all communication channels available for a contact. Returns channel types (sms, whatsapp, email, airbnb, booking_com, etc.) with their values (phone numbers, email addresses, thread IDs).
get_chat_history_by_contact
ChatGPTFetch a contact's full chat history across every channel, newest first, with opaque cursor pagination.
get_checkin_status
ChatGPTRead a contact's portal check-in progress for their stay so you can answer questions like what is left before check-in, whether their ID went through, and when their security deposit releases. Returns the aggregate status, a derived next_step, and a per-step requirements list where each step is pending, completed, or waived. For ID verification, under_review means the document was submitted and a human (or the provider) is still reviewing it (it is NOT a rejection); rejected is a final decline the contact must redo. security_deposit.release_eligible_at is when an authorized hold becomes eligible to release. access_details_locked explains why Wi-Fi and entry codes may be hidden (some operators hide them until every check-in step is complete). This tool is read-only: it NEVER creates a portal or returns a link. has_active_portal only tells you whether a live portal already exists; to send or resend the portal link, use get_portal instead. Timestamps are ISO 8601 and money is pre-formatted, so the output is safe to read aloud.
get_contact
ChatGPTGet one contact by exactly one identifier: contact_id, phone, email, or pms_reservation_id. Returns identity, status, and channels; set include_listings, include_last_event, include_reservations, or include_custom_attributes for more. If an identifier matches more than one contact, the call fails without guessing: use search_contacts to list the matches.
get_contact_allocation
ChatGPTFetch one allocation linked to a contact by its allocation type and allocation ID. When no matching allocation exists, the tool returns { found: false } as a successful result — branch on found before reading any other fields. allocation_id MUST be a concrete identifier, never a placeholder like "any" or the contact ID.
get_contact_custom_attributes
ChatGPTFor Operator or platform workflows with a known contact ID: get typed custom attribute values. Use patch_contact_custom_attributes to update those values.
get_conversation
ChatGPTRead a conversation: its metadata plus a page of messages, newest first. Each message carries a delivery status; an outgoing message reached the contact only when its status is sent. Pass exactly one of contact_id (a conversation is keyed by its contact, so a conversation id works here too) or ticket_id (only that ticket's messages). Narrow with channel_type (contact_id only) or sent_after, page older messages with the returned nextCursor, or set include_messages to false for metadata only.
get_conversation_tag
ChatGPTGet a single conversation label, root topic, or subtopic.
get_customer_portals
ChatGPTCheck a contact's portal history and status before sending or resending a portal: whether the contact already has an outstanding portal, completed a purchase, has pending delivery, or had a failed or expired portal. Each portal also lists the contact's offer requests, newest per offer, with their outcome: requested is still waiting on the operator and is not a yes, approved was accepted, declined was turned down, and expired lapsed without an answer. Do not re-pitch an offer that is requested or declined, and never promise approval of a requested one. If the contact asks why a request was declined, say the operator declined it and offer to pass the question along. Returns safe portal metadata, offers, request outcomes, and purchase summaries without exposing portal links or Stripe IDs.
get_device_history
ChatGPTRead a device's event history — the audit trail of what it has done, newest first. Covers lock/unlock, access code set/removed/failed, low battery, connect/disconnect, sensor breaches (noise, temperature, humidity, smoke), thermostat changes, and doorbell rings, each with the time it happened. Use this to answer questions like 'when was the front door last unlocked' or 'has this lock had battery problems'. For live conditions right now (current temperature, is it online) use get_device_telemetry instead.
get_device_telemetry
ChatGPTRead a device's live telemetry and recent events. For a noise/environment sensor: latest readings (noise dB, temperature, humidity, occupancy estimate). For a thermostat: the live climate state (current/target temperature, HVAC mode). Also returns which sensing the device supports, online/battery status, and recent events (noise threshold breaches, temp out of range, doorbell rings, lock/unlock). Use this to answer questions about a unit's conditions or to check the result of a device action.
get_directions
ChatGPTGet directions between two specific addresses using Google Maps. Both origin and destination must be properly formatted addresses (e.g., '123 Main St, City, State'). Returns route, duration, and distance.
get_drive_file
ChatGPTFetch one Google Drive file's current metadata by id. Use it to confirm a file's name, type, and whether it can be imported before calling import_drive_file.
get_helpdesk_ticket
ChatGPTGet a single helpdesk ticket by id.
get_knowledge
ChatGPTRead the full content and metadata of a knowledge base entry. Returns `not found if the current agent cannot access the node — indistinguishable from a genuinely missing node, by design. Trashed entries are returned by id lookup too — check deleted_at` on the response. When non-null, the entry has been moved to trash and should not be treated as active content.
get_knowledge_scope_job
ChatGPTGet progress and result counts for a bulk file-scope job.
get_listing
ChatGPTGet details for one workspace listing by listing_id, usually after list_listings. Returns documented active status, latest status-change metadata when recorded, and an allowlisted listing snapshot for agent context and availability workflows. Does not return door codes, wifi credentials, custom fields, manuals, images, or raw PMS data. For door codes, wifi, house manual, and other guest portal info, use get_portal_listing_fields.
get_member_work_hours
ChatGPTRead a workspace member's weekly work hours and timezone. For multiple members, prefer list_workspace_users or search_workspace_users with include_work_hours: true. Empty schedule means unrestricted hours. Human callers can access their own hours; accessing another member requires Manage Members, Manage Calendars, or Manage Assignment Schedule.
get_message_templates
ChatGPTList approved WhatsApp templates available for this workspace. Use this before send_message when sending WhatsApp outside the reply window; pass template_id and template_variables to send_message.
get_ota_review_metrics
ChatGPTFetch native aggregate review metrics for one Airbnb, Booking.com, or Vrbo property URL. Returns the overall rating and scale, review count, category ratings and platform-specific indicators. A null rating with count zero means explicitly no native reviews; an error means unavailable, not zero. Does not return individual review text or imported review ratings.
get_portal
ChatGPTGet the contact's stay portal link and return portal_url, creating the portal from the workspace's portal settings if it does not exist yet. The portal's offers and check-in steps come from the operator's configured templates and verification rules. Set reservation_id when the conversation identifies a specific stay. Omit it to use the contact's current stay. Set open_step or offer_id to link directly to one available check-in step or offer. Do not set both. Use update_portal to add, remove, or highlight offers. Include portal_url in the final customer response.
get_portal_brand_kit
ChatGPTGet the workspace Brand Kit used as the default for future portal sessions.
get_portal_guide
ChatGPTGet a complete portal guide and its concurrency timestamp.
get_portal_listing_fields
ChatGPTRead a property's guest portal info: portal name, address, map links, directions, area description, check-in and check-out times and instructions, wifi name and password, parking, house rules, house manual, trash location and collection, and door code. Returns each field's current value, PMS value, override source, rich-text document, and media URLs. Read before editing to keep existing formatting and images. Requires Portals access and AccessProperties permission.
get_portal_offer
ChatGPTGet a complete portal offer definition and its concurrency timestamp.
get_portal_session
ChatGPTGet one portal session with reservation-scoped check-in progress, every submitted field, safe order summaries, ticket references, and downloadable Conduit-stored assets. Provider-hosted files are reported as unavailable rather than omitted.
get_portal_template
ChatGPTGet a portal template's saved configuration and optimistic-lock version.
get_reservation
ChatGPTGet synced reservation details by PMS reservation id, guest phone, or guest email. A guest-supplied confirmation code must be paired with the guest's full name. Identifier lookups return details only for one match; multiple matches or excessive candidates return ambiguous: true with no reservation details. Name and code are matching inputs, not identity verification.
get_resolution_rate
ChatGPTGet the share of eligible conversation threads whose final agent decision was resolved and sent. The response also includes fully_autonomous, the stricter subset with no teammate outbound and no escalation during the selected date range.
get_schedule
ChatGPTGet details of a specific booking schedule.
get_skill
ChatGPTGet a single workspace agent skill by id.
get_ticket
ChatGPTGet a single ticket by id.
get_ticket_detail
ChatGPTResolve a helpdesk ticket for a contact. If ticket_id is provided, returns that specific ticket; otherwise returns the contact's most recent ticket. Returns { found: false } when none exists.
get_ticket_note
ChatGPTGet a single internal note attached to a ticket.
get_trigger_event
ChatGPTResolve a trigger_event_id (as returned by get_agent_run) into its trigger event audit row: the trigger type, envelope source, external id, idempotency key, contact/conversation, per-source refs, and the reply it produced. Use it to see what actually fired an event-triggered agent.
get_verification_rule
ChatGPTRead one portal verification rule and its full config.
get_voice_agent
ChatGPTGet a single voice agent by id.
get_workflow
ChatGPTGet a single workflow's full definition: metadata, trigger, and the step graph (steps + derived edges) as the Workflows editor stores it. Embedded credential material (e.g. HTTP auth header values) is redacted.
get_workflow_outline
ChatGPTGet compact workflow metadata, active/latest version heads, step summaries, and canonical edges without loading step configs. Refresh after every edit.
get_workflow_resource_references
ChatGPTInventory public workspace-owned resources referenced by a workflow, including exact trigger, step, and passing-variable paths. Protected and legacy inline HTTP configuration is excluded. Returns availability without exposing secret values.
get_workflow_schema
ChatGPTReturn a JSON Schema describing a valid workflow definition input: every step type with its per-step config schema, every trigger type with its config schema, and the graph rules. Call this FIRST, before create_workflow / update_workflow, to construct a valid definition. Read-only.
get_workflow_step
ChatGPTGet one workflow step with its complete redacted config and canonical incoming/outgoing edges. Graph pointers are not included in config.
get_workflow_step_references
ChatGPTGet the step outputs guaranteed on every path to one step, plus the step references its config currently uses and any invalid references.
get_workflow_step_schema
ChatGPTGet the complete config JSON Schema for one workflow step type. Graph pointers are intentionally excluded.
google_places_recommendations
ChatGPTGet recommendations for restaurants, attractions, and other places using Google Places. Use for queries about things to do, places to eat, or local attractions near a location. Returns results with ratings, price levels, and driving distance.
health_check
ChatGPTCheck MCP server connectivity and authentication. Returns a status message with the authenticated workspace ID. Use this tool to verify the MCP connection is working correctly.
import_drive_file
ChatGPTImport a Google Drive file into the workspace knowledge base. Find the file first with search_drive_files or list_drive_files; only files whose supported_for_import is true can be imported. Importing the same file twice updates the existing knowledge source in place rather than creating a duplicate. Pair with set_knowledge_source_sync to keep it up to date automatically.
ingest_file
ChatGPTIngest a file into the knowledge base (fire-and-forget). Exactly one content source is required, resolved in this precedence: `text_content (UTF-8 encoded) → url (HTTP GET) → convex_storage_id` (Convex signed URL → HTTP GET). Returns immediately with a job_id; the actual processing runs in the background and notifies Convex on completion via webhook.
ingest_link
ChatGPTScrape or crawl web URLs into the knowledge base (fire-and-forget). Returns immediately with a job_id. Processing runs in the background.
ingest_structured
ChatGPTIngest a structured data file (CSV, Excel) by blob storage reference. No file parsing — the node stores the storage reference so the agent can access the raw file from the state backend at runtime.
invite_workspace_member
ChatGPTInvite a member by email with a workspace role, including a custom permission set. Get role_id from list_workspace_roles. Requires Manage Members.
knowledge_search
ChatGPTSearch knowledge nodes by title and filters, with pagination. Use this to find nodes matching specific criteria like title, source, type, or parent. For semantic natural-language search, use semantic_knowledge_search. Bodies are omitted by default. Set `include_body=true` to return every matched body's content, or use get_knowledge to read one selected node. Results are automatically filtered to the current agent's access list.
leave_note
ChatGPTLeave an internal note on a contact's conversation. Notes are visible to workspace members only and are NEVER sent to the contact. For callback requests, include caller_name and callback_number, then set follow_up_required to true to put the conversation in the team's queue. Omit follow_up_required for a silent note. Message supports HTML for formatting (e.g. <p>, <br>, <strong>, <ul>). A response with a note_id means the note was saved.
list_access_codes
ChatGPTRead the access codes on a smart lock. When serving a contact, this returns only that guest's own codes on their own lock — use it when a guest asks for a code they forgot. access_codes are the codes on the lock (someone can type them in right now). inactive_codes are past codes (removed, expired, or the provider failed to program them) — use them to explain why a code stopped working, and NEVER give one out as a working code. Each code's code field holds its digits, but ONLY once the lock has confirmed them (status 'set'); it is null for a code still being programmed and for every inactive code. A null code is not a code you can look up elsewhere or guess — the digits either do not exist yet or are no longer valid. Also the way to find an access_code_id before calling delete_access_code. To read back a single code you already hold the id of (e.g. one you just provisioned), use get_access_code.
list_agent_guardrails
ChatGPTList one V2 chat agent's guardrails with stable row IDs. Guardrails have no supported ordering semantics.
list_agent_runs
ChatGPTList runs for a V2 chat agent, newest first. Each run summarizes its status, disposition, error, latency, and token usage. Use get_agent_run for stored run detail and its tool-call timeline.
list_agent_sessions
ChatGPTList an agent's sessions newest first. Each session includes its latest run in the requested time window, including trace metadata for follow-up analysis.
list_agent_triggers
ChatGPTList one V2 chat agent's triggers with stable trigger IDs, optionally filtered by type or enabled state.
list_agents
ChatGPTList V2 chat agent summaries in a workspace. Use get_agent for full configuration.
list_airbnb_transactions
ChatGPTList cached Airbnb transaction rows for opted-in Airbnb connections. Filter by Airbnb account id or transaction type.
list_appointments
ChatGPTList appointments for a workspace. Filter by status and scheduled start range to compute booking efficacy rates.
list_calls
ChatGPTList workspace call records with common filters.
list_contact_appointments
ChatGPTList appointments associated with a single contact.
list_contact_calls
ChatGPTList calls associated with a single contact.
list_contact_helpdesk_tickets
ChatGPTList helpdesk tickets mirrored from external helpdesk integrations for a single contact.
list_contact_notes
ChatGPTList internal notes on a contact that are not tied to any ticket, such as notes left in the conversation inbox. Notes are ordered by when they were recorded in Conduit, matching the inbox; notes synced from a PMS keep their original created_at, which can be earlier. Use list_ticket_notes for a ticket's notes.
list_contact_reservations
ChatGPTList reservations associated with a single contact via the contact's reservation allocations. Airbnb reservations include normalized payout, fee, and tax amounts when available.
list_contact_tickets
ChatGPTList tickets associated with a single contact.
list_contacts
ChatGPTList contacts in a workspace with pagination and inbox filters.
list_conversation_assignment_events
ChatGPTList the conversation's assignment and unassignment history, including whether each change came from a user, workflow, API call, round robin, or the system.
list_conversation_tags
ChatGPTList conversation labels, root topics, and subtopics for a workspace.
list_conversations
ChatGPTList conversation summaries for a workspace.
list_custom_attribute_sections
ChatGPTList section IDs, names, order, and attribute counts for a workspace. Use before setting section_id on a custom attribute; this does not return attribute definitions.
list_custom_attributes
ChatGPTList every custom attribute definition in a workspace, including IDs, types, options, and sections. Use before creating or patching definitions; use get_contact_custom_attributes for one contact's values.
list_devices
ChatGPTList the workspace's smart devices (locks, thermostats, noise and motion sensors, cameras) with their online status, battery, lock state, and linked property. Access codes are never included. Use this to find a device before controlling it.
list_drive_connections
ChatGPTList the Google Drive connections you can use in a workspace. Drive access is a personal OAuth grant, so this only ever returns your own connections, never a teammate's. Pass an id from here as connection_id when you own more than one.
list_drive_files
ChatGPTBrowse a Google Drive folder's direct children. Omit folder_id to list the drive root. Folders come back with is_folder true, so you can walk down into them by passing their id as the next folder_id.
list_escalations
ChatGPTList chat escalations for a workspace.
list_helpdesk_tickets
ChatGPTList helpdesk tickets mirrored from external helpdesk integrations (Zendesk, Pylon, Plain).
list_inbox_types
ChatGPTList the workspace's inbox types (id + name). Each id is stable and usable as a message trigger's inbox_type_id (config scope_type "inbox") and as the inbox_type_id filter on list_conversations. Reserved inbox types return their slug (e.g. "guest"); custom inbox types return their opaque id.
list_inboxes
ChatGPTList the inbox types configured for a workspace, including their inboxTypeId values used to scope other tools.
list_knowledge_sources
ChatGPTList the workspace's knowledge sources and their auto-sync state: the cadence each is on, when it next syncs, when it last synced, and whether sync is paused. Use it to find a source id for set_knowledge_source_sync or cancel_knowledge_source_sync.
list_listing_cities
ChatGPTList canonical city values for active workspace listings. Use one returned city as the city filter for search_listing_availability.
list_listing_group_listings
ChatGPTList the listings stored in one listing group. Results include active status and retain unavailable group members.
list_listing_groups
ChatGPTList the listing groups in a workspace. Use a group_id with list_listing_group_listings to inspect its members.
list_listings
ChatGPTList workspace listings with the listingId needed by check_listing_availability and other exact listing operations. Use query to narrow by internal listing name, or omit it to browse paginated listings. Use listing_ids to return an exact ordered subset. Use active to select active or inactive listings; include_inactive defaults to true when active is omitted. Results contain documented active-status metadata plus sanitized public details including images, descriptions, capacity, amenities, and base nightly price when known.
list_message_senders
ChatGPTList configured outbound providers/from identities for a channel. Use this before send_message when the user asks to send from a specific number/address, or when send_message needs sender_id because multiple senders are configured.
list_operator_skills
ChatGPTList the Operator's skills (knowledge cards) for a workspace. These are the Operator assistant's skills, separate from regular agent skills.
list_portal_guides
ChatGPTList workspace portal guides with their publication status and update time.
list_portal_offer_catalog
ChatGPTList portal offer definitions for configuration work. This does not list offers on one customer portal session.
list_portal_offers
ChatGPTList this workspace's active upsell offers, optionally filtered by a search query over name and description. Use this to find the offer(s) matching a contact's request so you can add them to their portal via update_portal.
list_portal_sessions
ChatGPTList reservations selected by arrival date, departure date, listing, contact, or PMS reservation identifiers. Each reservation includes one nullable portal session and check-in progress summary.
list_portal_template_catalog
ChatGPTList saved portal templates with their status, version, and update time.
list_reservation_alterations
ChatGPTList pending guest-requested Airbnb reservation alterations. Compare current and requested dates, guest counts, and host payout before responding. Poll this tool to discover new requests.
list_reservations
ChatGPTList PMS reservations in a workspace. To find arrivals on a specific date, provide both listing_id and arrival_date; to find the booking that ends that day, provide listing_id and departure_date instead. Either indexed lookup returns the matching bookings without paging through the rest of the listing's calendar, which is how you resolve the other guest on a turnover day. Filter by status when needed. Airbnb reservations include normalized payout, fee, and tax amounts when available.
list_skills
ChatGPTList workspace agent skills.
list_supported_models
ChatGPTList the LLM models an internal agent's model can be set to. Each entry's model_string is the value to pass. The set is global and can change over time, so read it here instead of hardcoding values.
list_ticket_events
ChatGPTList a ticket's event history, newest first: assignments, status changes, reopen/close/merge, waiting-on and follow-up changes, and message events. Each event names its actor: actor.kind is member for a human teammate, or agent, bot, workflow, system, contact. Use this to see who assigned a ticket before reassigning it. Pass types (e.g. ["assigned", "unassigned"]) to keep only those events.
list_ticket_notes
ChatGPTList internal notes attached to a ticket.
list_tickets
ChatGPTList the ticket queue for a workspace.
list_verification_rules
ChatGPTList portal verification rules in evaluation order. Agreement, mandatory fee, additional question, and custom field gate rules stack, so every enabled matching rule applies. Other step types use the first enabled matching rule in their slot, so order decides which applies.
list_voice_agents
ChatGPTList the voice agents in a workspace. A voice agent is an AI-enabled phone number that answers inbound calls.
list_workflow_execution_events
ChatGPTList the step-level event log for a single workflow execution. Ascending by timestamp by default. Payload summaries have credential/raw-request material redacted.
list_workflow_executions
ChatGPTList the run history for a workflow, newest first. Filter by status and by started_after / started_before.
list_workflow_folders
ChatGPTList workflow folders in a workspace. Use the returned folder ids with move_workflow_to_folder.
list_workflows
ChatGPTList workflows (the standalone Workflows tab) in a workspace. Returns the latest version of each workflow by default; pass all_versions=true to include version history.
list_workspace_permissions
ChatGPTList available permission names for creating a custom workspace role.
list_workspace_roles
ChatGPTList workspace roles and their permission sets, including custom roles. Use role_id when inviting a member.
list_workspace_senders
ChatGPTList the configured outbound email, SMS, and WhatsApp senders for a workspace.
list_workspace_users
ChatGPTList workspace members. Each row carries two distinct ids: id (the user id) and member_id (the workspace member id). Task assignment takes member_id, not id. For scheduling, set include_work_hours: true to read weekly schedules with the roster.
list_workspace_whatsapp_templates
ChatGPTList stored WhatsApp templates, approval statuses, Content SIDs, bodies, and variable keys for a workspace.
list_workspaces
ChatGPTList the workspaces accessible to the current public API token.
move_directory_contents
ChatGPTMove up to limit visible direct children from a directory. Directory children keep their subtrees. Hidden ACL-denied children are not moved. The source directory remains in place, and has_more/next_cursor tell the caller when repeated calls are needed.
move_knowledge
ChatGPTMove a knowledge node (article or directory) to a new location in the tree. When moving a directory, the entire subtree moves with it.
move_workflow_to_folder
ChatGPTMove a workflow into a workflow folder. Set folder_id to null to remove it from its current folder. Requires the Manage Workflows permission.
patch_agent_guardrail
ChatGPTUpdate one guardrail's title or rule without changing sibling guardrails.
patch_agent_trigger
ChatGPTChange one trigger's name, description, config, or enabled state without changing the agent's other triggers. The trigger ID and type stay the same.
patch_call_group
ChatGPTEdit a call group's name, routing strategy, auto-away behavior, members, or phone numbers. Only supplied fields change. Requires the Manage Assignment Schedule permission.
patch_contact
ChatGPTUpdate mutable contact metadata for an existing contact.
patch_contact_custom_attributes
ChatGPTFor Operator or platform workflows with a known contact ID: patch one or more typed custom attribute values. For ticket-aware, name-based single-field changes, use contact_update_custom_field.
patch_conversation_tag
ChatGPTUpdate a conversation label, root topic, or subtopic. Pass parent_tag_id=null to promote a subtopic to a root topic.
patch_custom_attribute
ChatGPTUpdate mutable metadata, placement, or options for a custom attribute definition. Use an ID from list_custom_attributes; use patch_contact_custom_attributes to set contact values. Option renames migrate stored values; removing in-use values rejects unless clearing is requested.
patch_custom_attribute_section
ChatGPTRename or reorder an existing custom attribute section using an ID from list_custom_attribute_sections. Omitted fields stay unchanged; this does not move attributes between sections.
patch_operator_skill
ChatGPTUpdate an Operator skill's title and/or knowledge. Requires the Manage Agents permission.
patch_portal_brand_kit
ChatGPTUpdate the workspace Brand Kit. Existing customer portal sessions keep their saved branding snapshot.
patch_portal_guide
ChatGPTUpdate a portal guide. Published guide changes reach matching customer portals immediately.
patch_portal_offer
ChatGPTUpdate a portal offer definition. Saved customer portals that reference this offer receive the new values.
patch_portal_template
ChatGPTUpdate selected portal template sections. Existing customer portal sessions keep their saved snapshot.
patch_skill
ChatGPTUpdate mutable workspace agent skill fields.
patch_verification_rule
ChatGPTUpdate a portal verification rule. The step type cannot change, so a supplied config must match the type the rule already has.
patch_voice_agent
ChatGPTUpdate mutable voice agent fields (name, prompt, welcome message, voice tuning, escalation, tag inheritance, inbound schedule). Only the fields you send change; the rest are preserved.
pause_contact_ai
ChatGPTPause AI responses for a contact indefinitely or for 30 or 60 minutes.
present_booking_checkout
ChatGPTPresent a validated property booking link and hold summary after availability and guest counts are confirmed. This tool does not create a reservation or hold; the customer skill must do that through its PMS first.
preview_workflow_clone
ChatGPTPreview a same- or cross-workspace workflow clone. Inventories public resource dependencies and protected secret paths, validates explicit cross-workspace resource mappings and provider_config_overrides, and reports unresolved references without writing. Provider overrides must match the exact required provider/path pair, replace target-specific provider metadata, and should preserve source resource IDs for resource_mappings or omit optional connections.
preview_workflow_edits
ChatGPTPlan update_step, patch_step_config, retarget_step_reference, insert_linear_step, and guarded delete_isolated_step operations against an exact immutable base version. retarget_step_reference changes typed step-output references without exposing surrounding protected HTTP values. Makes no writes and returns current heads, a canonical diff, a redacted candidate byte estimate, strict validation plus legacy-compatibility gates, and the result hash required by apply_workflow_edits.
propose_drive_split_mapping
ChatGPTRead a spreadsheet knowledge source and rank the ways it could be split into one knowledge node per listing, subunit or group. Returns the sheet's columns, the ranked candidate mappings scored against every row, the listings, subunits and groups available to map onto, and any mapping already saved. Call this before set_drive_split_mapping.
query_insights
ChatGPTExecute a BigQuery query, render the result as a chart image, and store durable chart state for later PDF export. Use this before generate_pdf when the PDF should include a chart via [[chart:<chart_id>]]. Call describe_bigquery_tables first to discover exact column names, and alias columns to the well-known keys the chosen visualization needs (line: date+value; metric: value; bar/horizontal-bar: name+value; heatmap: hour+day+value; funnel: name+stage columns). Only SELECT statements are allowed; workspace scoping and deleted-record filtering are injected automatically. When retrying or fixing a chart query, pass chart_id from the previous result to replace it instead of creating a duplicate.
register_portal_listing_upload
ChatGPTValidate and register an uploaded image or video for one portal listing. Pass storage_id from the upload response. Then reference it as storageId in update_portal_listing_field's document. Media already registered to another workspace or listing is rejected. Requires Portals access, ManageProperties permission, and write access.
remove_contact_channel
ChatGPTRemove an email address, phone number, WhatsApp number, or Instagram handle from a contact. If the address has conversation history, those conversations move off this contact: a phone, WhatsApp, or Instagram history moves to a new Unmapped contact, and email threads return to Unmapped. An email with 50 or more conversations is rejected with a conflict and must be removed in the Conduit inbox. Returns the contact with its remaining channels.
remove_ticket_tag
ChatGPTRemove a conversation tag from a ticket. Tags are stored on the ticket's contact, so this removes it from every ticket of that contact. Removing a tag that is not present is a no-op. Returns the contact's current tags.
rename_directory
ChatGPTRename a directory or update its enabled state and tags.
reopen_ticket
ChatGPTReopen a resolved ticket and move its contact back to todo.
reorder_portal_guides
ChatGPTSet the display order for all non-archived portal guides. Include every non-archived guide exactly once.
reorder_verification_rules
ChatGPTSet the evaluation order for every verification rule in the workspace. Include every rule exactly once. Stacking steps (agreements, mandatory fees, question sets, custom field gates) are kept in this order within their step type; for other step types the first enabled matching rule claims its slot.
reschedule_appointment
ChatGPTReschedule an existing appointment to a new time.
resolve_escalation
ChatGPTResolve a chat escalation, moving it into a terminal reviewed state (resolved by default) and recording the reviewer.
resolve_ticket
ChatGPTResolve a ticket. If it is the contact's last active ticket, the contact is marked done.
respond_to_reservation_alteration
ChatGPTAccept or decline a pending guest-requested Airbnb reservation alteration. An accepted change applies on Airbnb and can change reservation dates, guest counts, charges, or refunds. A declined change leaves the original reservation unchanged.
restore_portal_guide
ChatGPTRestore an archived portal guide as a draft.
restore_portal_offer
ChatGPTRestore an archived portal offer without adding it to portal templates.
restore_portal_template
ChatGPTRestore an archived portal template as a draft.
resume_contact_ai
ChatGPTResume AI responses for a contact.
schedule_cancel
ChatGPTCancel a schedule you created (one-shot or recurring) by its id, to call off a planned revisit to this conversation. Returns cancelled: false when no matching schedule exists for this session.
schedule_cron
ChatGPTSchedule a recurring future run of yourself to revisit this conversation on a schedule. Each firing resumes your originating session with the stored prompt and no new incoming message. Decide then whether a self-initiated reply is warranted (the proactive disposition) or whether to stay silent. Only schedule when explicitly asked to follow up on a schedule, for example 'every weekday at 9am'. Runs in the workspace timezone.
schedule_list
ChatGPTList the schedules you have created in this session (both wake and cron), to review what is already scheduled for this conversation. Use the schedule_id values with schedule_cancel.
schedule_wake
ChatGPTSchedule a one-shot future run of yourself to revisit this conversation later. When it fires, your session resumes with the stored prompt and no new incoming message. Decide then whether a self-initiated reply is warranted (the proactive disposition) or whether to stay silent. Only schedule when explicitly asked to follow up at a later time, for example 'check back in 2 days'.
search_contacts
ChatGPTSearch contacts by name, email, phone, WhatsApp, or channel value.
search_conversations
ChatGPTSearch conversations by contact identity or message body text.
search_drive_files
ChatGPTSearch your Google Drive for files by name or content. Use this to find a file before importing it into the knowledge base with import_drive_file. Results carry supported_for_import, which tells you whether that file can be imported at all.
search_listing_availability
ChatGPTDiscover confirmed available listings across a workspace, within a city, or near a known listing for one checkout-exclusive date range. Use check_listing_availability instead when the listing is already known. A partial result means only the returned matches are confirmed; it does not prove the rest of the workspace is unavailable. Continue with next_cursor when coverage is partial and a cursor is returned. Availability only means every requested calendar night is open; it does not confirm all booking rules.
search_tickets
ChatGPTSearch tickets by subject, contact, channel, or message.
search_workspace_users
ChatGPTFind workspace members by partial name or email. Each row carries two distinct ids: id (the user id) and member_id (the workspace member id). Task assignment takes member_id, not id. For scheduling, set include_work_hours: true to read weekly schedules with the roster.
semantic_knowledge_search
ChatGPTSearch this workspace's knowledge base. Use it whenever an answer should rest on this workspace's own documented facts and policies rather than on your general knowledge. Ask a short natural-language question, not keywords. Returns a status envelope, not a list. Its message says whether the result is usable and whether searching again can help; follow it.
send_conversation_message
ChatGPTSend a reply to a conversation thread.
send_message
ChatGPTSend a message to a contact, ticket, conversation, or raw address as the running agent. Provide exactly one target: contact_id, ticket_id, conversation_id, or to. For existing tickets/conversations, omit channel unless you need a specific channel. For raw phone numbers, channel must be sms or whatsapp; raw email addresses default to email. Returns blocked instead of throwing when delivery is disallowed by local safety or channel rules.
send_system_email
ChatGPTSend an email from a Conduit-owned system address (reports@conduitalert.com). Unlike send_conversation_message, this does NOT require the workspace to have its own email sender (Postmark/Gmail) connected, so use it whenever you need to send but no sender is available. It sends FROM Conduit rather than the customer's own inbox and does not create a contact thread, so it fits reports, summaries, notifications, alerts, and other one-off system emails. Use send_conversation_message instead for contact/guest-facing replies that should come from the customer's own verified sender. Provide a subject and either body (plain text) or html_body (pre-rendered HTML). Replies go to Conduit, not the customer, so set reply_to if responses should reach a real inbox. Returns blocked instead of throwing when the send is disallowed by validation or run state.
send_ticket_message
ChatGPTSend a reply to a ticket thread. Optional attachments must first be uploaded through the public API upload-url flow, then passed as attachment metadata.
set_agent_skill_access
ChatGPTAssign or remove one workspace skill without changing the agent's other skill assignments.
set_drive_split_mapping
ChatGPTSave a split-by-listing mapping on a knowledge source that is waiting for one, then start the import it has been holding. Call propose_drive_split_mapping first to see the columns and candidates. Only a source whose awaiting_mapping is true can be mapped here; re-mapping a source that already imported is not supported.
set_knowledge_scope
ChatGPTReplace the entity scope owned by one knowledge file.
set_knowledge_source_sync
ChatGPTPut a knowledge source on an auto-sync cadence so Conduit re-imports it on a schedule. Only sources imported through a connected provider (Google Drive, Notion, Airtable, a link, or a PMS) can auto-sync. Use cancel_knowledge_source_sync to turn it off.
set_listing_active
ChatGPTActivate or deactivate up to 50 workspace listings as one audited request. Run with dry_run true first to preview each listing's before and after state and any reservation warnings, then repeat with dry_run false to apply it. Already-matching listings are unchanged and do not create audit events. Requires a read-write credential and the Manage Properties permission.
set_lock_state
ChatGPTLock or remotely unlock a smart lock. Locking is routine; remote unlock is refused unless the workspace's device policy explicitly allows it. The command is sent to the physical device.
set_member_work_hours
ChatGPTReplace a workspace member's weekly work hours and timezone, preserving time off. Empty schedule means unrestricted hours. Human callers can access their own hours; accessing another member requires Manage Members, Manage Calendars, or Manage Assignment Schedule.
set_noise_threshold
ChatGPTConfigure a noise-monitoring threshold on a noise sensor — programs the physical sensor via the device provider with a daily quiet window (start/end as HH:MM local time) and a limit as decibels and/or a Noise Risk Score (provide at least one). Use it to set up quiet hours for a property (e.g. after a noise complaint or a party-risk booking); a later breach raises a security task for the operations team. Subject to the workspace's device policy.
set_thermostat
ChatGPTSet a thermostat's HVAC mode (heat, cool, heat_cool, or off) and optionally its target temperature in Celsius — the command programs the physical unit via the device provider. Use it to make a unit comfortable before arrival (pre-cool/pre-heat), respond to a too-hot/too-cold report, or set back an empty unit. Target must be within the 10–32°C safe band. Check the current climate state first with get_device_telemetry. Subject to the workspace's device policy.
set_ticket_follow_up
ChatGPTPut an open ticket on follow-up (snooze) until a future time. It leaves the actionable queue until then, or until the contact writes again. Replaces any follow-up already set. Resolved, closed, and merged tickets are refused.
task_add_requirements
ChatGPTAdd requirements to a task using labels or typed items: check, yes_no, text, number, or rating. Any item type can require a photo. Existing labels are skipped, so retries do not create duplicates.
task_attach_image
ChatGPTAttach an externally hosted image to a task. Use task_prepare_image_upload for a local image, or task_attach_message_media when the image came from a conversation message.
task_attach_message_media
ChatGPTCopy photos or files from a conversation message onto a task. Omit attachment filters to copy every file on the message.
task_automation_create
ChatGPTCreate a reservation task automation anchored to check-in or checkout. Select checklist_template_id to inherit all task properties; task-property overrides are rejected. Without a template, category_id is required and task properties belong to this rule. listing_ids filters properties; enabled defaults to true. Estimated time is optional. Checklist items support check, yes_no, text, number, or rating; only check items can require photos.
task_automation_delete
ChatGPTDelete a task automation. Existing tasks remain unless delete_upcoming_tasks is explicitly true.
task_automation_list
ChatGPTList reservation and repeating task automations, including checklist template IDs and property scopes.
task_automation_set_enabled
ChatGPTEnable or disable a reservation task automation. When disabling, optionally delete upcoming unstarted schedule-owned tasks. Re-enabling does not restore deleted tasks.
task_automation_update
ChatGPTUpdate a reservation task automation anchored to check-in or checkout. Omitted fields stay unchanged; nullable fields can be cleared. Template rules reject task-property overrides, including when checklist_template_id is omitted. Edit the template, or set checklist_template_id to null to use custom task properties. The rule controls its name, schedule, and listing_ids filter. Estimated time is optional. Checklist items support check, yes_no, text, number, or rating; only check items can require photos.
task_category_create
ChatGPTCreate a task category in the workspace. Names must be unique among active categories. Read categories with task_list_categories. Optional role_ids control planning visibility; empty means all roles.
task_category_get
ChatGPTRead a task category's full settings by ID, including manual-only categories. Missing optional settings inherit workspace defaults.
task_category_set_roles
ChatGPTSet which workspace roles appear in task planning for a category. Use role IDs from list_workspace_roles. Pass an empty role_ids array for all roles. This controls planning visibility, not assignment permissions.
task_category_update
ChatGPTEdit task category settings. Omit fields to leave them unchanged; null completion status or Slack routing restores the workspace default. Read current settings with task_category_get.
task_create
ChatGPTCreate a task with its category, priority, assignee, due date, charge rate, total charge, custom fields, and reservation or property context. New tasks default to Triage for human approval; only set status_id when the user explicitly requests another status. First use task_list with the relevant reservation, property, or contact; if the issue already has a task, use task_update. Include source_message_ids for conversation-based requests. requirements accepts check, yes_no, text, number, and rating items.
task_delete
ChatGPTSoft-delete a duplicate or mistaken task. To finish real work, use task_update_status to complete or cancel it.
task_edit_requirement
ChatGPTEdit a checklist item label, type, or photo requirement in one atomic call. Supply at least one field; omitted fields stay unchanged. Type changes clear the answer and completion. Requiring a photo clears completion when evidence is missing. Use task_set_requirement for answers and completion.
task_finalize_image_upload
ChatGPTAttach an image uploaded through task_prepare_image_upload to the task. Pass the storageId returned by the upload response and the file name to show on the task.
task_get
ChatGPTGet one task's full details, checklist, attachments, custom field values, and recent activity.
task_list
ChatGPTFind tasks by property, reservation, contact, category, assignee, status, time, or text. Filter on the server instead of listing everything, and check here before task_create to avoid duplicates.
task_list_categories
ChatGPTList valid task categories and IDs, including planning role_ids. Empty role_ids means all roles. Pass contact_id when categories depend on the contact's inbox.
task_list_custom_fields
ChatGPTList task custom fields, IDs, types, and Select options before writing custom_field_values.
task_list_statuses
ChatGPTList task status IDs and behavior categories before using a workspace-defined status.
task_prepare_image_upload
ChatGPTPrepare to attach a local or chat-uploaded image to a task. POST the raw file bytes to the returned Convex upload URL, read storageId from the JSON response, then call task_finalize_image_upload.
task_property_apply_template
ChatGPTAttach a task template to a property. Returns its property checklist ID.
task_property_create_area
ChatGPTCreate a custom area for property checklist sections.
task_property_create_item
ChatGPTCreate or reuse a workspace item name (for example, Sink or Microwave). Use the returned ID as itemGroups[].itemId in sections or rooms; checklist steps belong to each placement. Names are deduplicated ignoring case and outer whitespace.
task_property_list_category_assignees
ChatGPTList preferred task assignees by category for a property.
task_property_list_checklists
ChatGPTList property checklists with resolved inherited or overridden sections, template item IDs and assignee details.
task_property_remove_template
ChatGPTRemove a template mapping and its overrides from a property; keep the root template.
task_property_set_category_assignee
ChatGPTSet the property preferred assignee for a task category; null clears the preference.
task_property_set_checklist_assignee
ChatGPTSet the preferred assignee for a property checklist; null restores fallback assignment.
task_property_set_checklist_estimated_time
ChatGPTSet estimated minutes for a property checklist; null restores the template duration.
task_property_update_checklist
ChatGPTUpdate property-specific additional description, sections, estimated minutes, or charge rate. Additional description appends to the live template description for future tasks without changing the template. Omit a field to leave it unchanged; null clears its override. Rate amounts are whole cents with hour or piece basis. Existing task snapshots stay unchanged unless update_existing_tasks is true.
task_recurring_automation_create
ChatGPTCreate a repeating task automation. Select checklist_template_id to inherit all task properties; task-property overrides are rejected. Without a template, category_id is required and task properties belong to this rule. listing_ids filters properties; enabled defaults to true. Estimated time is optional. Checklist items support check, yes_no, text, number, or rating; only check items can require photos.
task_recurring_automation_set_enabled
ChatGPTEnable or disable a repeating task automation. Re-enabling recomputes its next run.
task_recurring_automation_update
ChatGPTUpdate a repeating task automation. Omitted fields stay unchanged; nullable fields can be cleared. Template rules reject task-property overrides, including when checklist_template_id is omitted. Edit the template, or set checklist_template_id to null to use custom task properties. The rule controls its name, schedule, and listing_ids filter. Estimated time is optional. Checklist items support check, yes_no, text, number, or rating; only check items can require photos.
task_remove_requirement
ChatGPTRemove one checklist item from a task. Other item IDs, answers and completion states remain unchanged.
task_resolve_send_target
ChatGPTResolve the current task assignee to a safe send_message target. Use this instead of matching people by name.
task_set_assignee
ChatGPTSet a task's complete team with assignees, including members and contacts. Use [] to clear everyone. The older member_id input remains supported for a single member. This may notify newly assigned people but does not send work orders.
task_set_custom_fields
ChatGPTUpdate only a task's custom fields. Use field IDs and value types from task_list_custom_fields; unspecified fields stay unchanged. task_update can change custom and standard fields together.
task_set_due_at
ChatGPTSet a task deadline with an ISO 8601 datetime, or pass null to remove the pinned deadline.
task_set_estimated_time
ChatGPTSet an existing task's estimated duration in whole minutes. Zero is allowed; null clears the estimate.
task_set_requirement
ChatGPTUpdate a requirement type, save or clear a typed answer, or set a check item complete/incomplete. Get requirement_id and type from task_get. Type changes clear the previous answer.
task_template_create
ChatGPTCreate a task template. listing_ids optionally maps it to properties. Items support type check, yes_no, text, number, or rating; only check items can require photos.
task_template_create_area
ChatGPTCreate a custom area for task template sections.
task_template_create_item
ChatGPTCreate or reuse a workspace item name (for example, Sink or Microwave). Use the returned ID as itemGroups[].itemId in sections or rooms; checklist steps belong to each placement. Names are deduplicated ignoring case and outer whitespace.
task_template_delete
ChatGPTDelete a task template using the same usage guards as the app.
task_template_list
ChatGPTList task templates, their sections and property mappings.
task_template_list_areas
ChatGPTList area IDs usable in template and property sections.
task_template_list_items
ChatGPTList reusable workspace item names and IDs for itemGroups in template and property sections or rooms.
task_template_update
ChatGPTReplace template details and sections. Omit listing_ids to keep mappings; provide an empty array to remove all mappings. Items support type check, yes_no, text, number, or rating; only check items can require photos.
task_update
ChatGPTUpdate an existing task's title, description, category, priority, assignee, due date, charge rate, total charge, custom fields, or reservation/property context. Use this instead of task_create when the same issue already has a task. Use task_update_status for lifecycle status changes.
task_update_status
ChatGPTMove a task to another status, including completed or cancelled. Use status_id for workspace-defined lanes from task_list_statuses.
update_access_code
ChatGPTUpdate access-code digits or start/end times. Omitted fields stay unchanged. Online time-bound codes support schedule edits; offline codes do not. Automatic guest schedules apply to every lock on the reservation and persist until reservation dates or the property change. Schedule edits require an operator; contact-facing agents must request operator approval. Supply at least one field. Digits must contain 4 to 9 numerals. Changes are asynchronous. Read get_access_code after editing: digits require status set. For schedule changes, wait for windowSyncStatus updated. This confirms provider synchronization, not a physical access check.
update_portal
ChatGPTUpdate the offers shown by an existing active portal session without changing the portal link. Pass the session_id from get_portal or get_customer_portals as portal_session_id. Add/remove offers by ID from list_portal_offers. highlight_offer_id persists by making that offer the featured portal offer. Purchased or in-progress checkout offers cannot be removed.
update_portal_listing_field
ChatGPTEdit one guest portal field for a property, such as wifi name or password, door code, check-in or check-out time or instructions, parking, house rules, house manual, directions, area description, trash, address, map links, or portal name. Sets a portal-only override; PMS data and other fields stay unchanged, and reset removes the override. Send a plain value, or the complete rich-text document including images to keep. Register new media first. Requires Portals access, ManageProperties permission, and write access. Changes affect portals using this listing.
update_ticket_note
ChatGPTUpdate an internal note attached to a ticket.
update_workflow
ChatGPTReplace a workflow's definition by creating a NEW version under the same workflow (the old version is never mutated in place). The intended loop is get_workflow -> mutate the JSON -> update_workflow. New version is DRAFT unless activate is true. Config fields whose value is the redaction placeholder are preserved from the current version.
close_ticket
Claudecreate_agent
Claudecreate_contact
Claudecreate_knowledge_node
Claudecreate_skill
Claudecreate_ticket_note
Claudedelete_agent
Claudedelete_knowledge_node
Claudedelete_skill
Claudedelete_ticket_note
Claudeget_agent
Claudeget_appointment
Claudeget_call
Claudeget_contact
Claudeget_contact_custom_attributes
Claudeget_conversation
Claudeget_helpdesk_ticket
Claudeget_knowledge_node
Claudeget_reservation
Claudeget_skill
Claudeget_ticket
Claudeget_ticket_note
Claudelist_agents
Claudelist_appointments
Claudelist_calls
Claudelist_contact_appointments
Claudelist_contact_calls
Claudelist_contact_helpdesk_tickets
Claudelist_contact_reservations
Claudelist_contact_tickets
Claudelist_contacts
Claudelist_conversation_messages
Claudelist_conversations
Claudelist_custom_attributes
Claudelist_escalations
Claudelist_helpdesk_tickets
Claudelist_knowledge_nodes
Claudelist_reservations
Claudelist_skills
Claudelist_ticket_messages
Claudelist_ticket_notes
Claudelist_tickets
Claudelist_workspace_senders
Claudelist_workspace_users
Claudelist_workspace_whatsapp_templates
Claudelist_workspaces
Claudepatch_agent
Claudepatch_contact
Claudepatch_contact_custom_attributes
Claudepatch_skill
Claudereopen_ticket
Clauderesolve_ticket
Claudesearch_contacts
Claudesearch_conversations
Claudesearch_knowledge
Claudesearch_knowledge_nodes
Claudesearch_tickets
Claudesearch_workspace_users
Claudesend_contact_message
Claudesend_conversation_message
Claudesend_ticket_message
Claudeupdate_knowledge_node
Claudeupdate_ticket_note
Claude