FoyerDevelopers

Generated · Live registry

inbox tools

6 tools in this domain, generated from the running registry.

All tool domains

inbox.accept_draft

writes

Approve an AI-generated draft, swapping aiLayer to 'manual' (operator chain-of-custody). For stay-bound conversations, delivers the message via the channel dispatcher (real outbound send + message.sent event) and removes the draft row. For loose threads (no stay), flips the draft to state=sent in place (flip-only, no delivery). Optional bodyOverride lets the operator edit the suggestion before sending.

Input parameters

FieldTypeRequiredNotes
draftIdstringyes
bodyOverridestringno

Output fields

FieldTypeRequiredNotes
messageIdstringyes
channelstringyes
deliveredbooleanyes

inbox.draft_reply

writes

Run the P2.2 AI pipeline (L0 sensitive / L1 rules / L2 LLM) for a given inbound message and persist a draft outbound message row. Returns the resulting draft. NOTE: This writes a draft (not pure read-only) — operators can then send it via inbox.accept_draft.

Input parameters

FieldTypeRequiredNotes
messageIdstringyes

Output fields

FieldTypeRequiredNotes
draftIdstring · nullableyes
bodystring · nullableyes
aiLayerstring · nullableyes
confidencenumber · nullableyes

inbox.list_by_stay

read-only

List all sent messages (inbound + outbound) for a stay's conversation, oldest-first. Excludes drafts. Read-only.

Input parameters

FieldTypeRequiredNotes
stayIdstringyes

Output fields

FieldTypeRequiredNotes
itemsarray of objectyes
items.messageIdstringyes
items.directionenumyesOne of: inbound, outbound
items.channelenumyesOne of: whatsapp, email, hospitable, voice, channex, beds24
items.senderstring · nullableyes
items.bodystring · nullableyes
items.aiLayerstring · nullableyes
items.sentAtstringyes

inbox.list_triage

read-only

Paginated triage feed of messages across the tenant, newest first. Cursor is the ISO timestamp of the last item from the previous page. filter='all' is the only meaningful value in v1; other values currently return the same data (filter logic lands in P2.2).

Input parameters

FieldTypeRequiredNotes
filterenumnoOne of: all, mine, sensitive, unanswered — Default: "all"
limitintegernoDefault: 25
cursorstringno

Output fields

FieldTypeRequiredNotes
itemsarray of objectyes
items.messageIdstringyes
items.conversationIdstringyes
items.channelstringyes
items.directionstringyes
items.senderstring · nullableyes
items.bodystring · nullableyes
items.sentAtstringyes
items.aiLayerstring · nullableyes
nextCursorstring · nullableyes

inbox.list_unanswered

read-only

List up to 50 inbound guest messages where no operator reply has been sent in the same conversation since the inbound. Newest-first. Read-only.

Input parameters

Returns object.

Output fields

FieldTypeRequiredNotes
itemsarray of objectyes
items.messageIdstringyes
items.conversationIdstringyes
items.stayIdstring · nullableyes
items.channelenumyesOne of: whatsapp, email, hospitable, voice, channex, beds24
items.senderstring · nullableyes
items.bodystring · nullableyes
items.sentAtstringyes

inbox.send_reply

writes

Send an outbound reply for a stay's conversation. Channel auto-resolves from the latest message in the thread (email/whatsapp/hospitable). Persists the outbound message and emits the message.sent webhook.

Input parameters

FieldTypeRequiredNotes
stayIdstringyes
bodystringyes

Output fields

FieldTypeRequiredNotes
messageIdstringyes
channelenumyesOne of: email, whatsapp, hospitable, beds24
conversationIdstringyes