The ProhostAI MCP connector routes your AI agent's tool calls to ProhostAI's own MCP server through Scalekit. Each user signs in to ProhostAI once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 268 tools.
- Tools
- 268
- What they doRead · write · destructive
- 98 · 58 · 11298 read58 write112 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own ProhostAI MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the ProhostAI MCP connection
In AgentKit > Connections, create a ProhostAI MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
ProhostAI MCP server connections use your own OAuth app. Register one with ProhostAI MCP server and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the ProhostAI MCP connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'prohostaimcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize ProhostAI MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'prohostaimcp_community_list_lounges',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "prohostaimcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize ProhostAI MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="prohostaimcp_community_list_lounges",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolprohostaimcp_check_missing_custom_fieldsFor a set of field keys, return which listings (under a tag or an explicit ID list) don't have a value for them in the merged hierarchy.Read-onlyCheck Missing Custom Fields
For a set of field keys, return which listings (under a tag or an explicit ID list) don't have a value for them in the merged hierarchy. Useful for validating tag-scoped guidebook references before saving.
Inputs
field_keysarrayrequired- The custom-field keys to check for missing values.
listing_idsstring- Restrict the check to this explicit list of listing IDs.
tag_idstring- Restrict the check to listings assigned to this tag.
prohostaimcp_classify_bank_transactionAI-suggest the best expense category for a Plaid bank transaction.Read-onlyClassify Bank Transaction
AI-suggest the best expense category for a Plaid bank transaction. Combines fuzzy text matching over the account's expense categories with an LLM pick. Read-only — suggests a category id + a ranked candidate shortlist; makes no changes and needs no confirmation. Use the suggested category_id with create_expense_from_transaction.
Inputs
transaction_idstringrequired- The unique identifier of the Plaid bank transaction to classify.
prohostaimcp_classify_ramp_transactionAI-suggest the best expense category for a Ramp corporate-card transaction.Read-onlyClassify Ramp Transaction
AI-suggest the best expense category for a Ramp corporate-card transaction. Combines fuzzy text matching over the account's expense categories with an LLM pick. Read-only — suggests a category id + a ranked candidate shortlist; makes no changes and needs no confirmation. Use the suggested category_id with create_expense_from_ramp_transaction.
Inputs
transaction_idstringrequired- The unique identifier of the Ramp corporate-card transaction to classify.
prohostaimcp_community_list_loungesList every community lounge with the acting user's standing in each: slug, name, kind, emoji, member count, whether the user has joined, and whether their credentials make them eligible.Read-onlyCommunity List Lounges
List every community lounge with the acting user's standing in each: slug, name, kind, emoji, member count, whether the user has joined, and whether their credentials make them eligible. Also returns the user's pseudonymous community handle — every join and post is attributed to that handle, never their real name. Call this before community_create_post to pick a valid lounge slug. Requires the `community:read` scope.
Inputs
This tool takes no inputs.
prohostaimcp_crm_get_opportunityFetch a single CRM opportunity by id.Read-onlyCrm Get Opportunity
Fetch a single CRM opportunity by id.
Inputs
opportunity_idstringrequired- The unique identifier of the CRM opportunity to fetch.
prohostaimcp_crm_list_companiesList or search CRM companies (organizations) for the account.Read-onlyCrm List Companies
List or search CRM companies (organizations) for the account.
Inputs
limitinteger- Maximum number of companies to return.default
25 querystring- Search text to match against company names.
prohostaimcp_crm_list_contactsList or search CRM contacts (people) for the account.Read-onlyCrm List Contacts
List or search CRM contacts (people) for the account.
Inputs
company_idstring- Filter results to contacts belonging to this company.
limitinteger- Maximum number of contacts to return.default
25 querystring- Search text to match against contact names, emails, or phone numbers.
prohostaimcp_crm_list_field_definitionsList the account's CRM custom-field definitions, optionally filtered by object type.Read-onlyCrm List Field Definitions
List the account's CRM custom-field definitions, optionally filtered by object type. Use this to check whether a field already exists before creating it.
Inputs
object_typestring- Filter field definitions to only this CRM object type. Omit to list definitions for all object types.
prohostaimcp_crm_list_opportunitiesList or search CRM opportunities (deal cards) for the account.Read-onlyCrm List Opportunities
List or search CRM opportunities (deal cards) for the account.
Inputs
limitinteger- Maximum number of opportunities to return.default
25 pipeline_idstring- Filter results to opportunities in this pipeline.
querystring- Search text to match against opportunity titles.
stage_idstring- Filter results to opportunities in this pipeline stage.
statusstring- Filter results by opportunity status.
prohostaimcp_crm_list_pipelinesList the account's CRM pipelines with their ordered stages.Read-onlyCrm List Pipelines
List the account's CRM pipelines with their ordered stages.
Inputs
This tool takes no inputs.
prohostaimcp_docs_readRead a Drive document by path or id.Read-onlyDocs Read
Read a Drive document by path or id.
Inputs
path_or_idstringrequired- The path or unique identifier of the Drive document to read.
prohostaimcp_docs_read_sectionRead a single section of a doc by heading text.Read-onlyDocs Read Section
Read a single section of a doc by heading text.
Inputs
headingstringrequired- The heading text of the section to read.
path_or_idstringrequired- The path or unique identifier of the Drive document to read from.
prohostaimcp_draft_replyGenerate a non-persisting AI reply draft for a conversation.Read-onlyDraft Reply
Generate a non-persisting AI reply draft for a conversation. Uses the same draft-assist pipeline as the in-app Inbox suggestion UI, but does NOT write any message — returns only the suggested text. Use this to preview what the host could send; call send_message to actually deliver.
Inputs
conversation_idstringrequired- The unique identifier of the conversation to draft a reply for.
instructionstring- Optional instruction steering how the reply should be drafted.
prohostaimcp_drive_getFetch a single Drive item by path or id.Read-onlyDrive Get
Fetch a single Drive item by path or id.
Inputs
path_or_idstringrequired- The path or unique identifier of the Drive item to fetch.
prohostaimcp_drive_listList children of a Drive folder by path.Read-onlyDrive List
List children of a Drive folder by path. Omit path for the root.
Inputs
pathstring- The Drive folder path to list children for. Omit for the root folder.default
prohostaimcp_drive_searchSearch Drive items by name (case-insensitive substring).Read-onlyDrive Search
Search Drive items by name (case-insensitive substring).
Inputs
qstringrequired- The search text to match against Drive item names (case-insensitive substring).
limitinteger- Maximum number of results to return.default
20
prohostaimcp_get_ai_chat_messagesRead the message history of one of this credential's Ask AI chat sessions, oldest first.Read-onlyGet AI Chat Messages
Read the message history of one of this credential's Ask AI chat sessions, oldest first. Requires the `ai_chat:read` scope.
Inputs
session_idstringrequired- The id of the chat session to read.
prohostaimcp_get_ai_employee_repliesPoll your 1:1 DM with an AI employee for messages, oldest first.Read-onlyGet AI Employee Replies
Poll your 1:1 DM with an AI employee for messages, oldest first. Pass `since` (ISO 8601 — use the `sent_at` of the last message you've seen) to fetch only newer messages; the employee's replies have `from_agent: true`. Returns `conversation_id: null` when no DM exists yet. Requires the `agents:converse` scope.
Inputs
agentstringrequired- The AI employee's id or handle whose DM thread to poll.
limitinteger- Maximum number of messages to return.default
20 sincestring- ISO 8601 timestamp; only messages sent after this time are returned. Pass the sent_at of the last message you've already seen. Omit or leave null to fetch from the start of the conversation.
prohostaimcp_get_approval_requestGet one approval request by id, including its current status (pending / approved / rejected / expired), who responded, and any rejection reason.Read-onlyGet Approval Request
Get one approval request by id, including its current status (pending / approved / rejected / expired), who responded, and any rejection reason. Poll this after `create_approval_request` if you are not subscribed to the `agent.approval_resolved` webhook event.
Inputs
approval_idstringrequired- The id of the approval request to retrieve.
prohostaimcp_get_autopilot_scheduleRead the account's autopilot schedule windows — the per-weekday time ranges during which autopilot may auto-send.Read-onlyGet Autopilot Schedule
Read the account's autopilot schedule windows — the per-weekday time ranges during which autopilot may auto-send. Returns whether scheduling is enabled, the schedule timezone, and each window's day, enabled flag, start/end (HH:MM), and whether it spans past midnight. Scheduling only takes effect when schedule_enabled is true.
Inputs
This tool takes no inputs.
prohostaimcp_get_autopilot_settingsRead the account's autopilot (automated-messaging) configuration: the master switch, message delay, confidence + sentiment thresholds, schedule flags, and the per-category and per-channel auto-send rules.Read-onlyGet Autopilot Settings
Read the account's autopilot (automated-messaging) configuration: the master switch, message delay, confidence + sentiment thresholds, schedule flags, and the per-category and per-channel auto-send rules.
Inputs
This tool takes no inputs.
prohostaimcp_get_availabilityGet calendar availability for a listing over a date range.Read-onlyGet Availability
Get calendar availability for a listing over a date range.
Inputs
end_datestringrequired- The end of the date range to check, inclusive.
listing_idstringrequired- The unique identifier of the listing to check.
start_datestringrequired- The start of the date range to check, inclusive.
prohostaimcp_get_bank_accountsList bank/credit-card accounts connected via Plaid for the current account.Read-onlyGet Bank Accounts
List bank/credit-card accounts connected via Plaid for the current account. Returns balances, mask, type/subtype, institution, and Plaid Item status (e.g. login_required). Read-only — never returns Plaid access tokens or other credential material.
Inputs
This tool takes no inputs.
prohostaimcp_get_contact_custom_fieldsReturn the resolved custom-field values for a contact, with provenance.Read-onlyGet Contact Custom Fields
Return the resolved custom-field values for a contact, with provenance. Merge order: account → contact. Contact-level values win on conflict.
Inputs
contact_idstringrequired- The unique identifier of the contact.
prohostaimcp_get_conversation_messagesGet messages for a conversation.Read-onlyGet Conversation Messages
Get messages for a conversation. Returns newest first. Openable scope matches search_conversations: the caller's own account plus — when this credential resolves to a user and is not listing-scoped — the connected-team host threads the user participates in (a merged thread surfaced by search is openable here). A thread outside that scope returns {"error": "Conversation not found"} (the same not-found as a nonexistent id — never an existence oracle). For a merged ProhostAI-Support thread the support-privacy stack is applied: internal notes are side-filtered (a customer-side caller never receives a support-side note, and vice versa), and a support-employee's message renders as the single branded 'ProhostAI Support' identity (no employee name/email) for a customer-side caller; a support-team caller sees real identities.
Inputs
conversation_idstringrequired- The conversation to fetch messages for.
limitinteger- Maximum number of messages to return.default
20
prohostaimcp_get_dashboard_summaryGet a composite dashboard summary: today's check-ins/outs, pending tasks, and inbox counts.Read-onlyGet Dashboard Summary
Get a composite dashboard summary: today's check-ins/outs, pending tasks, and inbox counts. needs_response_count and follow_up_count are the HONEST inbox-tab badges — they mirror the web get_conversation_counts formula: not-done, not currently snoozed, non-internal base slice PLUS the caller's per-user internal (team-chat) slice (needs_response / needs_follow_up on their ConversationUserMetadata). needs_response_count = the 'Respond' badge; follow_up_count = the 'Follow Up' badge (needs_follow_up OR is_starred, with the internal arm counting per-user needs_follow_up only). Connected-teams merged visibility: when this credential resolves to a user (OAuth resource owner or the key's created_by) and is not listing-scoped, the internal slice folds in the user's team-chat threads from connected host accounts, minus agent-operational purposes. ProhostAI-Support threads ARE counted here (member hosts contribute only support; other hosts contribute support alongside their team-chat), so the badge matches search_conversations, which surfaces those threads with the support-privacy stack applied. An API-key credential with no resolved user skips the per-user internal slice (there is no single requesting user to attribute a per-user flag to), and a listing-scoped key also skips it (merged threads are listing-less). unread_conversations is a LEGACY field — COUNT(needs_response=true AND is_done=false) with NO snooze filter, NO channel filter, and NO connected-teams fan-out, so it over-counts; prefer needs_response_count. Known parity nuance (shared with the web badge): the INTERNAL (team-chat) slice of needs_response_count / follow_up_count does not apply a snooze filter, so a currently-snoozed team-chat thread still counts here even though search_conversations(..., snoozed=False) excludes it. The non-internal base slice does exclude snoozed threads.
Inputs
This tool takes no inputs.
prohostaimcp_get_earnings_summaryGet an earnings summary for a date range.Read-onlyGet Earnings Summary
Get an earnings summary for a date range. Only CONFIRMED reservations are counted — cancelled, pending, and inquiry stays are excluded, matching the app's Earnings page and the REST /v1/earnings/summary endpoint. Attribution is by stay containment (the whole stay must fall inside the range), NOT by channel payout date, so this does not reconcile line-for-line to a channel host-earnings report that pays out on check-in. `fees` breaks the total down: accommodation_fare, cleaning_fee, service_fee (guest-side channel fee), pet_fee, other_fees, taxes, discounts, refunds, host_fees (the channel's host commission) and host_payout (what you net). A null amount means no line item of that category exists on any reservation in range — never a fabricated zero. Pass `group_by_listing=true` to get the same figures per listing as well as in aggregate.
Inputs
end_datestringrequired- The end of the date range (inclusive) to summarize earnings for.
start_datestringrequired- The start of the date range (inclusive) to summarize earnings for.
group_by_listingboolean- Whether to also break the totals down per listing, in addition to the aggregate figures.default
false listing_idstring- Restrict the summary to a single listing. Omit to summarize across all listings.
prohostaimcp_get_guest_custom_fieldsReturn the resolved custom-field values for a guest, with provenance.Read-onlyGet Guest Custom Fields
Return the resolved custom-field values for a guest, with provenance. Merge order: account -> guest. Guest-level values win on conflict.
Inputs
guest_idstringrequired- The unique identifier of the guest to fetch resolved custom fields for.
prohostaimcp_get_guidebookGet guidebook content for a listing.Read-onlyGet Guidebook
Get guidebook content for a listing.
Inputs
listing_idstringrequired- The unique identifier of the listing whose guidebook to retrieve.
prohostaimcp_get_listingGet a single listing by id, including title, address, capacity, and timezone.Read-onlyGet Listing
Get a single listing by id, including title, address, capacity, and timezone.
Inputs
listing_idstringrequired- The unique identifier of the listing to retrieve.
prohostaimcp_get_listing_channel_urlsReturn deterministic OTA URLs for a listing.Read-onlyGet Listing Channel Urls
Return deterministic OTA URLs for a listing. Currently resolves the Airbnb URL when sourced directly from Airbnb; OTA-managed channels (Hostaway/Hospitable) require the internal management API.
Inputs
listing_idstringrequired- The unique identifier of the listing to resolve channel URLs for.
prohostaimcp_get_listing_custom_fieldsResolve the merged custom-field dict for a listing using the ``account → tag → source → listing`` precedence.Read-onlyGet Listing Custom Fields
Resolve the merged custom-field dict for a listing using the ``account → tag → source → listing`` precedence. Set ``with_provenance=true`` to include where each value originated.
Inputs
listing_idstringrequired- The unique identifier of the listing to resolve custom fields for.
with_provenanceboolean- Include where each resolved value originated (account, tag, source, or listing).default
false
prohostaimcp_get_listing_customizationsReturn a listing's PriceLabs pricing customizations — standing lead-time / rule-based settings, NOT per-date prices.Read-onlyGet Listing Customizations
Return a listing's PriceLabs pricing customizations — standing lead-time / rule-based settings, NOT per-date prices. Surfaces the ``last_minute_prices`` block (adjusts prices as check-in approaches) and the ``far_out_premium`` block (raises far-out dates). Read this first when pricing depends on how far ahead a booking is made, or when diagnosing flat/clamped calendar prices — a last-minute discount is silently clamped at the listing's min price (see get_listing_pricing).
Inputs
listing_idstringrequired- The unique identifier of the listing to fetch PriceLabs pricing customizations for.
prohostaimcp_get_listing_groupGet the parent/child relationships for a listing group.Read-onlyGet Listing Group
Get the parent/child relationships for a listing group.
Inputs
listing_idstringrequired- The unique identifier of the parent listing whose group to retrieve.
prohostaimcp_get_listing_pricingReturn the current min/base/max for a listing on PriceLabs.Read-onlyGet Listing Pricing
Return the current min/base/max for a listing on PriceLabs. Returns nulls when the listing has no PriceLabs counterpart yet.
Inputs
listing_idstringrequired- The unique identifier of the listing to fetch min/base/max pricing for.
prohostaimcp_get_notification_settingsGet the acting user's complete notification preferences for the selected account: every scope array, the full category x channel delivery matrix, the AI-employee email cadence, the reminder / needs-attention sub-toggles, the per-guest-channel message matrix, and the read-only escalation reachability cap.Read-onlyGet Notification Settings
Get the acting user's complete notification preferences for the selected account: every scope array, the full category x channel delivery matrix, the AI-employee email cadence, the reminder / needs-attention sub-toggles, the per-guest-channel message matrix, and the read-only escalation reachability cap. The response carries a `help` block listing the legal values for every field. Call this before update_notification_settings on any partial change, so you can describe what is changing from what. Requires the `notifications:read` scope.
Inputs
This tool takes no inputs.
prohostaimcp_get_ownerGet full details for a single owner by ID.Read-onlyGet Owner
Get full details for a single owner by ID.
Inputs
owner_idstringrequired- The unique identifier of the owner to retrieve.
prohostaimcp_get_owner_statementGet a single owner statement by ID.Read-onlyGet Owner Statement
Get a single owner statement by ID.
Inputs
statement_idstringrequired- The unique identifier of the owner statement to retrieve.
prohostaimcp_get_owner_statement_expensesReturn expense totals for the statement window, broken down per listing.Read-onlyGet Owner Statement Expenses
Return expense totals for the statement window, broken down per listing.
Inputs
statement_idstringrequired- The unique identifier of the owner statement to retrieve expense totals for.
prohostaimcp_get_owner_statement_rental_activityReturn rental-activity totals for the statement window: per-reservation and per-listing breakdowns plus aggregate totals.Read-onlyGet Owner Statement Rental Activity
Return rental-activity totals for the statement window: per-reservation and per-listing breakdowns plus aggregate totals.
Inputs
statement_idstringrequired- The unique identifier of the owner statement to retrieve rental-activity totals for.
prohostaimcp_get_placeGet a single place by ID.Read-onlyGet Place
Get a single place by ID.
Inputs
place_idstringrequired- The unique identifier of the place to retrieve.
prohostaimcp_get_plaid_connection_statusGet the Plaid bank connection(s) (Items) for the current account: institution, status (active / login_required / pending_expiration / pending_disconnect / error / disconnected), last-sync time, and the Plaid error code driving an unhealthy status.Read-onlyGet Plaid Connection Status
Get the Plaid bank connection(s) (Items) for the current account: institution, status (active / login_required / pending_expiration / pending_disconnect / error / disconnected), last-sync time, and the Plaid error code driving an unhealthy status. Read-only — never returns Plaid access tokens or other credential material.
Inputs
This tool takes no inputs.
prohostaimcp_get_pricelabs_listings_mappingReturn the PriceLabs ↔ ProhostAI listing mapping.Read-onlyGet Pricelabs Listings Mapping
Return the PriceLabs ↔ ProhostAI listing mapping. Each row carries an ``eligibility`` of ``auto_matched`` (PMS id match), ``needs_attention`` (fuzzy name match — host should confirm), or ``ineligible_no_pms`` (no source_listing_id; can't bind). The PL-only listings (PriceLabs has, ProhostAI doesn't) are returned in ``pl_only``. Cached per-account for 60s on the REST side.
Inputs
This tool takes no inputs.
prohostaimcp_get_pricing_neighborhoodReturn PriceLabs neighborhood pricing data for a listing.Read-onlyGet Pricing Neighborhood
Return PriceLabs neighborhood pricing data for a listing. PriceLabs's payload is large and not strictly typed — the raw object is returned under ``data``.
Inputs
listing_idstringrequired- The unique identifier of the listing to fetch neighborhood pricing data for.
prohostaimcp_get_pricing_rate_plansReturn rate plans configured on PriceLabs for the listing.Read-onlyGet Pricing Rate Plans
Return rate plans configured on PriceLabs for the listing.
Inputs
listing_idstringrequired- The unique identifier of the listing to fetch PriceLabs rate plans for.
prohostaimcp_get_pricing_recommendationsReturn PriceLabs recommended prices for a listing.Read-onlyGet Pricing Recommendations
Return PriceLabs recommended prices for a listing. ``date_from`` and ``date_to`` are optional ISO dates; omit them to fetch a default forward-looking window from PriceLabs.
Inputs
listing_idstringrequired- The unique identifier of the listing to fetch PriceLabs price recommendations for.
date_fromstring- The start of the date window to fetch recommendations for. Omit to use PriceLabs's default forward-looking window.
date_tostring- The end of the date window to fetch recommendations for. Omit to use PriceLabs's default forward-looking window.
prohostaimcp_get_property_knowledgeGet all memories (property knowledge) for a listing, grouped by scope.Read-onlyGet Property Knowledge
Get all memories (property knowledge) for a listing, grouped by scope.
Inputs
listing_idstringrequired- The unique identifier of the listing to get property knowledge for.
prohostaimcp_get_ramp_cardsList corporate cards connected via Ramp for the current account.Read-onlyGet Ramp Cards
List corporate cards connected via Ramp for the current account. Returns display name, last four, cardholder, and card state. Read-only — never returns Ramp tokens or other credential material.
Inputs
This tool takes no inputs.
prohostaimcp_get_ramp_connection_statusGet the Ramp connection(s) for the current account: connected business, status (active / error / disconnected), last-sync time, and — when unhealthy — how long the connection has been in error.Read-onlyGet Ramp Connection Status
Get the Ramp connection(s) for the current account: connected business, status (active / error / disconnected), last-sync time, and — when unhealthy — how long the connection has been in error. Read-only — never returns Ramp tokens or other credential material.
Inputs
This tool takes no inputs.
prohostaimcp_get_reservationGet full details for a single reservation by ID.Read-onlyGet Reservation
Get full details for a single reservation by ID.
Inputs
reservation_idstringrequired- The unique identifier of the reservation to retrieve.
prohostaimcp_get_reservation_custom_fieldsReturn the resolved custom-field values for a reservation, with provenance.Read-onlyGet Reservation Custom Fields
Return the resolved custom-field values for a reservation, with provenance. Merge order: account → listing tags by specificity → reservation source → reservation. Reservation-level values win on conflict.
Inputs
reservation_idstringrequired- The unique identifier of the reservation to look up.
prohostaimcp_get_workflowGet one workflow's full definition (steps + trigger config) plus a summary of its most recent executions.Read-onlyGet Workflow
Get one workflow's full definition (steps + trigger config) plus a summary of its most recent executions.
Inputs
workflow_idstringrequired- The unique identifier of the workflow to retrieve.
recent_executionsinteger- Number of most recent executions to include in the summary.default
5
prohostaimcp_google_places_autocompleteServer-side proxy to Google Places Autocomplete (v1).Read-onlyGoogle Places Autocomplete
Server-side proxy to Google Places Autocomplete (v1).
Inputs
qstringrequired- The search text to autocomplete (e.g. a partial address or place name).
near_listing_idstring- Optional listing ID to bias autocomplete results toward this place's location.
session_tokenstring- Optional session token to group this autocomplete request with a subsequent Google Places Details call for billing purposes.
prohostaimcp_google_places_detailsServer-side proxy to Google Places Details (v1).Read-onlyGoogle Places Details
Server-side proxy to Google Places Details (v1). Result is NOT persisted.
Inputs
google_place_idstringrequired- The Google Place ID to fetch details for (returned by google_places_autocomplete).
session_tokenstring- Optional session token matching the one used in the preceding google_places_autocomplete call, for billing purposes.
prohostaimcp_list_ai_chat_sessionsList this credential's Ask AI chat sessions, newest first.Read-onlyList AI Chat Sessions
List this credential's Ask AI chat sessions, newest first. Use a returned session id with `ask_ai_question` to continue a conversation or `get_ai_chat_messages` to read its history. Requires the `ai_chat:read` scope.
Inputs
limitinteger- Maximum number of chat sessions to return.default
20 offsetinteger- Number of chat sessions to skip, for pagination.default
0
prohostaimcp_list_ai_employee_triggersList the event triggers wired to an AI employee.Read-onlyList AI Employee Triggers
List the event triggers wired to an AI employee.
Inputs
agent_idstringrequired- The AI employee's id whose triggers to list.
prohostaimcp_list_ai_employeesList the AI employees on the account, with each one's activation state.Read-onlyList AI Employees
List the AI employees on the account, with each one's activation state.
Inputs
This tool takes no inputs.
prohostaimcp_list_approval_requestsList approval requests on this account, newest first.Read-onlyList Approval Requests
List approval requests on this account, newest first. Filter by `status` (pending / approved / rejected / expired) and/or `source` (`external` = filed by external agents like you, `ai_agent` = in-app AI employees, `autopilot` = escalated guest-reply drafts). Defaults to the 20 most recent across all statuses.
Inputs
limitinteger- Maximum number of approval requests to return.default
20 sourcestring- Filter by source: external (filed by external agents like you), ai_agent (in-app AI employees), or autopilot (escalated guest-reply drafts). Omit for all sources.
statusstring- Filter by status: pending, approved, rejected, or expired. Omit for all statuses.
prohostaimcp_list_cleaning_attachmentsList uploaded attachments on a cleaning.Read-onlyList Cleaning Attachments
List uploaded attachments on a cleaning.
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning to list attachments for.
prohostaimcp_list_cleaning_checklistsList all checklists on a cleaning, with their items.Read-onlyList Cleaning Checklists
List all checklists on a cleaning, with their items.
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning job whose checklists you want to list.
prohostaimcp_list_conversation_message_variablesList valid placeholders for conversation scheduled messages and message templates.Read-onlyList Conversation Message Variables
List valid placeholders for conversation scheduled messages and message templates. Use placeholders with single curly braces, for example {guest_first_name}. Pass ``listing_id`` to also receive per-device smart-door-code tokens (``{smart_door_code:<slug>}``) for that listing's assigned smart locks.
Inputs
listing_idstring- Restrict the returned placeholder list to a specific listing, to also include that listing's per-device smart-door-code placeholders (e.g. {smart_door_code:<slug>}). Omit to list only the generic account-wide placeholders.
prohostaimcp_list_expense_categoriesList expense categories for the account.Read-onlyList Expense Categories
List expense categories for the account. System categories are created lazily on first read.
Inputs
This tool takes no inputs.
prohostaimcp_list_guidebook_pinsList pins for a guidebook plus tag-scoped pins inherited via the guidebook's listing tags.Read-onlyList Guidebook Pins
List pins for a guidebook plus tag-scoped pins inherited via the guidebook's listing tags.
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook to list pins for.
prohostaimcp_list_guidebook_sectionsList the guidebook-scoped sections of a guidebook.Read-onlyList Guidebook Sections
List the guidebook-scoped sections of a guidebook.
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook whose sections to list.
prohostaimcp_list_listing_photosList the photos attached to a listing, ordered by the ``order`` field.Read-onlyList Listing Photos
List the photos attached to a listing, ordered by the ``order`` field.
Inputs
listing_idstringrequired- The unique identifier of the listing whose photos should be listed.
prohostaimcp_list_listingsList all listings (properties) for the account.Read-onlyList Listings
List all listings (properties) for the account.
Inputs
This tool takes no inputs.
prohostaimcp_list_message_templatesList all message templates on the account.Read-onlyList Message Templates
List all message templates on the account.
Inputs
This tool takes no inputs.
prohostaimcp_list_owner_statementsList owner statements for the account, optionally filtered by status, owner, or title search.Read-onlyList Owner Statements
List owner statements for the account, optionally filtered by status, owner, or title search.
Inputs
limitinteger- Maximum number of statements to return.default
20 owner_idstring- Filter statements by owner ID.
searchstring- Search statements by title text.
statusstring- Filter statements by status (e.g. draft, sent, paid).
prohostaimcp_list_placesList the account's places with optional filters (tag, category, text search).Read-onlyList Places
List the account's places with optional filters (tag, category, text search).
Inputs
categorystring- Filter results to places in this category.
has_google_idstring- Filter to places that do (true) or do not (false) have an associated Google Place ID.
limitinteger- Maximum number of places to return.default
100 listing_tag_idstring- Filter results to places tagged with this listing tag ID.
offsetinteger- Number of places to skip before starting to return results, for pagination.default
0 qstring- Free-text search query to filter places by name or other text fields.
prohostaimcp_list_pricing_overridesList date-specific price overrides currently set on PriceLabs for the listing.Read-onlyList Pricing Overrides
List date-specific price overrides currently set on PriceLabs for the listing.
Inputs
listing_idstringrequired- The unique identifier of the listing to list price overrides for.
prohostaimcp_list_saved_repliesList all saved replies on the account.Read-onlyList Saved Replies
List all saved replies on the account.
Inputs
This tool takes no inputs.
prohostaimcp_list_scheduled_messagesList scheduled messages on a conversation, optionally filtered by status.Read-onlyList Scheduled Messages
List scheduled messages on a conversation, optionally filtered by status.
Inputs
conversation_idstringrequired- The conversation to list scheduled messages for.
limitinteger- Maximum number of scheduled messages to return.default
50 statusstring- Optional status filter.
prohostaimcp_list_skillsList the account's skill library (host playbooks): named, reusable procedure packs the AI follows for specific situations (e.g.Read-onlyList Skills
List the account's skill library (host playbooks): named, reusable procedure packs the AI follows for specific situations (e.g. early check-in requests). Returns routing metadata per skill — key, name, when-to-use description, category, enabled state, and whether it is a built-in or customized — WITHOUT bodies. Use load_skill to read one skill's full instructions.
Inputs
This tool takes no inputs.
prohostaimcp_list_suggestionsList AI suggestions / drafts for a conversation, newest first.Read-onlyList Suggestions
List AI suggestions / drafts for a conversation, newest first.
Inputs
conversation_idstringrequired- The unique identifier of the conversation to list AI suggestions for.
limitinteger- Maximum number of suggestions to return.default
20
prohostaimcp_list_task_checklistsList all checklists on a task.Read-onlyList Task Checklists
List all checklists on a task.
Inputs
task_idstringrequired- The unique identifier of the task whose checklists to list.
prohostaimcp_list_upgrade_optionsList the upgrade options attached to a guidebook.Read-onlyList Upgrade Options
List the upgrade options attached to a guidebook.
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook whose upgrade options should be listed.
prohostaimcp_list_webhook_subscriptionsList active webhook subscriptions for the account.Read-onlyList Webhook Subscriptions
List active webhook subscriptions for the account.
Inputs
This tool takes no inputs.
prohostaimcp_list_workflowsList automation workflows on the account.Read-onlyList Workflows
List automation workflows on the account. Optionally filter by status ('active' or 'paused'). Returns each workflow's trigger, schedule, and run stats.
Inputs
limitinteger- Maximum number of workflows to return.default
50 statusstring- Filter workflows by status. One of 'active' or 'paused'.
prohostaimcp_load_skillLoad one skill (host playbook) by key and return its full body — the host's standing instructions for that situation.Read-onlyLoad Skill
Load one skill (host playbook) by key and return its full body — the host's standing instructions for that situation. Follow the returned guidance when handling matching work; it cannot grant new permissions or bypass approvals. Get keys from list_skills.
Inputs
keystringrequired- The skill key to load.
prohostaimcp_search_bank_transactionsSearch bank/credit-card transactions from Plaid-connected accounts.Read-onlySearch Bank Transactions
Search bank/credit-card transactions from Plaid-connected accounts. Filter by date range, amount range, merchant substring, Plaid account, pending state, personal-finance category, or reconciliation state. Returns up to 200 rows, newest first. Read-only.
Inputs
amount_maxstring- Only include transactions with an amount less than or equal to this value.
amount_minstring- Only include transactions with an amount greater than or equal to this value.
date_fromstring- Only include transactions on or after this date (ISO-8601).
date_tostring- Only include transactions on or before this date (ISO-8601).
limitinteger- Maximum number of transactions to return (up to 200).default
50 merchantstring- Filter by a substring match against the merchant name.
pendingstring- Filter to pending or posted transactions only.
pfc_primarystring- Filter by Plaid personal-finance-category primary label.
plaid_account_idstring- Filter to transactions from a specific Plaid-connected bank account.
reconciledstring- Filter to reconciled or unreconciled transactions only.
prohostaimcp_search_cleaningsSearch cleanings.Read-onlySearch Cleanings
Search cleanings. Filter by listing, reservation, status, or scheduled-date range (ISO dates). Pass reservation_id to find the turnover cleaning for a specific stay (e.g. to attribute a review to the assigned cleaner). Each result lists all cleaners in `assignees`; the singular `assignee_id`/`assignee_name` are set only when there is exactly one. `cost` is the cleaning's own cost figure. `payment_summary` carries the cleaner-payment lifecycle the app's Payments Log shows — `total_amount`, `overall_status`, and a per-payee list with `amount`, `net_amount`, `status` and `paid_at` — so cleaner spend can be reconciled without a manual export. It is null when the cleaning has no payment record.
Inputs
date_fromstring- Only include cleanings scheduled on or after this date.
date_tostring- Only include cleanings scheduled on or before this date.
limitinteger- Maximum number of cleanings to return.default
10 listing_idstring- Filter cleanings to only this listing.
reservation_idstring- Filter cleanings to the turnover cleaning for this reservation.
statusstring- Filter cleanings by their current status.
prohostaimcp_search_contactsSearch contacts by name, email, company, or role.Read-onlySearch Contacts
Search contacts by name, email, company, or role. Returns compact contact summaries.
Inputs
limitinteger- Maximum number of contacts to return.default
10 querystring- Free-text search across name, email, company, or role.
rolestring- Filter contacts by role.
prohostaimcp_search_conversationsSearch conversations with optional inbox-status filters.Read-onlySearch Conversations
Search conversations with optional inbox-status filters. Each filter is an INDEPENDENT, composable predicate — none of them implies any of the others. Base filters: query (name/guest/message text), listing_id, channel (single) or channels (list, OR logic — takes precedence over channel when both are given; the 'Calls' tab is channels=['voice','sms']). Status filters (each optional, omit to leave unfiltered): needs_response, needs_follow_up, is_starred, is_done (bool equality on the thread flag); follow_up (True = needs_follow_up OR is_starred; False = neither); snoozed (True = currently snoozed, i.e. snoozed_until in the future; False = not currently snoozed); business_purpose (equality, e.g. 'support_messaging_thread' for the Airbnb Support tab). When no status filter is passed the result set is unchanged from the base search (done and snoozed threads are still returned). To reproduce a web inbox tab exactly, COMBINE filters: the 'Follow Up' tab is follow_up=True + is_done=False + snoozed=False (the 'Respond' tab is needs_response=True + is_done=False + snoozed=False); passing follow_up=True alone still returns done or currently snoozed starred/follow-up threads. This mirrors the honest get_dashboard_summary counts, which apply is_done=False + not-snoozed + non-internal internally. Internal team-chat threads track needs_response / needs_follow_up / is_done per-user on ConversationUserMetadata, leaving the thread-level flags false for them. needs_response, needs_follow_up, and follow_up are all channel-aware: they resolve internal threads against THIS credential's own per-user flag (the same rows the app inbox and bulk_update_conversations write), so needs_response=true now matches internal threads flagged for this user just as it matches guest / OTA / account-wide threads on the thread-level column. The needs_response and needs_follow_up fields on a returned internal thread report that per-user value. (is_done is not yet channel-aware here — it still matches only the thread-level flag, which stays false for internal threads.) Pagination: results are capped at 50 per call (sorted by updated_at descending). To enumerate beyond the cap, pass cursor='' (empty string) to start cursor pagination — the response becomes an envelope {items, limit, has_more, next_cursor}; pass the returned next_cursor back to fetch the next page (next_cursor is null on the last page). Cursors are opaque; treat them as such. Threads that receive new activity mid-pagination jump to the top of the sort and may be missed by later pages — re-run from cursor='' for a fresh snapshot. include_total=true adds a 'total' count of ALL threads matching the filters (and switches a cursor-less response to the same envelope shape). Without cursor or include_total the response stays a bare JSON list (backwards compatible). Connected-teams merged visibility: when this credential resolves to a user (OAuth resource owner or the key's created_by) and is not listing-scoped, results fold in the user's participant threads from connected host accounts, minus agent-operational purposes (agent DMs, agent approvals, autopilot clarifications). ProhostAI-Support threads in connected hosts ARE merged, with the support-privacy stack applied: for a customer-side caller each support-employee identity is collapsed to the single branded 'ProhostAI Support' identity (no employee name/email in the participants array), and a support thread's opposite-side internal notes are never searchable. A caller who is themselves on the support team sees real identities (staff keep each other's). A user-less API key (or a listing-scoped key) keeps single-account scope with no fan-out. Every returned item carries account_id (the source/home account of the thread) and account_name so a merged page can be attributed per account. The business_purpose filter is plain equality for every value EXCEPT 'prohost_support', which uses DERIVED membership (stamped business_purpose='prohost_support' OR a seam-routed support conversation that carries a NULL business_purpose column) so canonical seam-routed support threads are matched just as the web ProhostAI-Support tab matches them. Caveat on merged internal threads: like the caller's own internal threads, is_done on a merged team-chat thread is per-user (on ConversationUserMetadata) and the thread-level is_done column stays false, so an is_done filter and the serialized is_done still reflect the thread-level column only — a thread done for this user alone reads as is_done=false here (the honest get_dashboard_summary count excludes it). Merged threads (including support threads) are openable via get_conversation_messages, which applies the same per-side note filtering and identity masking.
Inputs
business_purposestring- Filter by exact business purpose.
channelstring- Filter by a single channel.
channelsstring- Filter by multiple channels using OR logic; takes precedence over channel when both are given.
cursorstring- Opaque pagination cursor.
follow_upstring- Combined follow-up filter: needs_follow_up OR is_starred.
include_totalboolean- Include a total count of all matching threads.default
false is_donestring- Filter on the thread's done flag.
is_starredstring- Filter to starred threads.
limitinteger- Maximum number of conversations to return per page.default
10 listing_idstring- Filter to conversations for a specific listing.
needs_follow_upstring- Filter to threads flagged as needing follow-up.
needs_responsestring- Filter to threads that need a response.
querystring- Free-text search matched against conversation/guest name and message text.
snoozedstring- Filter by current snooze state.
prohostaimcp_search_expensesSearch expenses.Read-onlySearch Expenses
Search expenses. Filter by listing, category, or date range.
Inputs
date_fromstring- Only include expenses on or after this date (ISO-8601).
date_tostring- Only include expenses on or before this date (ISO-8601).
limitinteger- Maximum number of expenses to return.default
10 listing_idstring- Filter to expenses for a specific listing.
prohostaimcp_search_guestsSearch and filter guests by name, email, or listing.Read-onlySearch Guests
Search and filter guests by name, email, or listing. Returns compact guest summaries.
Inputs
limitinteger- Maximum number of guests to return.default
10 listing_idstring- Filter guests to those associated with this listing.
querystring- Free-text search across guest name and email.
prohostaimcp_search_memoriesSearch the property knowledge base.Read-onlySearch Memories
Search the property knowledge base. Returns up to `limit` memories matching the optional natural-language `query` and `scope` / `listing_id` filters.
Inputs
limitinteger- Maximum number of memories to return.default
10 listing_idstring- Optional listing ID filter; restricts results to memories scoped to this listing.
querystring- Optional natural-language search query to match against memory content.
scopestring- Optional scope filter, e.g. listing, all_listings, or listing_group.
prohostaimcp_search_ownersSearch owners/investors.Read-onlySearch Owners
Search owners/investors. Returns owner details, commission info, and assigned listing_ids.
Inputs
limitinteger- Maximum number of owners to return.default
10 searchstring- Search term to filter owners by name, email, or company.
prohostaimcp_search_ramp_transactionsSearch corporate-card transactions from Ramp-connected accounts.Read-onlySearch Ramp Transactions
Search corporate-card transactions from Ramp-connected accounts. Filter by date range, amount range, merchant substring, Ramp card, cardholder name, clearing state, or reconciliation state. Returns up to 200 rows, newest first. Read-only.
Inputs
amount_maxstring- Only include transactions with an amount less than or equal to this value. Defaults to null (no upper bound).
amount_minstring- Only include transactions with an amount greater than or equal to this value. Defaults to null (no lower bound).
card_idstring- Only include transactions on this Ramp card. Defaults to null (no filter).
cardholderstring- Only include transactions by this cardholder name. Defaults to null (no filter).
date_fromstring- Only include transactions on or after this date. Defaults to null (no lower bound).
date_tostring- Only include transactions on or before this date. Defaults to null (no upper bound).
limitinteger- Maximum number of transactions to return, up to 200.default
50 merchantstring- Substring to match against the merchant name. Defaults to null (no filter).
reconciledstring- Only include transactions with this reconciliation state. Defaults to null (no filter).
statestring- Only include transactions in this clearing state. Defaults to null (no filter).
prohostaimcp_search_reservationsSearch and filter reservations.Read-onlySearch Reservations
Search and filter reservations. Returns compact reservation summaries.
Inputs
end_datestring- Only include reservations on or before this date.
limitinteger- Maximum number of reservation summaries to return.default
10 listing_idstring- Restrict results to reservations for this listing.
querystring- Free-text search across reservation fields such as guest name, email, or confirmation code.
start_datestring- Only include reservations on or after this date.
statusstring- Filter reservations by their current status.
prohostaimcp_search_reviewsSearch guest reviews.Read-onlySearch Reviews
Search guest reviews. Filter by listing or star rating.
Inputs
limitinteger- Maximum number of reviews to return.default
10 listing_idstring- Filter reviews to only this listing.
min_starsstring- Only return reviews with at least this star rating.
prohostaimcp_search_tasksSearch tasks.Read-onlySearch Tasks
Search tasks. Filter by status, priority, or listing.
Inputs
categorystring- Filter tasks by category.
limitinteger- Maximum number of tasks to return.default
10 listing_idstring- Filter tasks to a specific listing.
prioritystring- Filter tasks by priority level.
statusstring- Filter tasks by their current status.
prohostaimcp_sheets_getFetch sheet metadata (row_count, schema) by path or id.Read-onlySheets Get
Fetch sheet metadata (row_count, schema) by path or id.
Inputs
path_or_idstringrequired- The path or unique ID of the sheet to fetch metadata for.
prohostaimcp_sheets_listList sheets in the account.Read-onlySheets List
List sheets in the account.
Inputs
limitinteger- Maximum number of sheets to return.default
50
prohostaimcp_sheets_queryFilter rows via a simple {column_id: value} equality DSL (like read_rows without sort).Read-onlySheets Query
Filter rows via a simple {column_id: value} equality DSL (like read_rows without sort).
Inputs
filterobjectrequired- Equality filter as a {column_id: value} map. Only rows matching all key/value pairs are returned.
path_or_idstringrequired- The path or unique ID of the sheet to query.
prohostaimcp_sheets_read_rowsRead rows from a sheet.Read-onlySheets Read Rows
Read rows from a sheet. `filter` is a {column_id: value} equality map; `sort` is a column_id prefixed with '-' for descending.
Inputs
path_or_idstringrequired- The path or unique ID of the sheet to read rows from.
filterstring- Equality filter as a {column_id: value} map. Only rows matching all key/value pairs are returned.
limitinteger- Maximum number of rows to return.default
100 sortstring- Column ID to sort by. Prefix with '-' for descending order.
prohostaimcp_sheets_schemaFetch a sheet's column schema by path or id.Read-onlySheets Schema
Fetch a sheet's column schema by path or id.
Inputs
path_or_idstringrequired- The path or unique ID of the sheet to fetch the column schema for.
prohostaimcp_add_cleaning_checklist_itemAdd a new item to a cleaning checklist.WriteAdd Cleaning Checklist Item
Add a new item to a cleaning checklist.
Inputs
checklist_idstringrequired- The unique identifier of the checklist to add an item to.
cleaning_idstringrequired- The unique identifier of the cleaning job the checklist belongs to.
titlestringrequired- The title of the new checklist item.
orderstring- The sort order for this item within the checklist.
photo_requiredboolean- Whether the cleaner must submit a photo to mark this item complete.default
false reference_photo_urlstring- A reference photo URL showing what this item should look like when done correctly.
prohostaimcp_add_cleaning_commentAdd a comment on a cleaning.WriteAdd Cleaning Comment
Add a comment on a cleaning.
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning job to comment on.
contentstringrequired- The text content of the comment.
prohostaimcp_add_place_tagAttach a listing tag to a place (idempotent).WriteAdd Place Tag
Attach a listing tag to a place (idempotent).
- Idempotent
Inputs
listing_tag_idstringrequired- The unique identifier of the listing tag to attach to the place.
place_idstringrequired- The unique identifier of the place to tag.
prohostaimcp_bulk_create_tasksCreate many tasks in ONE call, each optionally with its own subtasks.WriteBulk Create Tasks
Create many tasks in ONE call, each optionally with its own subtasks. Use this for punch lists — a property walkthrough, an inspection report, a meeting's action items — instead of calling create_task in a loop. Up to 100 tasks per call. Apply shared values (listing_id, priority, category, assignee_ids, due_date) by repeating them on each entry. Entries are independent: a bad entry is reported in `failed` with its index and the rest are still created, so retry only the failed indices — re-sending a created entry makes a duplicate task.
Inputs
tasksarrayrequired- Array of task objects to create in one call, up to 100. Each object accepts the same fields as create_task (title required; description, priority, category, listing_id, assignee_ids, due_date, source optional).
prohostaimcp_community_create_postPost into a community lounge as the acting user's pseudonymous community profile.WriteCommunity Create Post
Post into a community lounge as the acting user's pseudonymous community profile. The body is rendered as plain text — newlines are preserved, markdown is NOT rendered — and is limited to 5000 characters. Joins the lounge first by default (idempotent; set join_first=false to post without joining). The user's credentials must satisfy the lounge's eligibility rule. Rate-limited to 5 posts per minute. Requires the `community:write` scope.
Inputs
bodystringrequired- Plain-text post body. Newlines are preserved, markdown is not rendered. Limited to 5000 characters.
lounge_slugstringrequired- Slug of the community lounge to post into. Use community_list_lounges to find valid slugs.
join_firstboolean- Whether to join the lounge first if not already a member. Idempotent; set to false to post without joining.default
true
prohostaimcp_create_ai_employeeCreate a brand-new custom AI employee (not from a template).WriteCreate AI Employee
Create a brand-new custom AI employee (not from a template). It is created inactive.
Inputs
namestringrequired- The AI employee's name.
system_promptstringrequired- The system prompt defining the AI employee's role and behavior.
goalsstring- A list of goals for the AI employee. Omit or leave null for none.
responsibilitiesstring- A list of responsibilities for the AI employee. Omit or leave null for none.
titlestring- The AI employee's job title. Omit or leave null for no title.
prohostaimcp_create_ai_employee_triggerWire an event trigger to an AI employee.WriteCreate AI Employee Trigger
Wire an event trigger to an AI employee.
Inputs
agent_idstringrequired- The id of the AI employee to wire the trigger to.
trigger_typestringrequired- The type of event that fires this trigger.
cooldown_secondsinteger- Minimum number of seconds between successive firings of this trigger.default
60 descriptionstring- What the trigger is for. This text is injected into the prompt of every run the trigger fires, so on a 'schedule' trigger it is the routine's instructions. Omit or leave null for none.
enabledboolean- Whether the trigger is active immediately after creation.default
true namestring- A display name for the trigger. Omit or leave null for none.
prohostaimcp_create_approval_requestFile an approval request for a proposed action that needs human sign-off — use this BEFORE performing anything risky or irreversible (sending payments, cancelling reservations, bulk changes, external side effects).WriteCreate Approval Request
File an approval request for a proposed action that needs human sign-off — use this BEFORE performing anything risky or irreversible (sending payments, cancelling reservations, bulk changes, external side effects). The request appears on the customer's home page and as an interactive card in their team chat; a team member approves or rejects it there. The decision arrives on your webhook subscription as `agent.approval_requested` → `agent.approval_resolved` events, or poll `get_approval_request`. Requires a paired agent identity (an agent-pairing API key) and the `approvals:write` scope. `proposed_action` is a JSON object describing exactly what you intend to do if approved; keep it complete enough for a human to judge.
Inputs
proposed_actionobjectrequired- A JSON object describing exactly what you intend to do if approved; keep it complete enough for a human to judge.
titlestringrequired- A short human-readable title for the approval request.
action_kindstring- The category of action being proposed.default
external_action descriptionstring- Additional context or justification for the proposed action. Omit or leave null for none.
risk_levelstring- The risk level of the proposed action.default
medium
prohostaimcp_create_cleaningSchedule a new cleaning job for a listing.WriteCreate Cleaning
Schedule a new cleaning job for a listing. Datetimes are ISO-8601.
Inputs
listing_idstringrequired- The unique identifier of the listing to schedule the cleaning for.
scheduled_ends_atstringrequired- The ISO-8601 datetime the cleaning is scheduled to end.
scheduled_starts_atstringrequired- The ISO-8601 datetime the cleaning is scheduled to start.
titlestringrequired- A short title for the cleaning job.
descriptionstring- Free-form notes about the cleaning job.
typestring- The type of cleaning job.default
turnover
prohostaimcp_create_cleaning_checklistCreate a new checklist on a cleaning.WriteCreate Cleaning Checklist
Create a new checklist on a cleaning.
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning job to add a checklist to.
titlestringrequired- The title of the new checklist.
descriptionstring- An optional description for the checklist.
itemsstring- Optional initial list of item objects to create on the checklist.
prohostaimcp_create_contactCreate a new contact record on the account.WriteCreate Contact
Create a new contact record on the account.
Inputs
first_namestringrequired- The contact's first name.
companystring- The contact's company.
emailstring- The contact's email address.
last_namestring- The contact's last name.
notesstring- Free-text notes about the contact.
phonestring- The contact's phone number.
rolestring- The contact's role.
prohostaimcp_create_expense_categoryCreate a new custom expense category for the account.WriteCreate Expense Category
Create a new custom expense category for the account.
Inputs
namestringrequired- The name of the new expense category.
prohostaimcp_create_expense_from_ramp_transactionCreate an expense from a Ramp corporate-card transaction and reconcile the transaction onto it.WriteCreate Expense From Ramp Transaction
Create an expense from a Ramp corporate-card transaction and reconcile the transaction onto it. CONFIRMATION-GATED: call with confirm=false (default) first to get a preview of the proposed expense; only call with confirm=true after the host approves. On confirm it creates the Expense (name, amount, date, category, listing) and sets the transaction's expense_id. The created expense carries the category + listing the accounting-push tool needs.
Inputs
transaction_idstringrequired- The unique identifier of the Ramp corporate-card transaction to create an expense from.
category_idstring- The expense category ID to assign to the created expense.
confirmboolean- Set to true to actually create the expense; when false (default), returns a preview of the proposed expense without creating it.default
false listing_idstring- The listing ID to associate with the created expense.
namestring- Name/description for the created expense.
prohostaimcp_create_expense_from_transactionCreate an expense from a Plaid bank transaction and reconcile the transaction onto it.WriteCreate Expense From Transaction
Create an expense from a Plaid bank transaction and reconcile the transaction onto it. CONFIRMATION-GATED: call with confirm=false (default) first to get a preview of the proposed expense; only call with confirm=true after the host approves. On confirm it creates the Expense (name, amount, date, category, listing) and sets the transaction's expense_id. The created expense carries the category + listing the accounting-push tool needs.
Inputs
transaction_idstringrequired- The unique identifier of the Plaid bank transaction to create the expense from.
category_idstring- The expense category id to assign. Defaults to null; use classify_bank_transaction to get a suggested category_id.
confirmboolean- Set to true to actually create the expense. Defaults to false, which returns a preview only.default
false listing_idstring- The listing id to associate with the created expense. Defaults to null.
namestring- The name to give the created expense. Defaults to null.
prohostaimcp_create_guestCreate a new guest record on the account.WriteCreate Guest
Create a new guest record on the account.
Inputs
first_namestringrequired- The guest's first name.
addressstring- The guest's street address.
citystring- The guest's city.
countrystring- The guest's country.
emailstring- The guest's email address.
last_namestring- The guest's last name.
notesstring- Free-text notes about the guest.
phonestring- The guest's phone number.
photo_urlstring- URL of the guest's photo.
postal_codestring- The guest's postal code.
tagsstring- Tags to associate with the guest.
prohostaimcp_create_guidebookCreate a new guidebook attached to a listing.WriteCreate Guidebook
Create a new guidebook attached to a listing. Does NOT seed default sections.
Inputs
listing_idstringrequired- The unique identifier of the listing to attach the guidebook to.
titlestringrequired- The title of the guidebook.
default_languagestring- The default language locale for the guidebook.default
en-US descriptionstring- An optional description of the guidebook.
prohostaimcp_create_guidebook_sectionCreate a guidebook-scoped section.WriteCreate Guidebook Section
Create a guidebook-scoped section.
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook to add the section to.
section_typestringrequired- The type of section.
titlestringrequired- The title of the section.
contentstring- The body content of the section.default
iconstring- An icon identifier for the section. Omit or leave null for no icon.
parent_idstring- The unique identifier of a parent section, to nest this section under it. Omit or leave null for a top-level section.
positionstring- The sort position of the section among its siblings. Omit or leave null to append at the end.
unlock_before_checkinstring- Number of hours before check-in that this section unlocks for the guest. Omit or leave null to have no lock.
prohostaimcp_create_listingCreate a new manual property listing.WriteCreate Listing
Create a new manual property listing. Thin wrapper over the REST POST /v1/listings endpoint. Supports manual listings only — OTA-backed listings must be created via OTA connection sync.
Inputs
titlestringrequired- The title of the listing.
addressstring- The street address of the listing.
citystring- The city the listing is located in.
countrystring- The country the listing is located in.
currencystring- The currency code used for the listing's pricing.
descriptionstring- A description of the listing.
internal_titlestring- An internal-only title for the listing, not shown to guests.
latstring- The latitude coordinate of the listing.
lngstring- The longitude coordinate of the listing.
max_guestsstring- The maximum number of guests the listing accommodates.
num_bathroomsstring- The number of bathrooms.
num_bedroomsstring- The number of bedrooms.
num_bedsstring- The number of beds.
postal_codestring- The postal/ZIP code of the listing.
timezonestring- The IANA timezone for the listing.
prohostaimcp_create_listing_tagCreate a new listing tag on the account.WriteCreate Listing Tag
Create a new listing tag on the account.
Inputs
namestringrequired- The name of the new tag.
tag_typestringrequired- The type of tag to create.
colorstring- Optional color for the tag.
custom_fieldsstring- Optional custom field key/value pairs to store on the tag.
iconstring- Optional icon identifier for the tag.
prohostaimcp_create_memoryCreate a new memory in the property knowledge base.WriteCreate Memory
Create a new memory in the property knowledge base. `scope` is one of `listing` (requires `listing_id`), `all_listings`, or `listing_group` (requires `listing_tag_id`). Keys bound to an AI employee always create INTERNAL memories — `is_internal` is forced true so the memory can inform a guest-facing reply but is never quoted to a guest verbatim.
Inputs
contentstringrequired- The memory's text content.
scopestringrequired- One of listing (requires listing_id), all_listings, or listing_group (requires listing_tag_id).
is_internalboolean- Whether this memory is internal-only (never quoted to a guest verbatim). Forced true for keys bound to an AI employee.default
false listing_idstring- Required when scope is listing; the ID of the listing this memory applies to.
listing_tag_idstring- Required when scope is listing_group; the ID of the listing tag/group this memory applies to.
prohostaimcp_create_message_templateCreate a message template.WriteCreate Message Template
Create a message template. ``type`` is one of ``booking_confirmed``, ``check_in``, ``checkout``, ``recurring_weekly``. ``time_offset_minutes`` is signed: NEGATIVE fires BEFORE the event (e.g. -60 = one hour before check-in), positive after, 0 at the event. For ``check_in`` / ``checkout`` templates, a reservation booked AFTER the computed send time is silently skipped unless ``send_if_past_due=True``. Set ``apply_to_existing_reservations=True`` to also schedule messages for already-existing reservations with future events (otherwise the template only applies to reservations booked from now on).
Inputs
messagestringrequired- Message body to send. Use placeholders such as {guest_first_name} — see list_conversation_message_variables for the full list of valid placeholders.
titlestringrequired- Internal title for the message template (not shown to guests).
typestringrequired- Template trigger type. One of booking_confirmed, check_in, checkout, or recurring_weekly.
apply_to_existing_reservationsboolean- If true, also schedule messages for already-existing reservations with future events. If false, the template only applies to reservations booked from now on.default
false day_of_weekstring- For recurring_weekly templates, the day of week to send on.
is_enabledboolean- Whether the template is active and will schedule messages.default
true listing_idsstring- Listing IDs this template applies to. Omit or leave null to apply to all listings.
max_nightsstring- Only apply this template to reservations with at most this many nights.
min_nightsstring- Only apply this template to reservations with at least this many nights.
past_due_delay_minutesinteger- Minutes to delay a past-due send when send_if_past_due is true.default
0 send_if_past_dueboolean- For check_in / checkout templates, if true the message still sends even when the reservation was booked after the computed send time (otherwise it is silently skipped).default
false time_of_daystring- For recurring_weekly templates, the time of day to send at (24-hour HH:MM).
time_offset_minutesstring- Minutes relative to the check-in/checkout event when the message should send. Negative fires before the event (e.g. -60 = one hour before), positive fires after, 0 fires at the event.
prohostaimcp_create_ownerCreate a new property owner on the account.WriteCreate Owner
Create a new property owner on the account. Optionally pass ``listing_ids`` to assign existing listings to the new owner in the same call.
Inputs
emailstringrequired- Email address of the property owner.
namestringrequired- Full name of the property owner.
address_line1string- First line of the owner's mailing address.
address_line2string- Second line of the owner's mailing address (apartment, suite, etc.).
citystring- City of the owner's mailing address.
commission_ratestring- Commission rate charged to this owner.
commission_typestring- How the commission is calculated (e.g. percentage or flat_fee).
company_namestring- Company name associated with the property owner, if applicable.
countrystring- Country of the owner's mailing address.
listing_idsstring- Existing listing IDs to assign to the new owner.
notesstring- Free-form internal notes about the owner.
phonestring- Phone number of the property owner.
postal_codestring- Postal or ZIP code of the owner's mailing address.
state_provincestring- State or province of the owner's mailing address.
tax_idstring- Tax identification number (e.g. SSN or EIN) for the owner.
prohostaimcp_create_owner_statementCreate a new owner statement covering ``[from_date, to_date]``.WriteCreate Owner Statement
Create a new owner statement covering ``[from_date, to_date]``.
Inputs
from_datestringrequired- Start date of the statement period (ISO 8601).
owner_idstringrequired- The unique identifier of the owner this statement is for.
titlestringrequired- Title of the owner statement.
to_datestringrequired- End date of the statement period (ISO 8601).
invoice_numberstring- Invoice number to associate with the statement.
logostring- URL or reference to a logo image to display on the statement.
notesstring- Free-form notes to include on the statement.
property_manager_addressstring- Property manager's mailing address to display on the statement.
property_manager_emailstring- Property manager's email to display on the statement.
property_manager_namestring- Property manager's name to display on the statement.
property_manager_phonestring- Property manager's phone number to display on the statement.
property_manager_tax_numberstring- Property manager's tax identification number to display on the statement.
property_owner_addressstring- Property owner's mailing address to display on the statement.
property_owner_emailstring- Property owner's email to display on the statement.
property_owner_namestring- Property owner's name to display on the statement.
property_owner_phonestring- Property owner's phone number to display on the statement.
property_owner_tax_numberstring- Property owner's tax identification number to display on the statement.
rental_activity_display_typestring- How rental activity line items are displayed on the statement.
statusstring- Status of the statement (e.g. draft, sent, paid).
prohostaimcp_create_placeCreate a new place on the account.WriteCreate Place
Create a new place on the account.
Inputs
namestringrequired- The name of the place.
addressstring- The street address of the place.
descriptionstring- A free-text description of the place.
google_place_idstring- The associated Google Place ID, if this place was created from a Google Places lookup.
latitudestring- The latitude coordinate of the place.
listing_tag_idsstring- List of listing tag IDs to attach to the place upon creation.
longitudestring- The longitude coordinate of the place.
phonestring- The place's contact phone number.
photo_urlstring- URL of a photo representing the place.
website_urlstring- The place's website URL.
prohostaimcp_create_saved_replyCreate a saved reply (canned message).WriteCreate Saved Reply
Create a saved reply (canned message).
Inputs
messagestringrequired- Message body inserted when this saved reply is used.
titlestringrequired- Title of the saved reply, shown in the saved-reply picker.
categorystring- Category to group this saved reply under.
shortcutstring- Text shortcut that expands to this saved reply.
prohostaimcp_create_tag_sectionCreate a tag-scoped section.WriteCreate Tag Section
Create a tag-scoped section. Account-wide mutation.
Inputs
listing_tag_idstringrequired- The unique identifier of the listing tag to attach the section to.
titlestringrequired- The title of the section.
contentstring- The body content of the section.default
iconstring- An icon identifier for the section. Omit or leave null for no icon.
parent_idstring- The unique identifier of a parent section, to nest this section under it. Omit or leave null for a top-level section.
positionstring- The sort position of the section among its siblings. Omit or leave null to append at the end.
section_typestring- The type of section.default
text
prohostaimcp_create_taskCreate a new task.WriteCreate Task
Create a new task.
Inputs
titlestringrequired- The title of the task.
assignee_idsstring- User IDs to assign this task to.
categorystring- Category to classify the task under.
descriptionstring- Detailed description of the task.
due_datestring- ISO 8601 due date for the task.
listing_idstring- The listing this task relates to.
prioritystring- Priority level for the task.
sourcestring- Where this task originated from. One of review, message, or manual.
prohostaimcp_create_task_checklistCreate a checklist on a task.WriteCreate Task Checklist
Create a checklist on a task.
Inputs
task_idstringrequired- The unique identifier of the task to add the checklist to.
titlestringrequired- Title of the checklist.
descriptionstring- Optional description of the checklist.
itemsstring- Initial checklist items to create along with the checklist.
prohostaimcp_create_task_checklist_from_templateInstantiate a task checklist from a template.WriteCreate Task Checklist From Template
Instantiate a task checklist from a template.
Inputs
task_idstringrequired- The unique identifier of the task to add the checklist to.
template_idstringrequired- The unique identifier of the checklist template to instantiate.
prohostaimcp_create_upgrade_optionCreate a paid upgrade option attached to a guidebook.WriteCreate Upgrade Option
Create a paid upgrade option attached to a guidebook.
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook to attach this upgrade option to.
titlestringrequired- The title of the upgrade option.
descriptionstring- A description of the upgrade option.
enabledboolean- Whether the upgrade option is enabled and visible to guests.default
true pricenumber- The price of the upgrade option.default
0 upgrade_typestring- The type/scope of the upgrade option.default
reservation_wide
prohostaimcp_create_webhook_subscriptionCreate a webhook subscription.WriteCreate Webhook Subscription
Create a webhook subscription. The signing secret is returned ONCE in the response — store it securely. URL must be HTTPS. See the REST /v1/webhooks/events endpoint for the list of supported event types.
Inputs
eventsarrayrequired- The list of event types to subscribe to. See the REST /v1/webhooks/events endpoint for supported event types.
urlstringrequired- The HTTPS endpoint that will receive webhook event payloads.
descriptionstring- An optional description to help identify this webhook subscription.
prohostaimcp_create_workflowPropose a NEW automation workflow.WriteCreate Workflow
Propose a NEW automation workflow. A workflow runs a fixed sequence of steps whenever its trigger fires. Because it keeps running on every future trigger, creation ALWAYS requires human approval: this validates the definition and files an approval card, returning status='pending_approval' with the approval id. The workflow is created only when a human approves the card — it is never created inline. Each step is {order, instruction, tool_name?, skill_key?, delay_seconds?}.
Inputs
namestringrequired- The name of the new workflow.
stepsarrayrequired- The ordered list of steps the workflow runs when triggered.
trigger_typestringrequired- The type of trigger that starts this workflow.
descriptionstring- An optional description of what the workflow does.
enabledboolean- Whether the workflow should be enabled immediately after approval.default
true listing_idsstring- Listing IDs to scope this workflow to.
trigger_configstring- Configuration object for the trigger, depending on trigger_type.
prohostaimcp_crm_add_commentAdd a comment/note to a CRM object (opportunity, contact, company, or meeting).WriteCrm Add Comment
Add a comment/note to a CRM object (opportunity, contact, company, or meeting).
Inputs
bodystringrequired- The text content of the comment or note.
object_idstringrequired- The unique identifier of the CRM object to attach the comment to.
object_typestringrequired- The type of CRM object to attach the comment to (e.g. opportunity, contact, company, or meeting).
prohostaimcp_crm_create_companyCreate a CRM company (an organization).WriteCrm Create Company
Create a CRM company (an organization).
Inputs
namestringrequired- The name of the company to create.
domainstring- The company's website domain, if known.
prohostaimcp_crm_create_contactCreate a CRM contact (a person).WriteCrm Create Contact
Create a CRM contact (a person).
Inputs
namestringrequired- The name of the contact.
company_idstring- The company to associate with this contact.
emailstring- The email address of the contact.
phonestring- The phone number of the contact.
titlestring- The job title of the contact.
prohostaimcp_crm_create_field_definitionDefine a new CRM custom field (e.g.WriteCrm Create Field Definition
Define a new CRM custom field (e.g. a 'number' field on opportunities). Define the field once, then set per-object values with crm_set_custom_field.
Inputs
field_typestringrequired- The data type of the field (e.g. text, number, boolean, date, or select).
keystringrequired- The unique key used to reference this custom field programmatically.
labelstringrequired- The human-readable label shown for this field in the CRM UI.
object_typestringrequired- The type of CRM object this field applies to (e.g. opportunity, contact, or company).
default_valuestring- The default value to use for this field when none is set.
optionsstring- The list of selectable values for a 'select' type field. Not needed for other field types.
pipeline_idstring- Restrict this field definition to a specific pipeline, if applicable.
requiredboolean- Whether this custom field must be filled in when creating or editing the CRM object.default
false
prohostaimcp_crm_create_followupCreate a follow-up task tied to a CRM opportunity.WriteCrm Create Followup
Create a follow-up task tied to a CRM opportunity.
Inputs
opportunity_idstringrequired- The unique identifier of the opportunity this follow-up task is tied to.
titlestringrequired- The title of the follow-up task.
assignee_idstring- The unique identifier of the user to assign this follow-up task to. Defaults to the current user if omitted.
descriptionstring- Additional details or notes about the follow-up task.
due_datestring- The due date for the follow-up task, in ISO 8601 format.
prohostaimcp_crm_create_opportunityCreate a CRM opportunity (a deal card) on a pipeline.WriteCrm Create Opportunity
Create a CRM opportunity (a deal card) on a pipeline.
Inputs
pipeline_idstringrequired- The pipeline to create the opportunity on.
titlestringrequired- The title of the opportunity.
company_idstring- The company to associate with this opportunity.
primary_contact_idstring- The primary contact to associate with this opportunity.
stage_idstring- The pipeline stage to place the opportunity in. Defaults to the pipeline's first stage.
value_amountstring- The monetary value of the opportunity.
value_currencystring- The currency of the opportunity's value.
prohostaimcp_crm_log_meetingLog (or book) a CRM meeting / call against a deal, contact, or company.WriteCrm Log Meeting
Log (or book) a CRM meeting / call against a deal, contact, or company.
Inputs
titlestringrequired- The title of the meeting or call being logged.
company_idstring- The unique identifier of the company to associate with this meeting, if any.
contact_idstring- The unique identifier of the contact to associate with this meeting, if any.
opportunity_idstring- The unique identifier of the opportunity to associate with this meeting, if any.
outcomestring- The outcome or result of the meeting or call.
summarystring- A summary of what was discussed during the meeting.
prohostaimcp_docs_append_sectionAppend a new heading-titled section to a doc.WriteDocs Append Section
Append a new heading-titled section to a doc.
Inputs
body_mdstringrequired- The Markdown content of the new section body.
headingstringrequired- The heading title for the new section.
path_or_idstringrequired- The path or unique identifier of the Drive document to append the new section to.
prohostaimcp_drive_createCreate a Drive item (folder/doc/sheet).WriteDrive Create
Create a Drive item (folder/doc/sheet). `parent_path` is the parent folder path (use '' for root). `kind` is one of folder, doc, sheet.
Inputs
kindstringrequired- The kind of Drive item to create. One of: folder, doc, sheet.
namestringrequired- The name of the new Drive item.
parent_pathstring- The parent folder path. Use '' for the root folder.default
prohostaimcp_hire_ai_employeeHire (activate) one of the pre-built template AI employees — a launch-lineup template (pre-seeded inert on the account) or a catalog-only template (created and activated on first hire).WriteHire AI Employee
Hire (activate) one of the pre-built template AI employees — a launch-lineup template (pre-seeded inert on the account) or a catalog-only template (created and activated on first hire).
Inputs
template_keystringrequired- The key of the template AI employee to hire.
heartbeat_interval_secondsstring- How often, in seconds, the hired employee should run proactive heartbeat checks. Omit or leave null to use the default.
prohostaimcp_leave_internal_noteLeave a team-only internal note on a conversation.WriteLeave Internal Note
Leave a team-only internal note on a conversation. Notes appear in the conversation timeline with an 'Internal note' badge and are NEVER delivered to the guest — this works on any channel (guest OTA/email threads included), unlike send_message. Works on conversations in your account and on connected-teams merged threads in your inbox scope (the note is posted to the connected team's account so its members see it). On a ProhostAI-Support thread a note is SIDE-PRIVATE — it reaches only one side of the support bridge — so a note on another account's support thread is written only for a first-party support credential (posted as the ProhostAI Support voice, support-side); any other credential gets support_note_side_not_supported rather than a note on the wrong side. Supports <@user_id> mentions. severity: 'act' always pushes, 'inform' is an FYI, 'log' (default) notifies nobody.
Inputs
conversation_idstringrequired- The unique identifier of the conversation to leave the internal note on.
messagestringrequired- The internal note text to post to the conversation timeline.
severitystring- The urgency of the note: 'act' always pushes a notification, 'inform' is an FYI, 'log' (default) notifies nobody.default
log source_namestring- Optional label identifying the source or system posting the note, shown alongside the note in the timeline.
prohostaimcp_message_ai_employeeSend a message to one of the account's AI employees in your 1:1 DM thread and dispatch them to work on it.WriteMessage AI Employee
Send a message to one of the account's AI employees in your 1:1 DM thread and dispatch them to work on it. `agent` is the employee's id or handle (list them with the AI-employee tools). The reply is ASYNCHRONOUS — the employee posts it back into the same DM, typically within seconds to a few minutes; poll `get_ai_employee_replies` (pass the returned `sent_at` as `since`) or subscribe to the `message.team_chat` webhook event. `run_id` is null when a dispatch guard (credit budget, billing gate, agent-chain depth, in-flight dedup) suppressed the run — the message still lands in the thread. Requires the `agents:converse` scope.
Inputs
agentstringrequired- The AI employee's id or handle to message.
messagestringrequired- The message text to send to the AI employee in your 1:1 DM thread.
prohostaimcp_pin_place_to_guidebookPin a place to a guidebook (guidebook-scoped pin).WritePin Place To Guidebook
Pin a place to a guidebook (guidebook-scoped pin).
Inputs
categorystringrequired- The category to file this pin under (e.g. restaurants, activities).
guidebook_idstringrequired- The unique identifier of the guidebook to pin the place to.
place_idstringrequired- The unique identifier of the place to pin.
host_note_overridestring- Optional host note that overrides the place's default note for this pin.
positionstring- Optional sort position for the pin within its category. Leave unset to append at the end.
prohostaimcp_pin_place_to_tagPin a place to a listing tag (tag-scoped pin).WritePin Place To Tag
Pin a place to a listing tag (tag-scoped pin). Account-wide mutation.
Inputs
categorystringrequired- The category to file this pin under (e.g. restaurants, activities).
listing_tag_idstringrequired- The unique identifier of the listing tag to pin the place to.
place_idstringrequired- The unique identifier of the place to pin.
host_note_overridestring- Optional host note that overrides the place's default note for this pin.
positionstring- Optional sort position for the pin within its category. Leave unset to append at the end.
prohostaimcp_publish_review_replyPublish a previously-generated AI-authored review reply (an 'auto-review') to the upstream OTA.WritePublish Review Reply
Publish a previously-generated AI-authored review reply (an 'auto-review') to the upstream OTA. `review_id` is the auto-review's UUID — not a guest review ID. The auto-review must be in `scheduled` state; a review without a pre-generated auto-review row cannot be published here.
Inputs
review_idstringrequired- The unique identifier of the auto-review (AI-generated draft reply) to publish. This is the auto-review's UUID, not a guest review ID.
prohostaimcp_publish_suggestionSend the suggestion text (or its edited override) as a host message on the conversation.WritePublish Suggestion
Send the suggestion text (or its edited override) as a host message on the conversation. Subject to the same channel/tier paywall as `send_message`.
Inputs
conversation_idstringrequired- The unique identifier of the conversation the suggestion belongs to.
suggestion_idstringrequired- The unique identifier of the AI suggestion draft to publish as a message.
prohostaimcp_report_cleaning_issueReport a new issue on a cleaning.WriteReport Cleaning Issue
Report a new issue on a cleaning.
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning to report an issue on.
titlestringrequired- The title of the issue.
prohostaimcp_schedule_messageSchedule a host message to be sent at a future time.WriteSchedule Message
Schedule a host message to be sent at a future time. Arguments: ``conversation_id``, ``reservation_id``, ``listing_id``, ``message``, ``scheduled_at`` (ISO 8601, must be in the future), and optional ``channel``. The scheduled message is tagged ``source=mcp`` so downstream analytics and the send pipeline can distinguish MCP-origin sends. Channel rules — internal: all tiers; OTA: Pro only; the host's own SMS/WhatsApp/Gmail conversations CAN be scheduled on, with the same credential the live send requires (an OAuth credential whose user has inbox write, or an API key granted the conversations:write_guest_external scope). Pass ``channel`` (one of whatsapp, sms, email, ota) to pin the delivery channel — on an OTA thread these select that OTA's sub-channels, and on the host's own threads they select ProhostAI's own senders. The send falls back to the conversation's default routing if the channel cannot carry the message at send time. Omit it for default routing. Only conversations in your own account are supported — a connected-teams merged thread returns cross_account_not_supported (switch into that team's workspace to schedule). Idempotent on MCP request id — a retried call returns the cached response.
- Idempotent
Inputs
conversation_idstringrequired- The conversation to schedule the message in.
listing_idstringrequired- The listing the scheduled message relates to.
messagestringrequired- The message body to send at the scheduled time.
reservation_idstringrequired- The reservation the scheduled message relates to.
scheduled_atstringrequired- ISO 8601 timestamp when the message should be sent (must be in the future).
channelstring- Optional delivery channel to pin the send to.
prohostaimcp_send_messageSend a message in a conversation through the real delivery pipeline.WriteSend Message
Send a message in a conversation through the real delivery pipeline. Works on conversations in your account and on connected-teams merged threads in your inbox scope — internal team chat AND guest channels — whenever you are a participant of the thread via an active team connection. On a merged thread the gates evaluate against the account that OWNS the thread, not yours: the OTA Pro gate reads the host's tier (a non-Pro host returns that host's upgrade_required), the message persists in the host's account attributed to you, and an approval routes to the host's team. The host's own SMS/WhatsApp/Gmail senders stay reachable only with the conversations:write_guest_external scope when the thread is not yours. A ProhostAI-Support thread you participate in is sendable as the internal support bridge, and your reply carries the branded 'ProhostAI Support' identity for the customer side, never your name; a support thread replying on a guest channel returns cross_account_not_supported. Tier gates — internal channel: all tiers; OTA channel: Pro only. The host's own SMS/WhatsApp/Gmail channels are sendable (no tier gate) when you authenticate with OAuth as a user holding inbox write access, or with an API key granted the conversations:write_guest_external scope; otherwise they return channel_not_api_sendable. Returns the persisted message id plus the final send status ('sent' if delivery completed synchronously, 'pending' if queued). On the internal team-chat channel this also wakes the AI employees the message addressed, exactly as an in-app send does: a 1:1 thread with an employee always wakes that employee, and <@user_id> mentions wake each mentioned employee in any internal thread. ``run_id`` is the dispatched run (``run_ids`` lists them all when a mention fan-out woke several), and is null when nobody was addressed or a dispatch guard (credit budget, billing gate, agent-chain depth, in-flight dedup) suppressed the run — the message is still delivered either way. The employee's reply arrives asynchronously in the same thread; poll get_conversation_messages for it. An un-mentioned employee in a GROUP thread is not woken from this surface. ``dispatch_error`` appears only if the enqueue itself failed, in which case send a fresh message rather than retrying this one.
Inputs
conversation_idstringrequired- The conversation to send the message in.
messagestringrequired- The message body to send.
prohostaimcp_sheets_insert_rowsBulk-insert rows into a sheet.WriteSheets Insert Rows
Bulk-insert rows into a sheet.
Inputs
path_or_idstringrequired- The path or unique ID of the sheet to insert rows into.
rowsarrayrequired- Array of row objects to insert, each a {column_id: value} map.
prohostaimcp_submit_feedbackSubmit a bug report, feature request, or question to the ProhostAI team.WriteSubmit Feedback
Submit a bug report, feature request, or question to the ProhostAI team. Valid types: bug_report, feature_request, question.
Inputs
descriptionstringrequired- A detailed description of the bug, feature request, or question.
titlestringrequired- A short summary title for the feedback.
typestringrequired- The type of feedback being submitted. One of: bug_report, feature_request, question.
attachmentsstring- Optional list of attachments (e.g. screenshots or log excerpts) to include with the feedback.
steps_to_reproducestring- Step-by-step instructions to reproduce the issue, if reporting a bug.
prohostaimcp_upload_cleaning_attachmentRegister one or more attachment URLs on a cleaning.WriteUpload Cleaning Attachment
Register one or more attachment URLs on a cleaning. Clients upload to S3 first via the in-app presigned URLs, then pass the resulting URLs here.
Inputs
attachment_urlsarrayrequired- The already-uploaded attachment URLs to register on the cleaning.
cleaning_idstringrequired- The unique identifier of the cleaning to attach files to.
prohostaimcp_upload_contact_photoGenerate a presigned S3 PUT URL for a contact's photo.WriteUpload Contact Photo
Generate a presigned S3 PUT URL for a contact's photo. The client should upload the bytes to the returned `presigned_url`. Allowed content types: `image/jpeg`, `image/png`.
Inputs
contact_idstringrequired- The unique identifier of the contact to upload a photo for.
content_typestringrequired- The MIME content type of the photo being uploaded. Allowed values: image/jpeg, image/png.
prohostaimcp_upload_guidebook_imageReturn a presigned PUT URL for uploading a guidebook image to S3.WriteUpload Guidebook Image
Return a presigned PUT URL for uploading a guidebook image to S3. After PUT, embed the public S3 URL (presigned URL minus query string) in a section's markdown content.
Inputs
content_typestringrequired- The MIME content type of the image being uploaded.
guidebook_idstringrequired- The unique identifier of the guidebook to upload an image for.
prohostaimcp_upload_place_photoReturn a presigned PUT URL for uploading a place photo to S3.WriteUpload Place Photo
Return a presigned PUT URL for uploading a place photo to S3. After PUT, call update_place with photo_url=<public S3 URL>.
Inputs
content_typestringrequired- The MIME type of the photo file to upload (e.g. image/jpeg).
place_idstringrequired- The unique identifier of the place to upload a photo for.
prohostaimcp_add_pricing_overrideUpsert a single date-specific price override on PriceLabs.DestructiveAdd Pricing Override
Upsert a single date-specific price override on PriceLabs. ``date`` is an ISO date; ``price`` and ``min_stay`` are optional (at least one should be supplied). ``reason`` is short free-form context — the reason recorded in PriceLabs is built deterministically as '<price> — requested by host via ProhostAI (<reason>)' so the PL UI always shows the applied price and attribution. Returns a structured ``pricelabs_not_authoritative`` error (mirroring the REST 409) when PriceLabs is not the authoritative price writer for this listing — map the listing to PriceLabs first (it becomes authoritative once linked).
- Idempotent
Inputs
datestringrequired- The ISO date (YYYY-MM-DD) to set a price override for.
listing_idstringrequired- The unique identifier of the listing to add a price override for.
currencystring- The currency code for the override price.
min_staystring- The minimum stay (in nights) required for this date. Optional if price is supplied.
pricestring- The nightly price to set for this date. Optional if min_stay is supplied.
reasonstring- Short free-form context for the override, recorded in PriceLabs for attribution.
prohostaimcp_approve_approval_requestApprove a pending approval request that an external agent filed, on behalf of the account owner/admin you are authenticated as.DestructiveApprove Approval Request
Approve a pending approval request that an external agent filed, on behalf of the account owner/admin you are authenticated as. Only requests with `source: external` can be decided here — the agent then performs its own action and the decision reaches it on the `agent.approval_resolved` webhook. Requests filed by in-app AI employees or by autopilot (a drafted guest reply) are refused with `not_externally_decidable`: approving one sends a message or spends money in-app, so it must be decided in the ProhostAI app where the card is rendered. Requires the `approvals:decide` scope, which an AI-employee credential can never hold — an agent may not approve its own asks. Read the request with `get_approval_request` first; approving is not reversible.
Inputs
approval_idstringrequired- The id of the approval request to approve.
prohostaimcp_ask_ai_questionAsk ProhostAI's Ask AI assistant a question about this account (properties, reservations, guests, operations) and get its answer.DestructiveAsk AI Question
Ask ProhostAI's Ask AI assistant a question about this account (properties, reservations, guests, operations) and get its answer. Pass `session_id` from a previous call to continue the same conversation with context; omit it to start a new chat session. Turns are credit-metered against the account's AI subscription/credits and can take a while on tool-heavy questions. Requires the `ai_chat:write` scope.
Inputs
questionstringrequired- The question to ask the Ask AI assistant.
session_idstring- Session id from a previous call to continue that conversation. Omit to start a new chat session.
prohostaimcp_assign_cleaningAssign or unassign the primary cleaner on a cleaning.DestructiveAssign Cleaning
Assign or unassign the primary cleaner on a cleaning. Pass ``cleaner_id=null`` (omit the argument) to unassign.
- Idempotent
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning to assign a cleaner to.
cleaner_idstring- The unique identifier of the cleaner to assign as primary. Omit or pass null to unassign.
prohostaimcp_assign_conversationSet who owns one or more conversations.DestructiveAssign Conversation
Set who owns one or more conversations. Full-array replace: the ids you pass BECOME the assignee list, so pass the complete set (an empty list unassigns everyone). Assignees must be members of the conversation's own account — AI employees included, since assigning a thread to an AI employee is how you hand it work. Re-sending the same array is a no-op that notifies nobody. Account-wide: listing-scoped API keys are rejected. A conversation that does not exist on the account, or whose account has not enabled assignment, is reported under `failed` / `skipped` rather than failing the whole call.
- Idempotent
Inputs
assignee_user_idsarrayrequired- The complete list of user IDs (or AI employee IDs) that should own the conversation. This replaces the existing assignee list entirely; pass an empty list to unassign everyone.
conversation_idsarrayrequired- The conversations to set the assignee list on.
prohostaimcp_block_datesBlock (mark unavailable) a list of dates on a listing's calendar.DestructiveBlock Dates
Block (mark unavailable) a list of dates on a listing's calendar. Sugar over `update_calendar_days` with `available=false` — dispatched asynchronously via the listing's OTA.
- Idempotent
Inputs
datesarrayrequired- The dates to block on the listing's calendar.
listing_idstringrequired- The unique identifier of the listing to block dates on.
prohostaimcp_bulk_delete_expensesDelete multiple expenses by ID.DestructiveBulk Delete Expenses
Delete multiple expenses by ID. Max 100 IDs; missing/foreign IDs appear in `failed`.
Inputs
expense_idsarrayrequired- The expenses to delete (max 100).
prohostaimcp_bulk_update_conversationsApply the same patch (e.g.DestructiveBulk Update Conversations
Apply the same patch (e.g. ``{"ai_muted": true}``) to many conversations. Account-wide — listing-scoped API keys are rejected. Works on conversations in your account and on connected-teams merged threads in your inbox scope — ProhostAI-Support threads you participate in included — but for a merged (cross-account) thread only PER-USER fields land — thread-level flags (is_done, is_spam, is_starred, autopilot_disabled, and needs_response) are reported under ``skipped`` with reason ``cross_account_thread_level_flag_not_supported`` so a partner team's inbox state is never mutated. ``ai_muted`` is the exception and DOES land on a merged thread, matching the web app and the pause_ai / resume_ai tools, which have always written it there; on another account's ProhostAI-Support thread it is skipped with reason ``cross_account_support_thread_flag_not_supported``, because that bridge is two-sided and muting the AI would change the other side's thread. A merged ProhostAI-Support thread otherwise follows the same rule: mark-read and needs_follow_up land (both per-user), while is_done is skipped — the web tracks done-ness per user on an internal thread (plus a support-side group-done), which this bulk path does not implement, so writing the shared thread flag here would mark the customer's thread done. Use the web support inbox to resolve a support thread. ``needs_response`` goes through the shared guarded mutation: internal team-chat conversations (which track needs_response per user) and conversations with a newer needs_response update are reported under ``skipped`` instead of patched. ``needs_follow_up`` is likewise guarded, but internal team chats are patched rather than skipped — the flag lands on the acting user's per-user row (their Follow Up tab); only a conversation carrying a newer follow-up update is reported under ``skipped``.
Inputs
conversation_idsarrayrequired- List of conversation IDs to apply the patch to.
patchobjectrequired- Fields to patch on each conversation, e.g. {"ai_muted": true}. Supported keys include ai_muted, is_done, is_spam, is_starred, autopilot_disabled, needs_response, and needs_follow_up — see the tool description for per-field behavior on merged and cross-account threads.
prohostaimcp_bulk_update_expensesUpdate a common set of fields across multiple expenses in one call.DestructiveBulk Update Expenses
Update a common set of fields across multiple expenses in one call. `updates` is the same shape as `update_expense` (minus `expense_id`). Expenses not owned by the account appear in `failed`. Max 100 IDs.
Inputs
expense_idsarrayrequired- The expenses to update (max 100).
updatesobjectrequired- Fields to apply to every expense, using the same shape as update_expense minus expense_id.
prohostaimcp_cancel_scheduled_messageCancel a scheduled message that has not yet been sent.DestructiveCancel Scheduled Message
Cancel a scheduled message that has not yet been sent. Returns an error if the message is already sent / failed / cancelled. Idempotent on MCP request id.
- Idempotent
Inputs
conversation_idstringrequired- The conversation the scheduled message belongs to.
scheduled_message_idstringrequired- The scheduled message to cancel.
prohostaimcp_configure_ai_employeeUpdate an existing AI employee.DestructiveConfigure AI Employee
Update an existing AI employee. Only the provided fields are written.
- Idempotent
Inputs
agent_idstringrequired- The id of the AI employee to configure.
avatar_emojistring- An emoji to use as the employee's avatar. Omit or leave null to leave unchanged.
confidence_thresholdstring- Minimum confidence score (0-100) required before the employee acts autonomously. Omit or leave null to leave unchanged.
goalsstring- New list of goals for the AI employee, replacing the existing list. Omit or leave null to leave unchanged.
heartbeat_enabledstring- Whether proactive heartbeat runs are enabled for this employee. Omit or leave null to leave unchanged.
heartbeat_interval_secondsstring- How often, in seconds, the employee runs proactive heartbeat checks. Omit or leave null to leave unchanged.
namestring- New name for the AI employee. Omit or leave null to leave unchanged.
proactivenessstring- How proactively the employee should act. Omit or leave null to leave unchanged.
reports_to_agent_idstring- The id of the AI employee this employee reports to. Omit or leave null to leave unchanged.
responsibilitiesstring- New list of responsibilities for the AI employee, replacing the existing list. Omit or leave null to leave unchanged.
system_promptstring- New system prompt for the AI employee. Omit or leave null to leave unchanged.
titlestring- New job title for the AI employee. Omit or leave null to leave unchanged.
prohostaimcp_create_suggestionCreate an AI message-suggestion draft on a guest conversation.DestructiveCreate Suggestion
Create an AI message-suggestion draft on a guest conversation. Nothing is sent — the host reviews the draft in the ProhostAI inbox (the AI-suggestion modal) and can send, edit, or dismiss it. Not supported on internal team-chat conversations. The draft anchors on the conversation's latest message. If a draft already exists there, the call is rejected (with the existing draft under `existing`) unless `replace_existing=true` is passed; use `list_suggestions` to review existing drafts first. A scheduled/paused autopilot reply is always rejected regardless of `replace_existing`.
Inputs
conversation_idstringrequired- The unique identifier of the conversation to create the AI suggestion draft on.
messagestringrequired- The suggestion text to save as an AI draft on the conversation.
replace_existingboolean- Whether to replace an existing draft suggestion on this conversation if one already exists.default
false
prohostaimcp_crm_archive_opportunityArchive (soft-delete) a CRM opportunity.DestructiveCrm Archive Opportunity
Archive (soft-delete) a CRM opportunity.
Inputs
opportunity_idstringrequired- The unique identifier of the CRM opportunity to archive.
prohostaimcp_crm_move_opportunityMove a CRM opportunity to a different stage (auto-closes on won/lost stages).DestructiveCrm Move Opportunity
Move a CRM opportunity to a different stage (auto-closes on won/lost stages).
Inputs
opportunity_idstringrequired- The unique identifier of the CRM opportunity to move.
stage_idstringrequired- The pipeline stage to move the opportunity to.
positioninteger- The position of the opportunity within the destination stage.default
0
prohostaimcp_crm_set_custom_fieldSet a custom field by key on a CRM object.DestructiveCrm Set Custom Field
Set a custom field by key on a CRM object.
- Idempotent
Inputs
keystringrequired- The key of the custom field to set. Use crm_list_field_definitions to check existing keys.
object_idstringrequired- The unique identifier of the CRM object to set the custom field on.
object_typestringrequired- The type of CRM object the custom field belongs to (e.g. opportunity, contact, or company).
valuestring- The value to set for the custom field. The accepted type depends on the field's definition (e.g. text, number, boolean, or list).
prohostaimcp_crm_update_opportunityUpdate fields on an existing CRM opportunity.DestructiveCrm Update Opportunity
Update fields on an existing CRM opportunity.
- Idempotent
Inputs
opportunity_idstringrequired- The unique identifier of the CRM opportunity to update.
company_idstring- New company to associate with this opportunity.
lost_reasonstring- Reason the opportunity was lost, if applicable.
primary_contact_idstring- New primary contact to associate with this opportunity.
titlestring- New title for the opportunity.
value_amountstring- New monetary value of the opportunity.
value_currencystring- New currency for the opportunity's value.
prohostaimcp_delete_ai_employeePermanently delete a custom AI employee.DestructiveDelete AI Employee
Permanently delete a custom AI employee. The default agent cannot be deleted.
- Idempotent
Inputs
agent_idstringrequired- The id of the AI employee to permanently delete.
prohostaimcp_delete_ai_employee_triggerRemove an AI employee's event trigger.DestructiveDelete AI Employee Trigger
Remove an AI employee's event trigger.
- Idempotent
Inputs
trigger_idstringrequired- The unique identifier of the trigger to remove.
prohostaimcp_delete_cleaning_attachmentDelete an attachment on a cleaning.DestructiveDelete Cleaning Attachment
Delete an attachment on a cleaning.
- Idempotent
Inputs
attachment_idstringrequired- The unique identifier of the attachment to delete.
cleaning_idstringrequired- The unique identifier of the cleaning the attachment belongs to.
prohostaimcp_delete_cleaning_checklistDelete a checklist on a cleaning.DestructiveDelete Cleaning Checklist
Delete a checklist on a cleaning.
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist to delete.
cleaning_idstringrequired- The unique identifier of the cleaning job the checklist belongs to.
prohostaimcp_delete_cleaning_checklist_itemDelete a cleaning checklist item.DestructiveDelete Cleaning Checklist Item
Delete a cleaning checklist item.
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist the item belongs to.
cleaning_idstringrequired- The unique identifier of the cleaning job the checklist item belongs to.
item_idstringrequired- The unique identifier of the checklist item to delete.
prohostaimcp_delete_cleaning_commentDelete a cleaning comment (author only).DestructiveDelete Cleaning Comment
Delete a cleaning comment (author only).
- Idempotent
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning job the comment belongs to.
comment_idstringrequired- The unique identifier of the comment to delete. Only the original author can delete it.
prohostaimcp_delete_contactDelete a contact.DestructiveDelete Contact
Delete a contact. Cascades to listing associations. Returns `{"id": ..., "success": true}` on success. Returns `{"error": ..., "code": "contact_has_records"}` when the contact is referenced by records that must be kept, such as orders.
- Idempotent
Inputs
contact_idstringrequired- The unique identifier of the contact to delete.
prohostaimcp_delete_contact_custom_fieldsRemove the named keys from `custom_fields` on every contact in `contact_ids`.DestructiveDelete Contact Custom Fields
Remove the named keys from `custom_fields` on every contact in `contact_ids`.
- Idempotent
Inputs
contact_idsarrayrequired- The contact IDs to update.
field_keysarrayrequired- The custom_fields keys to remove.
prohostaimcp_delete_expense_categoryDelete a custom expense category.DestructiveDelete Expense Category
Delete a custom expense category. System categories cannot be deleted.
- Idempotent
Inputs
category_idstringrequired- The unique identifier of the category to delete.
prohostaimcp_delete_guest_custom_fieldsRemove the named keys from `custom_fields` on every guest in `guest_ids`.DestructiveDelete Guest Custom Fields
Remove the named keys from `custom_fields` on every guest in `guest_ids`.
- Idempotent
Inputs
field_keysarrayrequired- The custom_fields keys to remove.
guest_idsarrayrequired- The guest IDs to update.
prohostaimcp_delete_guidebook_sectionDelete a guidebook-scoped section.DestructiveDelete Guidebook Section
Delete a guidebook-scoped section.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook the section belongs to.
section_idstringrequired- The unique identifier of the section to delete.
prohostaimcp_delete_listing_custom_fieldsBatch-delete custom-field keys from listings, a tag, or the account.DestructiveDelete Listing Custom Fields
Batch-delete custom-field keys from listings, a tag, or the account.
- Idempotent
Inputs
field_keysarrayrequired- The custom field keys to delete.
scopestringrequired- The layer to delete custom-field keys from: account, tag, or listing.
dry_runboolean- If true, preview the fields that would be deleted without deleting them.default
false targetsstring- The targets to delete the fields from. Supports listing_ids, tag_ids (for scope=tag), or target_tag_id / target_tag_name / all_listings (for scope=listing).
prohostaimcp_delete_listing_tagDelete a listing tag and all of its assignments.DestructiveDelete Listing Tag
Delete a listing tag and all of its assignments.
- Idempotent
Inputs
tag_idstringrequired- The unique identifier of the tag to delete.
prohostaimcp_delete_memoryMove a memory to the trash by ID.DestructiveDelete Memory
Move a memory to the trash by ID. Soft-deleted memories stop appearing in lists and AI recall but can be restored from the app's trash. Not available to keys bound to an AI employee.
- Idempotent
Inputs
memory_idstringrequired- ID of the memory to move to the trash.
prohostaimcp_delete_message_templateSoft-delete a message template by ID.DestructiveDelete Message Template
Soft-delete a message template by ID. Any scheduled messages still pending from this template are cancelled asynchronously.
- Idempotent
Inputs
template_idstringrequired- The unique identifier of the message template to delete.
prohostaimcp_delete_owner_statementDelete an owner statement.DestructiveDelete Owner Statement
Delete an owner statement. Returns ``{"id": ..., "success": true}`` on success.
- Idempotent
Inputs
statement_idstringrequired- The unique identifier of the owner statement to delete.
prohostaimcp_delete_pinDelete a pin.DestructiveDelete Pin
Delete a pin.
- Idempotent
Inputs
pin_idstringrequired- The unique identifier of the pin to delete.
prohostaimcp_delete_placeDelete a place; cascades to pins and tag associations.DestructiveDelete Place
Delete a place; cascades to pins and tag associations.
- Idempotent
Inputs
place_idstringrequired- The unique identifier of the place to delete.
prohostaimcp_delete_pricing_overrideDelete one or more date-specific price overrides from PriceLabs.DestructiveDelete Pricing Override
Delete one or more date-specific price overrides from PriceLabs. ``dates`` is a list of ISO dates (YYYY-MM-DD).
- Idempotent
Inputs
datesarrayrequired- The ISO dates (YYYY-MM-DD) whose price overrides should be deleted.
listing_idstringrequired- The unique identifier of the listing to delete price overrides from.
prohostaimcp_delete_reservation_custom_fieldsRemove the named keys from `custom_fields` on every reservation in `reservation_ids`.DestructiveDelete Reservation Custom Fields
Remove the named keys from `custom_fields` on every reservation in `reservation_ids`.
- Idempotent
Inputs
field_keysarrayrequired- The custom field keys to remove.
reservation_idsarrayrequired- The reservation IDs to update.
prohostaimcp_delete_saved_replySoft-delete a saved reply by ID.DestructiveDelete Saved Reply
Soft-delete a saved reply by ID.
- Idempotent
Inputs
saved_reply_idstringrequired- The unique identifier of the saved reply to delete.
prohostaimcp_delete_tag_sectionMove a tag-scoped section (and its sub-sections) to the trash.DestructiveDelete Tag Section
Move a tag-scoped section (and its sub-sections) to the trash. It disappears from every guidebook the tag renders into, and the account owner can restore it from the ProhostAI app — report it as recoverable, not permanent.
- Idempotent
Inputs
section_idstringrequired- The unique identifier of the tag-scoped section to delete.
prohostaimcp_delete_task_checklistDelete a checklist on a task.DestructiveDelete Task Checklist
Delete a checklist on a task.
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist to delete.
task_idstringrequired- The unique identifier of the task the checklist belongs to.
prohostaimcp_delete_upgrade_optionDelete an upgrade option.DestructiveDelete Upgrade Option
Delete an upgrade option.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook that owns this upgrade option.
upgrade_option_idstringrequired- The unique identifier of the upgrade option to delete.
prohostaimcp_delete_workflowDelete an automation workflow.DestructiveDelete Workflow
Delete an automation workflow. This is a soft-delete: the workflow is marked deleted and disabled so it immediately stops matching any future trigger, then external runs are cancelled in the background. Safe to call more than once — deleting an already-deleted workflow succeeds without error.
- Idempotent
Inputs
workflow_idstringrequired- The unique identifier of the workflow to delete.
prohostaimcp_docs_writeReplace a Drive document body.DestructiveDocs Write
Replace a Drive document body.
- Idempotent
Inputs
body_mdstringrequired- The new document body, in Markdown, that will replace the existing content.
path_or_idstringrequired- The path or unique identifier of the Drive document to write to.
prohostaimcp_docs_write_sectionReplace a section's body.DestructiveDocs Write Section
Replace a section's body. `heading` accepts either heading text (case-insensitive, trimmed) or a stable block ULID returned from `docs_read_section` / the docs API — the ULID path survives heading renames, while the text path only works against the current heading.
- Idempotent
Inputs
body_mdstringrequired- The new Markdown content that will replace the section's current body.
headingstringrequired- Heading text (case-insensitive, trimmed) or a stable block ULID returned from docs_read_section. The ULID form survives heading renames; the text form only matches the current heading.
path_or_idstringrequired- The path or unique identifier of the Drive document containing the section to replace.
prohostaimcp_drive_deleteSoft-delete a Drive item by path or id.DestructiveDrive Delete
Soft-delete a Drive item by path or id.
- Idempotent
Inputs
path_or_idstringrequired- The path or unique identifier of the Drive item to delete.
prohostaimcp_drive_moveMove a Drive item to a new parent (by path).DestructiveDrive Move
Move a Drive item to a new parent (by path).
- Idempotent
Inputs
path_or_idstringrequired- The path or unique identifier of the Drive item to move.
new_parent_pathstring- The new parent folder path. Use '' to move the item to the root folder.default
prohostaimcp_edit_cleaning_commentEdit a previously-posted cleaning comment (author only).DestructiveEdit Cleaning Comment
Edit a previously-posted cleaning comment (author only).
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning job the comment belongs to.
comment_idstringrequired- The unique identifier of the comment to edit. Only the original author can edit it.
contentstringrequired- The new text content for the comment.
prohostaimcp_edit_messageEdit the body of a previously-sent message.DestructiveEdit Message
Edit the body of a previously-sent message. Only supported on internal team chat conversations — OTA/SMS/WhatsApp/Gmail edits are blocked.
- Idempotent
Inputs
conversation_idstringrequired- The conversation the message belongs to.
messagestringrequired- New message body.
message_idstringrequired- The message to edit.
prohostaimcp_link_ramp_transaction_to_expenseLink a Ramp corporate-card transaction to an existing expense for reconciliation.DestructiveLink Ramp Transaction To Expense
Link a Ramp corporate-card transaction to an existing expense for reconciliation. Both the transaction and expense must belong to the caller's account. Idempotent: re-linking the same pair returns the same status.
- Idempotent
Inputs
expense_idstringrequired- The unique identifier of the expense to link the transaction to.
transaction_idstringrequired- The unique identifier of the Ramp corporate-card transaction to link.
prohostaimcp_link_transaction_to_expenseLink a bank transaction to an existing expense for reconciliation.DestructiveLink Transaction To Expense
Link a bank transaction to an existing expense for reconciliation. Both the transaction and expense must belong to the caller's account. Idempotent: re-linking the same pair returns the same status.
- Idempotent
Inputs
expense_idstringrequired- The unique identifier of the expense to link the transaction to.
transaction_idstringrequired- The unique identifier of the Plaid bank transaction to link.
prohostaimcp_mark_conversation_readMark a conversation's messages as read for the API user.DestructiveMark Conversation Read
Mark a conversation's messages as read for the API user. If ``message_ids`` is omitted, all unread messages NOT sent by the user are marked. Works on conversations in your account and on connected-teams merged threads in your inbox scope — ProhostAI-Support threads you participate in included (read state is per-user, so this only affects your own unread badge).
- Idempotent
Inputs
conversation_idstringrequired- The conversation to mark as read.
message_idsstring- Specific message IDs to mark as read.
prohostaimcp_move_pin_scopeMove a pin between guidebook scope and tag scope.DestructiveMove Pin Scope
Move a pin between guidebook scope and tag scope. Exactly one target must be set.
- Idempotent
Inputs
pin_idstringrequired- The unique identifier of the pin to move.
target_guidebook_idstring- The guidebook to move the pin into (guidebook-scoped). Exactly one of target_guidebook_id or target_listing_tag_id must be set.
target_listing_tag_idstring- The listing tag to move the pin into (tag-scoped). Exactly one of target_guidebook_id or target_listing_tag_id must be set.
prohostaimcp_move_section_scopeMove a section between guidebook-scoped and tag-scoped storage.DestructiveMove Section Scope
Move a section between guidebook-scoped and tag-scoped storage. XOR target.
- Idempotent
Inputs
section_idstringrequired- The unique identifier of the section to move.
target_guidebook_idstring- The guidebook to move the section into. Provide exactly one of target_guidebook_id or target_listing_tag_id.
target_listing_tag_idstring- The listing tag to move the section into. Provide exactly one of target_guidebook_id or target_listing_tag_id.
prohostaimcp_pause_aiPause AI replies on a conversation (mutes the AI for non-@mentions).DestructivePause AI
Pause AI replies on a conversation (mutes the AI for non-@mentions).
- Idempotent
Inputs
conversation_idstringrequired- The unique identifier of the conversation to pause AI replies on.
prohostaimcp_reject_approval_requestReject a pending approval request that an external agent filed, on behalf of the account owner/admin you are authenticated as.DestructiveReject Approval Request
Reject a pending approval request that an external agent filed, on behalf of the account owner/admin you are authenticated as. `rejection_reason` is required and is delivered to the filing agent on the `agent.approval_resolved` webhook — say what would need to change. Same eligibility rules as `approve_approval_request`: `source: external` only, and the `approvals:decide` scope, which an AI-employee credential can never hold.
Inputs
approval_idstringrequired- The id of the approval request to reject.
rejection_reasonstringrequired- The reason for rejecting this request; delivered to the filing agent on the agent.approval_resolved webhook.
prohostaimcp_remove_place_tagDetach a listing tag from a place.DestructiveRemove Place Tag
Detach a listing tag from a place.
- Idempotent
Inputs
listing_tag_idstringrequired- The unique identifier of the listing tag to detach from the place.
place_idstringrequired- The unique identifier of the place to detach the tag from.
prohostaimcp_reorder_guidebook_pinsBulk-update positions of guidebook-scoped pins.DestructiveReorder Guidebook Pins
Bulk-update positions of guidebook-scoped pins. `pins` is a list of {id, position}.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook whose pins will be reordered.
pinsarrayrequired- List of {id, position} objects specifying the new position for each pin.
prohostaimcp_reorder_guidebook_sectionsBulk-reorder guidebook-scoped sections.DestructiveReorder Guidebook Sections
Bulk-reorder guidebook-scoped sections. `sections` is a list of {id, position, parent_id}.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook whose sections to reorder.
sectionsarrayrequired- A list of {id, position, parent_id} objects specifying the new order and nesting of sections.
prohostaimcp_reorder_tag_pinsBulk-update positions of tag-scoped pins.DestructiveReorder Tag Pins
Bulk-update positions of tag-scoped pins. `pins` is a list of {id, position}.
- Idempotent
Inputs
listing_tag_idstringrequired- The unique identifier of the listing tag whose pins will be reordered.
pinsarrayrequired- List of {id, position} objects specifying the new position for each pin.
prohostaimcp_reorder_tag_sectionsBulk-reorder tag-scoped sections.DestructiveReorder Tag Sections
Bulk-reorder tag-scoped sections.
- Idempotent
Inputs
listing_tag_idstringrequired- The unique identifier of the listing tag whose sections should be reordered.
sectionsarrayrequired- The full list of sections in their new order, each as an object (e.g. containing id and position).
prohostaimcp_reorder_task_checklistsReorder checklists on a task.DestructiveReorder Task Checklists
Reorder checklists on a task.
Inputs
itemsarrayrequired- Array of objects specifying the new order of checklists, e.g. {checklist_id, order} pairs.
task_idstringrequired- The unique identifier of the task whose checklists to reorder.
prohostaimcp_resolve_cleaning_issueDelete (resolve) a cleaning issue.DestructiveResolve Cleaning Issue
Delete (resolve) a cleaning issue.
- Idempotent
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning the issue belongs to.
issue_idstringrequired- The unique identifier of the issue to resolve.
prohostaimcp_resume_aiResume AI replies on a conversation that was previously paused.DestructiveResume AI
Resume AI replies on a conversation that was previously paused.
- Idempotent
Inputs
conversation_idstringrequired- The unique identifier of the conversation to resume AI replies on.
prohostaimcp_revise_suggestionStage a host instruction on an AI suggestion so the next agent run can pick it up.DestructiveRevise Suggestion
Stage a host instruction on an AI suggestion so the next agent run can pick it up.
- Idempotent
Inputs
conversation_idstringrequired- The unique identifier of the conversation the suggestion belongs to.
instructionstringrequired- The instruction to stage on the AI suggestion for the next agent run to apply.
suggestion_idstringrequired- The unique identifier of the AI suggestion to stage a revision instruction on.
prohostaimcp_run_workflowManually trigger a workflow run now.DestructiveRun Workflow
Manually trigger a workflow run now. The workflow must be enabled and have steps. Pass reservation_id for reservation-scoped workflows.
Inputs
workflow_idstringrequired- The unique identifier of the workflow to run now.
reservation_idstring- The reservation to scope this run to, for reservation-scoped workflows.
prohostaimcp_set_contact_custom_fieldsMerge `fields` into `custom_fields` on every contact in `contact_ids`.DestructiveSet Contact Custom Fields
Merge `fields` into `custom_fields` on every contact in `contact_ids`.
- Idempotent
Inputs
contact_idsarrayrequired- The contact IDs to update.
fieldsobjectrequired- Key/value custom fields to merge into each contact's custom_fields.
prohostaimcp_set_guest_custom_fieldsMerge `fields` into `custom_fields` on every guest in `guest_ids`.DestructiveSet Guest Custom Fields
Merge `fields` into `custom_fields` on every guest in `guest_ids`.
- Idempotent
Inputs
fieldsobjectrequired- Key/value custom fields to merge into each guest's custom_fields.
guest_idsarrayrequired- The guest IDs to update.
prohostaimcp_set_listing_custom_fieldsBatch-set custom fields on listings, a tag, or the account.DestructiveSet Listing Custom Fields
Batch-set custom fields on listings, a tag, or the account. ``scope`` selects the layer; ``mode='merge'`` keeps existing keys, ``mode='replace'`` overwrites the dict. ``targets`` supports ``listing_ids``, ``tag_ids`` (for scope=tag), or ``target_tag_id`` / ``target_tag_name`` / ``all_listings`` (for scope=listing).
- Idempotent
Inputs
fieldsobjectrequired- The custom field key/value pairs to set.
scopestringrequired- The layer to set custom fields on: account, tag, or listing.
dry_runboolean- If true, preview the change without applying it.default
false modestring- Whether to merge new fields with existing ones or replace the dict entirely.default
merge targetsstring- The targets to apply the fields to. Supports listing_ids, tag_ids (for scope=tag), or target_tag_id / target_tag_name / all_listings (for scope=listing).
prohostaimcp_set_listing_group_childrenReplace the child-listings list for a parent listing (a 'listing group').DestructiveSet Listing Group Children
Replace the child-listings list for a parent listing (a 'listing group'). Cycles, self-references, and listings already in another group are rejected.
- Idempotent
Inputs
child_listing_idsarrayrequired- The full list of child listing IDs to assign to this group.
listing_idstringrequired- The unique identifier of the parent listing.
prohostaimcp_set_listing_host_roleSet the host role (owner / cohost) for a Hospitable-connected listing.DestructiveSet Listing Host Role
Set the host role (owner / cohost) for a Hospitable-connected listing. Use `apply_to_all=true` to fan out to every sibling listing on the same connection.
- Idempotent
Inputs
listing_idstringrequired- The unique identifier of the listing to set the host role on.
user_idstringrequired- The unique identifier of the user to assign as owner or cohost.
apply_to_allboolean- If true, apply the host role change to every sibling listing on the same connection.default
false
prohostaimcp_set_mystay_section_orderSet the order of sections shown on the My Stay tab of the guidebook.DestructiveSet Mystay Section Order
Set the order of sections shown on the My Stay tab of the guidebook.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook whose My Stay tab order should be set.
section_idsarrayrequired- The full ordered list of section IDs to display on the My Stay tab.
prohostaimcp_set_reservation_custom_fieldsMerge `fields` into `custom_fields` on every reservation in `reservation_ids`.DestructiveSet Reservation Custom Fields
Merge `fields` into `custom_fields` on every reservation in `reservation_ids`. Existing keys are overwritten; keys absent from `fields` are preserved.
- Idempotent
Inputs
fieldsobjectrequired- The key/value pairs to merge into each reservation's custom_fields. Existing keys are overwritten; keys not present here are preserved.
reservation_idsarrayrequired- The reservation IDs to update.
prohostaimcp_sheets_delete_rowDelete a row from a sheet by row id.DestructiveSheets Delete Row
Delete a row from a sheet by row id.
- Idempotent
Inputs
path_or_idstringrequired- The path or unique ID of the sheet containing the row.
row_idstringrequired- The unique ID of the row to delete.
prohostaimcp_sheets_update_rowPartial-patch a row in a sheet by row id.DestructiveSheets Update Row
Partial-patch a row in a sheet by row id.
- Idempotent
Inputs
patchobjectrequired- A {column_id: value} map of fields to update on the row. Unspecified columns are left unchanged.
path_or_idstringrequired- The path or unique ID of the sheet containing the row.
row_idstringrequired- The unique ID of the row to update.
prohostaimcp_toggle_reactionAdd or remove the API user's reaction with this emoji on a message.DestructiveToggle Reaction
Add or remove the API user's reaction with this emoji on a message. Reactions are per-emoji: the same emoji again removes it, a different emoji is added alongside.
Inputs
conversation_idstringrequired- The conversation the message belongs to.
emojistringrequired- The emoji to toggle.
message_idstringrequired- The message to react to.
prohostaimcp_toggle_workflowEnable (resume) or disable (pause) a workflow.DestructiveToggle Workflow
Enable (resume) or disable (pause) a workflow.
- Idempotent
Inputs
enabledbooleanrequired- Set to true to enable (resume) the workflow, or false to disable (pause) it.
workflow_idstringrequired- The unique identifier of the workflow to enable or disable.
prohostaimcp_translate_task_checklistTranslate a task checklist to a target language.DestructiveTranslate Task Checklist
Translate a task checklist to a target language.
Inputs
checklist_idstringrequired- The unique identifier of the checklist within the task to translate.
target_languagestringrequired- The target language to translate the checklist into.
task_idstringrequired- The unique identifier of the task whose checklist should be translated.
forceboolean- Whether to force re-translation even if a translation to the target language already exists.default
false
prohostaimcp_unblock_datesUnblock (mark available) a list of dates on a listing's calendar.DestructiveUnblock Dates
Unblock (mark available) a list of dates on a listing's calendar. Sugar over `update_calendar_days` with `available=true` — dispatched asynchronously via the listing's OTA.
- Idempotent
Inputs
datesarrayrequired- The dates to unblock on the listing's calendar.
listing_idstringrequired- The unique identifier of the listing to unblock dates on.
prohostaimcp_update_ai_employee_triggerUpdate an AI employee's event trigger.DestructiveUpdate AI Employee Trigger
Update an AI employee's event trigger. Only the provided fields are written. 'description' is what the trigger is for — it is injected into the prompt of every run the trigger fires, so on a 'schedule' trigger it is the routine's instructions.
- Idempotent
Inputs
trigger_idstringrequired- The id of the trigger to update.
cooldown_secondsstring- New minimum number of seconds between successive firings of this trigger. Omit or leave null to leave unchanged.
descriptionstring- New description of what the trigger is for. This text is injected into the prompt of every run the trigger fires, so on a 'schedule' trigger it is the routine's instructions. Omit or leave null to leave unchanged.
enabledstring- Whether the trigger is active. Omit or leave null to leave unchanged.
namestring- New display name for the trigger. Omit or leave null to leave unchanged.
trigger_typestring- New type of event that fires this trigger. Omit or leave null to leave unchanged.
prohostaimcp_update_autopilot_scheduleReplace the account's autopilot schedule windows.DestructiveUpdate Autopilot Schedule
Replace the account's autopilot schedule windows. This is a FULL replace — send the complete set of windows you want (read them first with get_autopilot_schedule). Each window is {day_of_week (monday..sunday), start_at (HH:MM), end_at (HH:MM), enabled?}. A window whose start_at is after its end_at wraps past midnight. Optionally also set schedule_enabled and schedule_timezone. Windows must be non-empty; to turn scheduling off, set schedule_enabled=false (via this tool or update_autopilot_settings) instead of clearing windows.
- Idempotent
Inputs
windowsarrayrequired- Complete list of schedule windows to set (this is a full replace). Each item is {day_of_week (monday..sunday), start_at (HH:MM), end_at (HH:MM), enabled?}. Must be non-empty.
schedule_enabledstring- Whether to also enable/disable enforcement of the schedule windows.
schedule_timezonestring- Optionally also set the IANA timezone used to interpret the schedule windows.
prohostaimcp_update_autopilot_settingsPartially update the account's autopilot configuration.DestructiveUpdate Autopilot Settings
Partially update the account's autopilot configuration. Only the fields you pass change (read-modify-write). Thresholds are clamped to allowed values (confidence: 80/90/95/99; sentiment: 0/30/40/50). unsure_behavior controls what Autopilot does when it is unsure and drafts an informational deferral: 'reply_and_follow_up' (auto-send, default) or 'hold_for_host' (hold the reply and escalate to the host); an unknown value is rejected. category_rules is a list of {category, enabled?, custom_instructions?}; channel_rules a list of {channel, enabled}; booking_channel_rules a list of {channel_id, enabled}. Unknown categories or channels are rejected.
- Idempotent
Inputs
booking_channel_rulesstring- List of per booking-channel rule overrides, each {channel_id, enabled}.
category_rulesstring- List of per-category rule overrides, each {category, enabled?, custom_instructions?}. Unknown categories are rejected.
channel_rulesstring- List of per-channel rule overrides, each {channel, enabled}. Unknown channels are rejected.
clear_personalize_for_user_idboolean- If true, clears any personalize_for_user_id currently set instead of applying a new one.default
false confidence_thresholdstring- Minimum confidence score required before Autopilot auto-sends a reply. Clamped to 80, 90, 95, or 99.
default_for_new_listingsstring- Whether Autopilot is enabled by default on newly added listings.
enabledstring- Whether Autopilot is turned on for the account. Omit to leave unchanged.
escalation_ack_enabledstring- Whether Autopilot sends the guest an acknowledgement message when escalating to the host.
message_delay_secondsstring- Delay, in seconds, before Autopilot sends an auto-generated reply. Omit to leave unchanged.
personalize_for_user_idstring- ID of the team member whose tone/style Autopilot should personalize replies after.
schedule_enabledstring- Whether the autopilot schedule windows (see get_autopilot_schedule) are enforced.
schedule_timezonestring- IANA timezone used to interpret the autopilot schedule windows.
sentiment_escalation_thresholdstring- Sentiment score below which Autopilot escalates the conversation to the host. Clamped to 0, 30, 40, or 50.
unsure_behaviorstring- What Autopilot does when it is unsure and drafts an informational deferral: 'reply_and_follow_up' (auto-send, default) or 'hold_for_host' (hold the reply and escalate to the host). An unknown value is rejected.
prohostaimcp_update_calendar_daysUpdate price, availability, and/or minimum-stay for a listing's calendar.DestructiveUpdate Calendar Days
Update price, availability, and/or minimum-stay for a listing's calendar. Dispatched asynchronously via the listing's OTA. Either pass `updates` (list of per-date dicts) or `dates` + the shared values to apply. Up to 1095 dates per call.
- Idempotent
Inputs
listing_idstringrequired- The unique identifier of the listing to update.
availablestring- Whether each date in dates should be marked available.
datesstring- The dates to apply the shared price/available/min_stay values to. Omit if passing per-date updates instead.
min_staystring- The minimum stay (in nights) to apply to each date in dates.
pricestring- The nightly price to apply to each date in dates.
updatesstring- A list of per-date update objects, each specifying a date and the values to set for it. Use instead of dates + shared values when different dates need different settings.
prohostaimcp_update_cleaning_checklistUpdate a checklist on a cleaning.DestructiveUpdate Cleaning Checklist
Update a checklist on a cleaning.
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist to update.
cleaning_idstringrequired- The unique identifier of the cleaning job the checklist belongs to.
descriptionstring- New description for the checklist.
orderstring- New sort order for the checklist relative to other checklists on the cleaning.
titlestring- New title for the checklist.
prohostaimcp_update_cleaning_checklist_itemUpdate fields on a cleaning checklist item (title, completion, photo, etc.).DestructiveUpdate Cleaning Checklist Item
Update fields on a cleaning checklist item (title, completion, photo, etc.).
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist the item belongs to.
cleaning_idstringrequired- The unique identifier of the cleaning job the checklist item belongs to.
item_idstringrequired- The unique identifier of the checklist item to update.
completedstring- Whether the item is marked complete.
orderstring- New sort order for the item within the checklist.
photo_urlstring- URL of the photo submitted by the cleaner as proof of completion.
reference_photo_urlstring- New reference photo URL showing what this item should look like when done correctly.
titlestring- New title for the checklist item.
prohostaimcp_update_cleaning_issueUpdate the title of a cleaning issue.DestructiveUpdate Cleaning Issue
Update the title of a cleaning issue.
- Idempotent
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning the issue belongs to.
issue_idstringrequired- The unique identifier of the issue to update.
titlestring- The new title for the issue.
prohostaimcp_update_cleaning_statusTransition a cleaning to a new status.DestructiveUpdate Cleaning Status
Transition a cleaning to a new status. Valid values: not_started, in_progress, paused, ready_for_inspection, completed.
- Idempotent
Inputs
cleaning_idstringrequired- The unique identifier of the cleaning to update.
statusstringrequired- The new status to transition the cleaning to.
prohostaimcp_update_contactUpdate an existing contact.DestructiveUpdate Contact
Update an existing contact. Only provided fields are written.
- Idempotent
Inputs
contact_idstringrequired- The unique identifier of the contact to update.
companystring- The contact's company.
custom_fieldsstring- Custom field key/value pairs to merge onto the contact.
emailstring- The contact's email address.
first_namestring- The contact's first name.
last_namestring- The contact's last name.
notesstring- Free-text notes about the contact.
phonestring- The contact's phone number.
rolestring- The contact's role.
prohostaimcp_update_expenseUpdate fields on an existing expense.DestructiveUpdate Expense
Update fields on an existing expense. Only provided fields are modified. Pass `amount` as a number (treated as decimal), `date` as ISO-8601 (YYYY-MM-DD).
- Idempotent
Inputs
expense_idstringrequired- The unique identifier of the expense to update.
amountstring- New amount for the expense, treated as a decimal.
category_idstring- New expense category to assign.
currencystring- New ISO 4217 currency code for the expense.
datestring- New date for the expense, in ISO-8601 format (YYYY-MM-DD).
descriptionstring- New free-text description for the expense.
listing_idstring- New listing to associate the expense with.
namestring- New name/title for the expense.
payment_statusstring- New payment status for the expense.
prohostaimcp_update_expense_categoryRename an expense category.DestructiveUpdate Expense Category
Rename an expense category.
- Idempotent
Inputs
category_idstringrequired- The unique identifier of the category to rename.
namestringrequired- The new name for the category.
prohostaimcp_update_guestUpdate an existing guest.DestructiveUpdate Guest
Update an existing guest. Only provided fields are written.
- Idempotent
Inputs
guest_idstringrequired- The unique identifier of the guest to update.
addressstring- The guest's street address.
citystring- The guest's city.
countrystring- The guest's country.
custom_fieldsstring- Guest-level custom field values to set.
emailstring- The guest's email address.
first_namestring- The guest's first name.
last_namestring- The guest's last name.
notesstring- Free-text notes about the guest.
phonestring- The guest's phone number.
photo_urlstring- URL of the guest's photo.
postal_codestring- The guest's postal code.
tagsstring- Tags to associate with the guest.
prohostaimcp_update_guidebookPatch fields on a guidebook (title, description, theme, branding).DestructiveUpdate Guidebook
Patch fields on a guidebook (title, description, theme, branding).
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook to update.
corner_radiusstring- New corner radius style for UI elements. Omit or leave null to leave unchanged.
custom_brand_textstring- New brand text shown in the guidebook footer. Omit or leave null to leave unchanged.
custom_fontstring- New font family for the guidebook. Omit or leave null to leave unchanged.
custom_logo_dark_urlstring- New logo image URL for dark backgrounds. Omit or leave null to leave unchanged.
custom_logo_urlstring- New logo image URL for light backgrounds. Omit or leave null to leave unchanged.
custom_primary_colorstring- New primary brand color, as a hex code. Omit or leave null to leave unchanged.
custom_secondary_colorstring- New secondary brand color, as a hex code. Omit or leave null to leave unchanged.
descriptionstring- New description for the guidebook. Omit or leave null to leave unchanged.
hide_brandingstring- Whether to hide ProhostAI branding on the guidebook. Omit or leave null to leave unchanged.
listing_idstring- New listing to attach the guidebook to. Omit or leave null to leave unchanged.
themestring- New visual theme for the guidebook. Omit or leave null to leave unchanged.
titlestring- New title for the guidebook. Omit or leave null to leave unchanged.
prohostaimcp_update_guidebook_sectionPatch fields on a guidebook-scoped section.DestructiveUpdate Guidebook Section
Patch fields on a guidebook-scoped section.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook the section belongs to.
section_idstringrequired- The unique identifier of the section to update.
contentstring- New body content for the section. Omit or leave null to leave unchanged.
iconstring- New icon identifier for the section. Omit or leave null to leave unchanged.
parent_idstring- New parent section identifier to nest this section under. Omit or leave null to leave unchanged.
section_typestring- New section type. Omit or leave null to leave unchanged.
titlestring- New title for the section. Omit or leave null to leave unchanged.
unlock_before_checkinstring- New number of hours before check-in that this section unlocks for the guest. Omit or leave null to leave unchanged.
prohostaimcp_update_last_minute_pricingConfigure PriceLabs last-minute (lead-time based) pricing for a listing — the ``last_minute_prices`` customization, a standing rule that adjusts nightly prices as check-in approaches.DestructiveUpdate Last Minute Pricing
Configure PriceLabs last-minute (lead-time based) pricing for a listing — the ``last_minute_prices`` customization, a standing rule that adjusts nightly prices as check-in approaches. ``factor_type`` is one of linear / linear_gradual (percent, -75..+500, negative = discount), fixed (flat nightly price, PriceLabs requires >= 20% of base), or the presets recommended / conservative / aggressive / none (auto-fill value + window). ``days_from_checkin`` (1-90) is where the rule starts. ``enabled=false`` turns the rule off preserving its stored configuration. The rule adjusts FROM the listing's base price and is clamped AT its min price (see update_listing_pricing). Untouched customization blocks (far_out_premium, seasonality, …) are preserved via read-modify-write. Returns a structured ``pricelabs_not_authoritative`` error (mirroring the REST 409) when PriceLabs is not the authoritative price writer for this listing.
- Idempotent
Inputs
enabledbooleanrequired- Whether the last-minute pricing rule is turned on.
listing_idstringrequired- The unique identifier of the listing to configure last-minute pricing for.
days_from_checkinstring- How many days before check-in the last-minute pricing rule starts adjusting price.
factor_typestring- The type of last-minute pricing adjustment to apply.
factor_valuestring- The magnitude of the adjustment, interpreted according to factor_type.
prohostaimcp_update_listingUpdate fields on a listing — title, description, address, capacity, wifi, custom_fields, etc.DestructiveUpdate Listing
Update fields on a listing — title, description, address, capacity, wifi, custom_fields, etc. Only supplied fields are changed. OTA-managed fields (host roles, connection role, import status) are not exposed.
- Idempotent
Inputs
listing_idstringrequired- The unique identifier of the listing to update.
addressstring- The street address of the listing.
amenitiesstring- A dict of amenities for the listing.
amenities_liststring- A list of amenity names for the listing.
aptstring- The apartment or unit number for the listing.
building_namestring- The building name for the listing, if applicable.
check_in_time_endstring- The latest check-in time for the listing.
check_in_time_startstring- The earliest check-in time for the listing.
check_out_timestring- The check-out time for the listing.
citystring- The city the listing is located in.
countrystring- The country the listing is located in.
currencystring- The currency code used for the listing's pricing.
custom_fieldsstring- A dict of custom field key/value pairs for the listing.
descriptionstring- A description of the listing.
internal_titlestring- An internal-only title for the listing, not shown to guests.
latstring- The latitude coordinate of the listing.
lngstring- The longitude coordinate of the listing.
max_guestsstring- The maximum number of guests the listing accommodates.
num_bathroomsstring- The number of bathrooms.
num_bedroomsstring- The number of bedrooms.
num_bedsstring- The number of beds.
postal_codestring- The postal/ZIP code of the listing.
private_notesstring- Internal private notes about the listing, not shown to guests.
rulesstring- The house rules for the listing.
thumbnail_urlstring- The URL of the listing's thumbnail image.
timezonestring- The IANA timezone for the listing.
titlestring- The title of the listing.
wifi_networkstring- The WiFi network name for the listing.
wifi_passwordstring- The WiFi password for the listing.
prohostaimcp_update_listing_photosReplace the photo set for a listing.DestructiveUpdate Listing Photos
Replace the photo set for a listing. Existing photos are deleted first; pass an empty list to clear all photos. On a connected listing this takes photo ownership from the channel. Up to 100 photos per call.
- Idempotent
Inputs
listing_idstringrequired- The unique identifier of the listing whose photos should be replaced.
photosarrayrequired- The new list of photo objects to set on the listing, replacing all existing photos. Pass an empty list to clear all photos. Up to 100 photos per call.
prohostaimcp_update_listing_pricingPush min/base/max to PriceLabs for the listing.DestructiveUpdate Listing Pricing
Push min/base/max to PriceLabs for the listing. Returns a structured ``pricelabs_not_authoritative`` error (mirroring the REST 409) when PriceLabs is not the authoritative price writer for this listing — map the listing to PriceLabs first (it becomes authoritative once linked).
- Idempotent
Inputs
basenumberrequired- The base nightly price PriceLabs uses as its starting point for dynamic pricing.
listing_idstringrequired- The unique identifier of the listing to update pricing for.
maxnumberrequired- The maximum nightly price PriceLabs will not price above.
minnumberrequired- The minimum nightly price PriceLabs will not price below.
prohostaimcp_update_listing_tagUpdate one or more fields on an existing listing tag.DestructiveUpdate Listing Tag
Update one or more fields on an existing listing tag.
- Idempotent
Inputs
tag_idstringrequired- The unique identifier of the tag to update.
colorstring- New color for the tag.
custom_fieldsstring- New custom field key/value pairs for the tag.
iconstring- New icon for the tag.
namestring- New name for the tag.
prohostaimcp_update_memoryUpdate an existing memory.DestructiveUpdate Memory
Update an existing memory. `content`, `scope`, and `is_internal` are all optional; at least one must be provided. Restricted internal-only writers cannot update existing memories; they may only create new internal memories.
- Idempotent
Inputs
memory_idstringrequired- ID of the memory to update.
contentstring- New text content for the memory. Optional; at least one of content, scope, is_internal must be provided.
is_internalstring- Whether the memory should be internal-only. Optional; at least one of content, scope, is_internal must be provided.
scopestring- New scope for the memory. Optional; at least one of content, scope, is_internal must be provided.
prohostaimcp_update_message_templateUpdate a message template by ID.DestructiveUpdate Message Template
Update a message template by ID. ``time_offset_minutes`` is signed: NEGATIVE fires BEFORE the event, positive after, 0 at the event. For ``check_in`` / ``checkout`` templates a reservation booked after the computed send time is silently skipped unless ``send_if_past_due=True``. Changing any scheduling field (offset, min/max nights, type, listings, day/time, past-due, or message) reconciles EXISTING scheduled messages to match — cancelling rows that no longer qualify and rescheduling on an offset change — without creating new ones. Set ``apply_to_existing_reservations=True`` to ALSO create messages for existing reservations that don't yet have one.
- Idempotent
Inputs
template_idstringrequired- The unique identifier of the message template to update.
apply_to_existing_reservationsboolean- If true, also create messages for existing reservations that don't yet have one.default
false day_of_weekstring- For recurring_weekly templates, the day of week to send on.
is_enabledstring- Whether the template is active and will schedule messages.
listing_idsstring- New set of listing IDs this template applies to.
max_nightsstring- Only apply this template to reservations with at most this many nights.
messagestring- New message body. Use placeholders such as {guest_first_name} — see list_conversation_message_variables for the full list of valid placeholders.
min_nightsstring- Only apply this template to reservations with at least this many nights.
past_due_delay_minutesstring- Minutes to delay a past-due send when send_if_past_due is true.
send_if_past_duestring- For check_in / checkout templates, if true the message still sends even when the reservation was booked after the computed send time.
time_of_daystring- For recurring_weekly templates, the time of day to send at (24-hour HH:MM).
time_offset_minutesstring- Minutes relative to the check-in/checkout event when the message should send. Negative fires before the event, positive fires after, 0 fires at the event.
titlestring- New internal title for the message template.
typestring- New template trigger type. One of booking_confirmed, check_in, checkout, or recurring_weekly.
prohostaimcp_update_notification_settingsUpdate the acting user's notification preferences.DestructiveUpdate Notification Settings
Update the acting user's notification preferences. Only the fields you pass are written: a scope array REPLACES that category's subscriptions wholesale (pass [] to silence the category), while channel_preferences and message_channel_preferences merge per key, so categories and channels you omit keep their stored values. Read the current settings first — get_notification_settings returns the legal values for every field. Only push and email delivery can be changed here; sms and slack are entitlement-gated, and escalation_reachability is read-only, both refused by name rather than silently dropped. Requires the `notifications:write` scope; a listing-scoped API key cannot call it.
- Idempotent
Inputs
ai_employee_cadencestring- How often AI employee digest notifications are sent.
ai_employee_preferencesstring- Notification event scopes to subscribe to for AI employee notifications. Replaces the entire category wholesale; pass [] to silence it.
autopilot_nudge_preferencesstring- Notification event scopes to subscribe to for autopilot nudge notifications. Replaces the entire category wholesale; pass [] to silence it.
channel_preferencesstring- Per-category delivery-channel toggles, keyed by category then channel name. Merged per key, so categories and channels you omit keep their stored values.
cleaning_guest_checkout_enabledstring- Whether guest-checkout cleaning notifications are enabled.
cleaning_needs_attention_enabledstring- Whether "cleaning needs attention" notifications are enabled.
cleaning_preferencesstring- Notification event scopes to subscribe to for cleaning notifications. Replaces the entire category wholesale; pass [] to silence it.
cleaning_reminders_enabledstring- Whether cleaning reminder notifications are enabled.
message_channel_preferencesstring- Per-channel toggles for message notifications, keyed by channel name. Merged per key, so channels you omit keep their stored values.
message_preferencesstring- Notification event scopes to subscribe to for guest message notifications. Replaces the entire category wholesale; pass [] to silence it.
reservation_preferencesstring- Notification event scopes to subscribe to for reservation notifications. Replaces the entire category wholesale; pass [] to silence it.
task_needs_attention_enabledstring- Whether "task needs attention" notifications are enabled.
task_preferencesstring- Notification event scopes to subscribe to for task notifications. Replaces the entire category wholesale; pass [] to silence it.
task_reminders_enabledstring- Whether task reminder notifications are enabled.
prohostaimcp_update_ownerUpdate an existing owner.DestructiveUpdate Owner
Update an existing owner. Only provided fields are written. Passing ``listing_ids`` REASSIGNS the owner's listings — the owner ends up owning exactly the listings supplied (unlinking any others); pass ``[]`` to unlink all. Unlike the REST ``PATCH /owners`` endpoint, this MCP tool supports listing reassignment.
- Idempotent
Inputs
owner_idstringrequired- The unique identifier of the owner to update.
address_line1string- Updated first line of the owner's mailing address.
address_line2string- Updated second line of the owner's mailing address.
citystring- Updated city of the owner's mailing address.
commission_ratestring- Updated commission rate charged to this owner.
commission_typestring- Updated commission calculation type (e.g. percentage or flat_fee).
company_namestring- Updated company name associated with the property owner.
countrystring- Updated country of the owner's mailing address.
emailstring- Updated email address of the property owner.
listing_idsstring- Listing IDs to reassign to this owner. This REPLACES the owner's current listings — the owner ends up owning exactly the listings supplied (unlinking any others). Pass an empty array to unlink all listings.
namestring- Updated full name of the property owner.
notesstring- Updated free-form internal notes about the owner.
phonestring- Updated phone number of the property owner.
postal_codestring- Updated postal or ZIP code of the owner's mailing address.
state_provincestring- Updated state or province of the owner's mailing address.
statusstring- Updated status of the owner (e.g. active or inactive).
tax_idstring- Updated tax identification number (e.g. SSN or EIN) for the owner.
prohostaimcp_update_owner_statementUpdate an existing owner statement.DestructiveUpdate Owner Statement
Update an existing owner statement. Only provided fields are written.
- Idempotent
Inputs
statement_idstringrequired- The unique identifier of the owner statement to update.
from_datestring- Updated start date of the statement period (ISO 8601).
invoice_numberstring- Updated invoice number to associate with the statement.
logostring- Updated URL or reference to a logo image to display on the statement.
notesstring- Updated free-form notes to include on the statement.
owner_idstring- Updated owner ID this statement is associated with.
property_manager_addressstring- Updated property manager's mailing address to display on the statement.
property_manager_emailstring- Updated property manager's email to display on the statement.
property_manager_namestring- Updated property manager's name to display on the statement.
property_manager_phonestring- Updated property manager's phone number to display on the statement.
property_manager_tax_numberstring- Updated property manager's tax identification number to display on the statement.
property_owner_addressstring- Updated property owner's mailing address to display on the statement.
property_owner_emailstring- Updated property owner's email to display on the statement.
property_owner_namestring- Updated property owner's name to display on the statement.
property_owner_phonestring- Updated property owner's phone number to display on the statement.
property_owner_tax_numberstring- Updated property owner's tax identification number to display on the statement.
rental_activity_display_typestring- Updated display type for rental activity line items on the statement.
statusstring- Updated status of the statement (e.g. draft, sent, paid).
titlestring- Updated title of the owner statement.
to_datestring- Updated end date of the statement period (ISO 8601).
prohostaimcp_update_pinUpdate a pin's category, position, or host note override.DestructiveUpdate Pin
Update a pin's category, position, or host note override.
- Idempotent
Inputs
pin_idstringrequired- The unique identifier of the pin to update.
categorystring- New category to file this pin under. Leave unset to keep the current category.
host_note_overridestring- New host note override for this pin. Leave unset to keep the current value.
positionstring- New sort position for the pin within its category. Leave unset to keep the current position.
prohostaimcp_update_placePatch fields on an existing place.DestructiveUpdate Place
Patch fields on an existing place. Only fields with a non-null value are applied — the MCP/JSON-RPC binding cannot distinguish an explicit `null` from an omitted argument, so this tool cannot clear nullable fields. To clear a field, use `PUT /v1/places/{id}` with an explicit `null` in the JSON body.
- Idempotent
Inputs
place_idstringrequired- The unique identifier of the place to update.
addressstring- New street address for the place. Omit to leave unchanged.
descriptionstring- New free-text description for the place. Omit to leave unchanged.
latitudestring- New latitude coordinate for the place. Omit to leave unchanged.
listing_tag_idsstring- New list of listing tag IDs to associate with the place. Omit to leave unchanged.
longitudestring- New longitude coordinate for the place. Omit to leave unchanged.
namestring- New name for the place. Omit to leave unchanged.
phonestring- New contact phone number for the place. Omit to leave unchanged.
photo_urlstring- New photo URL for the place. Omit to leave unchanged.
website_urlstring- New website URL for the place. Omit to leave unchanged.
prohostaimcp_update_reservationUpdate a public-safe subset of fields on a reservation: `custom_fields` (full replace) and guest contact details.DestructiveUpdate Reservation
Update a public-safe subset of fields on a reservation: `custom_fields` (full replace) and guest contact details. Status, cancel, and Airbnb actions are deferred.
- Idempotent
Inputs
reservation_idstringrequired- The unique identifier of the reservation to update.
custom_fieldsstring- Full replacement for the reservation's custom fields. Provide the complete set of key/value pairs; this replaces existing custom fields rather than merging.
guest_addressstring- The guest's street address.
guest_citystring- The guest's city.
guest_countrystring- The guest's country.
guest_emailstring- The guest's email address.
guest_first_namestring- The guest's first name.
guest_last_namestring- The guest's last name.
guest_phonestring- The guest's phone number.
guest_postal_codestring- The guest's postal or ZIP code.
prohostaimcp_update_saved_replyUpdate fields on a saved reply.DestructiveUpdate Saved Reply
Update fields on a saved reply.
- Idempotent
Inputs
saved_reply_idstringrequired- The unique identifier of the saved reply to update.
categorystring- New category to group this saved reply under.
messagestring- New message body for the saved reply.
shortcutstring- New text shortcut that expands to this saved reply.
sort_orderstring- Position of this saved reply in the picker list (lower sorts first).
titlestring- New title for the saved reply.
prohostaimcp_update_scheduled_messageEdit the body and/or send time of a scheduled message that hasn't been sent.DestructiveUpdate Scheduled Message
Edit the body and/or send time of a scheduled message that hasn't been sent. Only ``scheduled``/``paused`` rows from source=``api`` or source=``mcp`` are editable.
- Idempotent
Inputs
conversation_idstringrequired- The conversation the scheduled message belongs to.
scheduled_message_idstringrequired- The scheduled message to edit.
messagestring- New message body.
scheduled_atstring- New ISO 8601 send time.
prohostaimcp_update_tag_sectionPatch fields on a tag-scoped section.DestructiveUpdate Tag Section
Patch fields on a tag-scoped section.
- Idempotent
Inputs
section_idstringrequired- The unique identifier of the tag-scoped section to update.
contentstring- New markdown content for the section. Omit to leave the existing content unchanged.
iconstring- New icon identifier for the section. Omit to leave unchanged.
parent_idstring- ID of a new parent section to nest this section under. Omit to leave unchanged.
section_typestring- New section type. Omit to leave the existing type unchanged.
titlestring- New title for the section. Omit to leave the existing title unchanged.
unlock_before_checkinstring- How many hours before check-in this section becomes visible to guests. Omit to leave unchanged.
prohostaimcp_update_taskUpdate a task's status, priority, description, or other fields.DestructiveUpdate Task
Update a task's status, priority, description, or other fields. Changing status runs the task work-session timer: 'in_progress' starts it (and snapshots the assignee's rate), any other status stops it, and 'completed' also finalizes the billable duration. Re-sending the status a task already has does not restart the timer.
- Idempotent
Inputs
task_idstringrequired- The unique identifier of the task to update.
assignee_idsstring- New complete list of user IDs to assign this task to.
categorystring- New category for the task.
descriptionstring- New description for the task.
due_datestring- New ISO 8601 due date for the task.
prioritystring- New priority level for the task.
sourcestring- New source for the task. One of review, message, or manual.
statusstring- New status for the task.
titlestring- New title for the task.
prohostaimcp_update_task_checklistUpdate fields on a task checklist.DestructiveUpdate Task Checklist
Update fields on a task checklist.
- Idempotent
Inputs
checklist_idstringrequired- The unique identifier of the checklist to update.
task_idstringrequired- The unique identifier of the task the checklist belongs to.
descriptionstring- New description for the checklist.
orderstring- New position for the checklist among the task's checklists.
titlestring- New title for the checklist.
prohostaimcp_update_upgrade_optionPatch fields on an existing upgrade option.DestructiveUpdate Upgrade Option
Patch fields on an existing upgrade option.
- Idempotent
Inputs
guidebook_idstringrequired- The unique identifier of the guidebook that owns this upgrade option.
upgrade_option_idstringrequired- The unique identifier of the upgrade option to update.
descriptionstring- New description for the upgrade option. Omit to leave unchanged.
enabledstring- Whether the upgrade option should be enabled/visible to guests. Omit to leave unchanged.
pricestring- New price for the upgrade option. Omit to leave unchanged.
titlestring- New title for the upgrade option. Omit to leave unchanged.
upgrade_typestring- New type/scope for the upgrade option. Omit to leave unchanged.
prohostaimcp_update_workflowUpdate an existing automation workflow in place.DestructiveUpdate Workflow
Update an existing automation workflow in place. Only the fields you pass change (partial update). Pass steps to REPLACE the workflow's entire step list (each step is {order, instruction, tool_name?, skill_key?, delay_seconds?}); omit it to leave the steps untouched. listing_ids replaces the workflow's listing scope. Editing an existing workflow does not require approval (unlike create_workflow).
- Idempotent
Inputs
workflow_idstringrequired- The unique identifier of the workflow to update.
descriptionstring- New description for the workflow.
enabledstring- Enable or disable the workflow.
listing_idsstring- Replacement list of listing IDs to scope the workflow to.
namestring- New name for the workflow.
stepsstring- Replacement list for the workflow's entire step list.
trigger_configstring- New configuration object for the trigger.
trigger_typestring- New trigger type for the workflow.
No tools match.