Connect autonomous AI agents, bookkeeping assistants, and custom integrations to your GuestKie workspace with fine-grained cryptographic scopes and real-time ledger tools.
The GuestKie MCP server implements the 2026-07-28 revision of the Model Context Protocol over stateless Streamable HTTP.
In protocol version 2026-07-28, there are no persistent session IDs, no initialize handshakes, and no ping notifications. Every JSON-RPC request is authenticated and evaluated independently via HTTP POST. Handshake methods such as initialize and ping return -32601 Method not found.
Every POST request to /mcp must declare routing headers:
| Header | Required For | Description / Example |
|---|---|---|
| MCP-Protocol-Version | All requests | Must equal 2026-07-28. Mismatches return -32022. |
| Mcp-Method | All requests | Must match the body's method field (e.g. tools/list, tools/call). |
| Mcp-Name | tools/call | Must match params.name. ASCII or Base64 encoded. |
| Mcp-Profile | Optional | Selects a tool profile (e.g. bookkeeper). |
_meta in Request Body
Every request payload must include client capabilities and protocol version within params._meta:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
} The GuestKie MCP server supports two distinct authorization pathways: long-lived tenant bearer tokens and standards-compliant OAuth 2.1 authorization code flows with PKCE.
Minted directly from the GuestKie Dashboard under Integrations > MCP.
gkmcp_... (40 base32 characters).Authorization: Bearer gkmcp_...Full dynamic client registration and token exchange per RFC 7636 and RFC 8707.
gkmcp-oauth_... (1-hour TTL).gkmcp-refresh_... (90-day TTL)./.well-known/oauth-protected-resource401 Unauthorized with a WWW-Authenticate challenge containing resource_metadata and available scopes. Requests with valid tokens attempting tools outside their granted scopes return 403 Forbidden with error="insufficient_scope".
GuestKie strictly enforces least-privilege advertising. When a client requests tools/list:
wired: false) are hidden by default. They can be inspected by passing includeUnwired: true in the request params.${module}_${action} (e.g. reservations_list_reservations, properties_list_properties). Legacy short aliases (list_reservations, get_reservation) are hidden from the catalog by default to eliminate duplicates, but remain callable via tools/call for one release.| Scope | Tier | Description |
|---|---|---|
| read:reservations | Read | Reservations, properties, guests, unified transactions, deposits, and billing summaries. |
| write:reservations | Write | Update reservation details, cancellation, guest registration, check-in time changes. |
| read:guidebook | Read | List and read guest guidebook sections and house rules. |
| write:guidebook | Write | Create, update, reorder, or delete guidebook sections. |
| read:upsells | Read | List configured Stay Extras (early check-in, pool heat, pet fees). |
| write:upsells | Write | Create and manage Stay Extras offerings. |
| read:locks | Read | List smart locks and access code slot statuses. |
| write:locks | Write | Push or revoke door lock codes. |
| read:messages | Read | Read guest-host communication threads and inquiry messages. |
| write:messages | Write | Enqueue host replies into reservation message threads. |
| read:devices | Read | Read device status, sensor readings, and noise level aggregations. |
| write:devices | Write | Control thermostats, noise alert configs, and smart automation rules. |
| write:billing | Restricted | Pause or resume tenant payment processing. Requires confirmation parameter. |
For accounting, tax reconciliation, and bookkeeping clients, the 687-tool full catalog is noisy and unneeded. GuestKie provides a dedicated Bookkeeper Profile (bookkeeper) that curates a strictly read-only catalog under 80 tools with zero write-scoped tools.
"profile": "bookkeeper" in the tools/list request params: { "method": "tools/list", "params": { "profile": "bookkeeper" } }Mcp-Profile: bookkeeper"bookkeeper" in the dashboard| Tool Name | Scope | Function |
|---|---|---|
| reservations_list_reservations | read:reservations | Query reservations with optional date ranges, property ID, and status filters. |
| reservations_get_reservation | read:reservations | Fetch complete reservation financial details, guest count, and check-in/out times. |
| deposits_get_deposit_overview | read:reservations | Security deposit ledger: active holds, processed claims, waives, and refunds. |
| deposits_get_deposit_status | read:reservations | Fetch deposit authorization status and card hold IDs for a single reservation. |
| transactions_list_transactions_for_tenant | read:reservations | Unified transactions ledger covering Stripe deposits, upsells, direct bookings, and PMS host payouts. |
| transactions_get_transaction_summary_for_tenant | read:reservations | Aggregated totals of gross charges, fees, refunds, and net payouts across all properties. |
| transactions_get_transactions_for_reservation | read:reservations | Detailed itemized money flow transactions for a specific reservation code or ID. |
| billing_get_billing_summary | read:reservations | Summary of GuestKie SaaS subscription tier, active add-ons, and payment status. |
| billing_get_billing_history | read:reservations | Historical invoices and Stripe charge records for platform fees. |
| properties_list_properties | read:reservations | List property IDs, titles, timezones, and address metadata. |
GuestKie strictly enforces automated credential and secret redaction at all protocol boundaries. In alignment with GuestKie's access security policy:
Physical door lock PINs and electronic access credentials are only visible when the token possesses the explicit read:locks or write:locks scope. Read-only reservation or bookkeeper queries return access codes redacted as <redacted_pin> to prevent physical security leaks.
Stripe secret keys, webhook secrets, and customer payment method tokens (e.g. pm_..., src_...) are never returned in MCP query outputs. Responses contain itemized transaction amounts and currencies, but sensitive payment tokens remain on the secure payment gateway.
Third-party API keys (Hospitable JWTs, SmartThings bearer tokens, Seam client secrets) are completely inaccessible through the MCP tool catalog. MCP tools execute on behalf of the tenant using server-side isolated contexts without revealing provider tokens to the client.
server/discover)Request server identity, supported versions, and capabilities:
POST /mcp HTTP/1.1
Host: mcp.guestkie.com
Authorization: Bearer gkmcp_ABC123...
MCP-Protocol-Version: 2026-07-28
Mcp-Method: server/discover
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "server/discover",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
} Response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"resultType": "complete",
"supportedVersions": ["2026-07-28"],
"capabilities": { "tools": { "listChanged": false } },
"instructions": "GuestKie tenant MCP endpoint. Tools are scoped to the bearer token used to authenticate.",
"ttlMs": 3600000,
"cacheScope": "public",
"_meta": {
"io.modelcontextprotocol/serverInfo": {
"name": "guestkie-mcp",
"version": "0.1.0"
}
}
}
} tools/list)POST /mcp HTTP/1.1
Host: mcp.guestkie.com
Authorization: Bearer gkmcp_ABC123...
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/list
Mcp-Profile: bookkeeper
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {
"profile": "bookkeeper",
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
} tools/call)Calling transactions_list_transactions_for_tenant:
POST /mcp HTTP/1.1
Host: mcp.guestkie.com
Authorization: Bearer gkmcp_ABC123...
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: transactions_list_transactions_for_tenant
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "transactions_list_transactions_for_tenant",
"arguments": {
"limit": 50,
"source": "all"
},
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
} | Path | Methods | Auth | Description |
|---|---|---|---|
| /mcp | POST, OPTIONS | Bearer / OAuth | Main JSON-RPC endpoint for tools and discovery. |
| /mcp/info | GET | Public | Unauthenticated transport metadata and protocol version document. |
| /.well-known/oauth-protected-resource | GET | Public | RFC 8707 OAuth resource metadata and issuer identifier. |
| /oauth/register | POST | Public | RFC 7591 dynamic OAuth client registration. |
| /oauth/token | POST | Public (Client) | Authorization code exchange and refresh token rotation. |
| Code / Status | Error Name | Resolution |
|---|---|---|
| 401 Unauthorized | Invalid or Missing Token | Verify your Bearer token in the Authorization header or re-authenticate via OAuth. |
| 403 Forbidden | Insufficient Scope | The token lacks the required scope for this tool. Mint a new token with the scope specified in WWW-Authenticate. |
| -32022 | Unsupported Protocol Version | Ensure header MCP-Protocol-Version and _meta specify 2026-07-28. |
| -32020 | Header Mismatch | Ensure Mcp-Method matches method and Mcp-Name matches params.name. |
| -32601 | Method Not Found | The server does not implement legacy methods (initialize, ping). Use server/discover. |