Welcome AI agents — connect ProhostAI to Claude Desktop, Claude Code,
OpenAI Codex, or any MCP-compatible client over OAuth 2.1 or API key.
Recommended — OAuth (one command, sign in through
your browser, no API key to manage):
shell
claude mcp add --transport http prohostai https://connect.prohost.ai/mcp
Claude Code discovers OAuth via our
.well-known/oauth-protected-resource metadata, registers
itself dynamically (RFC 7591), and walks you through sign-in.
Alternative — API key (for scripts, CI, or
long-lived pinned keys). Add to .mcp.json in your
project root:
Recommended — OAuth via the
mcp-remote bridge. Add to
~/Library/Application Support/Claude/claude_desktop_config.json
and restart Claude Desktop — it opens a browser for sign-in on
first use:
Codex discovers OAuth via our
.well-known/oauth-protected-resource metadata, registers
itself dynamically (RFC 7591), and stores the tokens in
~/.codex/config.toml.
Streamable HTTP endpoint. Two auth methods are accepted — use
whichever fits your client.
endpoint
POST https://connect.prohost.ai/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
# Option A — OAuth 2.1 bearer token (recommended for interactive clients)
Authorization: Bearer <access_token>
# Option B — API key (recommended for scripts and CI)
X-API-Key: ph_live_YOUR_KEY
For MCP client authors: OAuth 2.1 with PKCE and
Dynamic Client Registration (RFC 7591) is fully supported. Start
from the protected-resource metadata (RFC 9728) — your client will
discover the authorization server, register itself, and run the
auth-code flow automatically:
discovery
GET https://connect.prohost.ai/.well-known/oauth-protected-resource
GET https://connect.prohost.ai/.well-known/oauth-authorization-server
⚡ Try asking: "What reservations check in today?" or
"Create a task to fix the AC at Beachfront Villa."
Available Tools 65 tools
assign_cleaning
Assign or unassign the primary cleaner on a cleaning.
block_dates
Block (mark unavailable) a list of dates on a listing's calendar.
bulk_assign_listing_tags
Assign every tag in ``tag_ids`` to every listing in ``listing_ids``.
bulk_delete_expenses
Delete multiple expenses by ID.
bulk_remove_listing_tags
Remove every tag in ``tag_ids`` from every listing in ``listing_ids``.
bulk_update_expenses
Update a common set of fields across multiple expenses in one call.
cancel_scheduled_message
Cancel a scheduled message that has not yet been sent.
create_cleaning
Schedule a new cleaning job for a listing.
create_expense_category
Create a new custom expense category for the account.
create_listing
Create a new manual property listing.
create_listing_tag
Create a new listing tag on the account.
create_task
Create a new task.
create_webhook_subscription
Create a webhook subscription.
delete_expense_category
Delete a custom expense category.
delete_listing_tag
Delete a listing tag and all of its assignments.
docs_append_section
Append a new heading-titled section to a doc.
docs_read
Read a Drive document by path or id.
docs_read_section
Read a single section of a doc by heading text.
docs_write
Replace a Drive document body.
docs_write_section
Replace a section's body.
draft_reply
Generate a non-persisting AI reply draft for a conversation.
drive_create
Create a Drive item (folder/doc/sheet).
drive_delete
Soft-delete a Drive item by path or id.
drive_get
Fetch a single Drive item by path or id.
drive_list
List children of a Drive folder by path.
drive_move
Move a Drive item to a new parent (by path).
drive_search
Search Drive items by name (case-insensitive substring).
get_availability
Get calendar availability for a listing over a date range.
get_conversation_messages
Get messages for a conversation.
get_dashboard_summary
Get a composite dashboard summary: today's check-ins/outs, pending tasks, unread conversations.
get_earnings_summary
Get earnings summary for a date range.
get_guidebook
Get guidebook content for a listing.
get_property_knowledge
Get all memories (property knowledge) for a listing, grouped by scope.
get_reservation
Get full details for a single reservation by ID.
list_expense_categories
List expense categories for the account.
list_listing_tags
List all listing tags on the account, optionally filtered by tag_type.
list_listings
List all listings (properties) for the account.
list_webhook_subscriptions
List active webhook subscriptions for the account.
publish_review_reply
Publish a previously-generated AI-authored review reply (an 'auto-review') to the upstream OTA.
schedule_message
Schedule a host message to be sent at a future time.
search_cleanings
Search cleanings.
search_conversations
Search conversations.
search_expenses
Search expenses.
search_owners
Search owners/investors.
search_reservations
Search and filter reservations.
search_reviews
Search guest reviews.
search_tasks
Search tasks.
send_message
Send a message in a conversation through the real delivery pipeline.
sheets_delete_row
Delete a row from a sheet by row id.
sheets_get
Fetch sheet metadata (row_count, schema) by path or id.
sheets_insert_rows
Bulk-insert rows into a sheet.
sheets_list
List sheets in the account.
sheets_query
Filter rows via a simple {column_id: value} equality DSL (like read_rows without sort).
sheets_read_rows
Read rows from a sheet.
sheets_schema
Fetch a sheet's column schema by path or id.
sheets_update_row
Partial-patch a row in a sheet by row id.
submit_feedback
Submit a bug report, feature request, or question to the ProhostAI team.
unblock_dates
Unblock (mark available) a list of dates on a listing's calendar.
update_calendar_days
Update price, availability, and/or minimum-stay for a listing's calendar.
update_cleaning_status
Transition a cleaning to a new status.
update_expense
Update fields on an existing expense.
update_expense_category
Rename an expense category.
update_listing_tag
Update one or more fields on an existing listing tag.
update_reservation
Update reservation notes.
update_task
Update a task's status, priority, description, or other fields.
Data & privacy
Tool calls only ever touch data the authenticated account can already see in
ProhostAI. OAuth scopes and listing-scoped API keys are enforced on every call.
See our privacy policy
for what we collect, how long we retain it, and how to request deletion.