Hostfully MCP by usefulapi
Check properties, calendars, leads, quotes, guests and messages in Hostfully, and send replies.
Should I use this
Quality & Safety
Findings (1)
- LOWin hostfully_get_property_calendar
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"hostfully": {
"url": "https://hostfully.usefulapi.io/mcp"
}
}
}Remote endpoints
https://hostfully.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (20)
🟢hostfully_list_agencies
List the agencies this API key can access, with their UIDs, currency and default check-in/out times. Start here to find the agency_uid other tools need. Hostfully: GET /api/v3.3/agencies.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_properties(agency_uid, updated_since, limit, cursor)
List an agency's properties (rentals) with name, address, type, bedrooms, active flag and pricing/availability settings. Cursor-paginated. Hostfully: GET /api/v3.3/properties.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"updated_since": {
"description": "Only records updated since this UTC time, e.g. 2026-04-20T11:52:36.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor from the previous page's _paging._nextCursor. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_get_property(property_uid)
Fetch one property's full details — address, time zone, rooms, pricing and availability settings, channel data, booking notes and cancellation policy. Hostfully: GET /api/v3.3/properties/{propertyUid}.
Input Schema
{
"type": "object",
"properties": {
"property_uid": {
"type": "string",
"description": "The property's UID."
}
},
"required": [
"property_uid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_get_property_calendar(property_uid, from, to, availability_comments)
Day-by-day availability and pricing for one property over a date range — the direct answer to 'is it free, and at what price?'. Hostfully: GET /api/v3.3/property-calendar/{propertyUid}.
Input Schema
{
"type": "object",
"properties": {
"property_uid": {
"type": "string",
"description": "The property's UID."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day (YYYY-MM-DD)."
},
"availability_comments": {
"description": "Include availability comments.",
"type": "boolean"
}
},
"required": [
"property_uid",
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_get_pricing_periods(property_uid, from, to)
The nightly price, minimum stay and check-in/check-out availability set for each date of one property over a range. Hostfully: GET /api/v3.3/pricing-periods.
Input Schema
{
"type": "object",
"properties": {
"property_uid": {
"type": "string",
"description": "The property's UID."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First day (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last day (YYYY-MM-DD)."
}
},
"required": [
"property_uid",
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_search_leads(agency_uid, property_uid, lead_uids, check_in_from, check_in_to, ...)
Search leads — Hostfully's word for bookings, inquiries, booking requests and calendar blocks — by agency, property or UIDs, and by check-in/check-out date. Returns status, type, channel, dates and guest info. Give at least one of agency_uid (or the default), property_uid, or lead_uids. Cursor-paginated. Hostfully: GET /api/v3.3/leads.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"property_uid": {
"description": "Only leads for this property.",
"type": "string"
},
"lead_uids": {
"description": "Only these lead UIDs.",
"type": "array",
"items": {
"type": "string"
}
},
"check_in_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-in on or after (YYYY-MM-DD)."
},
"check_in_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-in on or before (YYYY-MM-DD)."
},
"check_out_from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-out on or after (YYYY-MM-DD)."
},
"check_out_to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-out on or before (YYYY-MM-DD)."
},
"updated_since": {
"description": "Only records updated since this UTC time, e.g. 2026-04-20T11:52:36.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor from the previous page's _paging._nextCursor. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_get_lead(lead_uid)
Fetch one lead (booking, inquiry, booking request or block) by UID — status, channel, dates, guest information, notes and assignee. Hostfully: GET /api/v3.3/leads/{leadUid}.
Input Schema
{
"type": "object",
"properties": {
"lead_uid": {
"type": "string",
"description": "The lead's UID."
}
},
"required": [
"lead_uid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_calculate_quote(agency_uid, property_uid, check_in_date, check_out_date, guests, ...)
Price a prospective stay at one property: rent, fees, taxes, security deposit and total for the given dates and party. Computes only — creates nothing. Hostfully: POST /api/v3.3/quotes.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"property_uid": {
"type": "string",
"description": "The property's UID."
},
"check_in_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-in date (YYYY-MM-DD)."
},
"check_out_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-out date (YYYY-MM-DD)."
},
"guests": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "Number of guests."
},
"children_count": {
"description": "Children among the guests.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"pet_count": {
"description": "Number of pets.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"lead_uid": {
"description": "Quote in the context of an existing lead.",
"type": "string"
}
},
"required": [
"property_uid",
"check_in_date",
"check_out_date",
"guests"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_orders(lead_uid, property_uid, guest_uid, updated_since)
List orders — the money side of a booking: rent, fees, services, adjustments, taxes, channel commission and total. Filter by lead, property, guest or update time (at least one is required). Hostfully: GET /api/v3.3/orders.
Input Schema
{
"type": "object",
"properties": {
"lead_uid": {
"description": "Only the order of this lead.",
"type": "string"
},
"property_uid": {
"description": "Only orders for this property.",
"type": "string"
},
"guest_uid": {
"description": "Only orders of this guest.",
"type": "string"
},
"updated_since": {
"description": "Only records updated since this UTC time, e.g. 2026-04-20T11:52:36.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_threads(agency_uid, lead_uid, limit, cursor)
List guest-messaging threads for an agency or one lead, with participants and read status. Give lead_uid, or agency_uid (or the default). Cursor-paginated. Hostfully: GET /api/v3.3/threads.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"lead_uid": {
"type": "string"
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor from the previous page's _paging._nextCursor. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_messages(agency_uid, thread_uid, lead_uid, created_at, limit, ...)
Read guest messages (Airbnb, VRBO, Booking.com, email, SMS, WhatsApp, in-app) for a lead, a thread or a whole agency, with sender type, status and content. Give lead_uid, thread_uid, or agency_uid (or the default). Cursor-paginated. Hostfully: GET /api/v3.3/messages.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"thread_uid": {
"description": "Only messages in this thread.",
"type": "string"
},
"lead_uid": {
"description": "Only messages about this lead.",
"type": "string"
},
"created_at": {
"description": "Creation-date filter, ISO date-time, e.g. 2026-04-20T11:52:36Z.",
"type": "string"
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor from the previous page's _paging._nextCursor. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_guests(agency_uid)
List the agency's guest records — names, email, phone, address and profile notes. Hostfully: GET /api/v3.3/guests/{agencyUid}.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_jobs(from, to, property_uids, statuses, modified_since)
List operational jobs (cleanings, greetings, maintenance and other services) scheduled in a date window, optionally for given properties and statuses, sorted by start date. Hostfully: GET /api/v3.3/jobs.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Window start (YYYY-MM-DD)."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Window end (YYYY-MM-DD)."
},
"property_uids": {
"description": "Only jobs at these properties.",
"type": "array",
"items": {
"type": "string"
}
},
"statuses": {
"description": "Only jobs in these statuses.",
"type": "array",
"items": {
"type": "string",
"enum": [
"NEW",
"SCHEDULED",
"DONE",
"CANCELLED"
]
}
},
"modified_since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only jobs modified on or after this date; Hostfully requires it, default 2000-01-01 (YYYY-MM-DD)."
}
},
"required": [
"from",
"to"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_services(agency_uid, service_provider_uid, catered_to)
List the services an agency offers or schedules (cleaning, transportation, greeting, cooking, tours ...), with provider, price and duration. A service UID is what hostfully_create_job needs. Hostfully: GET /api/v3.3/services.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"service_provider_uid": {
"description": "Only services of this provider.",
"type": "string"
},
"catered_to": {
"description": "Who the service is for.",
"type": "string",
"enum": [
"GUEST",
"HOST",
"BOTH"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_reviews(property_uid, lead_uid, source, sort, sort_direction, ...)
List guest reviews for a property or a lead — rating, title, content, source, private feedback and the host response. Cursor-paginated. Hostfully: GET /api/v3.3/reviews.
Input Schema
{
"type": "object",
"properties": {
"property_uid": {
"description": "Reviews of this property.",
"type": "string"
},
"lead_uid": {
"description": "Reviews tied to this lead.",
"type": "string"
},
"source": {
"type": "string",
"enum": [
"BOOKING_DOT_COM",
"VRBO",
"FACEBOOK",
"TRIPADVISOR",
"REVYOOS",
"HOSTFULLY"
]
},
"sort": {
"type": "string",
"enum": [
"SORT_BY_RATING",
"SORT_BY_DATE",
"SORT_BY_AUTHOR"
]
},
"sort_direction": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
},
"updated_since": {
"description": "Only records updated since this UTC time, e.g. 2026-04-20T11:52:36.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"limit": {
"description": "Page size, 1-100.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor from the previous page's _paging._nextCursor. Omit for the first page.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢hostfully_list_owners(agency_uid, query)
List the agency's property owners — contact details, business name, commission rate and permissions — optionally filtered by a search string. Hostfully: GET /api/v3.3/owners.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"query": {
"description": "Free-text search over owners.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hostfully_create_lead(agency_uid, property_uid, status, check_in, check_out, ...)
Create a lead at one property: status BLOCKED puts an owner/maintenance block on the calendar; status NEW records a guest inquiry (which does not confirm a booking or take payment). Blocks can later be removed in Hostfully; inquiries go through the normal pipeline. Dates are local to the property. Hostfully: POST /api/v3.3/leads.
Input Schema
{
"type": "object",
"properties": {
"agency_uid": {
"description": "Agency UID. Defaults to HOSTFULLY_AGENCY_UID; hostfully_list_agencies lists the options.",
"type": "string"
},
"property_uid": {
"type": "string",
"description": "The property's UID."
},
"status": {
"type": "string",
"enum": [
"BLOCKED",
"NEW"
],
"description": "BLOCKED = calendar block, NEW = inquiry."
},
"check_in": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$",
"description": "Check-in, property-local, YYYY-MM-DDTHH:MM:SS."
},
"check_out": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$",
"description": "Check-out, property-local, YYYY-MM-DDTHH:MM:SS."
},
"guest": {
"description": "Guest information — needed for an inquiry, usually omitted for a block.",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"email": {
"type": "string",
"description": "Guest email (Hostfully requires it when guest info is given)."
},
"secondaryEmail": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"cellPhoneNumber": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zipCode": {
"type": "string"
},
"countryCode": {
"description": "Two-letter country code, e.g. US.",
"type": "string"
},
"flightNumber": {
"type": "string"
},
"reasonForTrip": {
"type": "string"
},
"arrivalLocalDateTime": {
"description": "Expected arrival, YYYY-MM-DDTHH:MM:SS.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"departureLocalDateTime": {
"description": "Expected departure, YYYY-MM-DDTHH:MM:SS.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"adultCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"childrenCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"infantCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"petCount": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"email"
]
},
"notes": {
"description": "Notes on the lead.",
"type": "string"
},
"external_booking_id": {
"description": "Your own reference for this lead.",
"type": "string"
}
},
"required": [
"property_uid",
"status",
"check_in",
"check_out"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hostfully_update_lead(lead_uid, notes, extra_notes, guest)
Partially update a lead's notes, extra notes and guest details (name, contact, address, arrival/departure times). Does NOT change dates, party size, property or status. Hostfully may ignore personal-data fields the key is not allowed to edit. Hostfully: PATCH /api/v3.3/leads/{leadUid}.
Input Schema
{
"type": "object",
"properties": {
"lead_uid": {
"type": "string",
"description": "The lead's UID."
},
"notes": {
"type": "string"
},
"extra_notes": {
"type": "string"
},
"guest": {
"description": "Guest fields to change; omitted fields are kept.",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"email": {
"type": "string"
},
"secondaryEmail": {
"type": "string"
},
"phoneNumber": {
"type": "string"
},
"cellPhoneNumber": {
"type": "string"
},
"address1": {
"type": "string"
},
"address2": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"zipCode": {
"type": "string"
},
"countryCode": {
"description": "Two-letter country code, e.g. US.",
"type": "string"
},
"flightNumber": {
"type": "string"
},
"reasonForTrip": {
"type": "string"
},
"arrivalLocalDateTime": {
"description": "Expected arrival, YYYY-MM-DDTHH:MM:SS.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
},
"departureLocalDateTime": {
"description": "Expected departure, YYYY-MM-DDTHH:MM:SS.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$"
}
}
}
},
"required": [
"lead_uid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hostfully_send_message(lead_uid, type, text, subject, thread_uid)
Send a message to the guest of a lead, by EMAIL or as a DIRECT_MESSAGE on the booking channel (Airbnb, VRBO or Booking.com leads only). This reaches a real guest and cannot be unsent — confirm the text first. Hostfully: POST /api/v3.3/messages.
Input Schema
{
"type": "object",
"properties": {
"lead_uid": {
"type": "string",
"description": "The lead whose guest receives the message."
},
"type": {
"type": "string",
"enum": [
"EMAIL",
"DIRECT_MESSAGE"
],
"description": "EMAIL, or DIRECT_MESSAGE via the channel."
},
"text": {
"type": "string",
"minLength": 1,
"description": "The message body."
},
"subject": {
"description": "Subject line (email).",
"type": "string"
},
"thread_uid": {
"description": "Post into this existing thread.",
"type": "string"
}
},
"required": [
"lead_uid",
"type",
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴hostfully_create_job(property_uid, service_uid, start, end, status, ...)
Schedule a job (e.g. a cleaning or a guest greeting) for a service at a property, optionally tied to a lead. Times are property-local. hostfully_list_services gives the service UID. Hostfully: POST /api/v3.3/jobs.
Input Schema
{
"type": "object",
"properties": {
"property_uid": {
"type": "string",
"description": "The property's UID."
},
"service_uid": {
"type": "string",
"description": "The service's UID."
},
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$",
"description": "Start, YYYY-MM-DDTHH:MM:SS."
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$",
"description": "End, YYYY-MM-DDTHH:MM:SS."
},
"status": {
"description": "Initial status; default NEW.",
"type": "string",
"enum": [
"NEW",
"SCHEDULED"
]
},
"lead_uid": {
"description": "The booking this job serves.",
"type": "string"
},
"notes": {
"type": "string"
}
},
"required": [
"property_uid",
"service_uid",
"start",
"end"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence