Airbnb Gateway
A skill for safe, coherent Airbnb operations in OpenClaw-style agent environments. It standardizes how agents check inbox threads, inspect reservations and b...
Rank
62
Safety
84
Downloads
1.1k
Updated
Oct 11, 2026
Version
0.2.1
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 0.2.1release · observed Jul 9, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17b5fr2wfb8eecm8nk9kswmtd87hw31:airbnb-gateway- Install using `clawhub skill install s17b5fr2wfb8eecm8nk9kswmtd87hw31:airbnb-gateway` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/jason-vaughan/airbnb-gateway before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-jason-vaughan-airbnb-gateway/snapshot"
Documentation
CLAWHUB
147,943 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- name: airbnb-gateway description: > A skill for safe, coherent Airbnb operations in OpenClaw-style agent environments. It standardizes how agents check inbox threads, inspect reservations and booking state, review calendar context, draft guest replies, send messages safely, verify whether a send actually appeared in the live Airbnb thread, and make operator-approved, per-operation, independently-verified calendar mutations (block/open dates, nightly price). It teaches a strict operating model: prefer Airbnb-native endpoints before generic browser automation; treat send acknowledgments as attempted, not automatically confirmed; verify outbound messages in the live thread UI before declaring success; and never auto-resend from ambiguous or unconfirmed state. Designed to reduce duplicate messages, normalize agent behavior, and provide a safer foundation for Airbnb messaging, bookings, and calendar workflows — useful standalone today and as a companion to a more formal Airbnb adapter/tool layer tomorrow. version: 0.2.1 risk: write-gated tags: [airbnb, vacation-rental, messaging, operations, openclaw] license: MIT homepage: "" maintainer: "" --- # airbnb-gateway > ⭐ **Find this skill useful?** If `airbnb-gateway` saves you time, please > **star it** (the ⭐ at the top of this ClawHub page) — stars help other rental > operators discover it and keep it maintained. Thank you! You are operating a live, revenue-bearing Airbnb account on behalf of a real host. Guests are real people. A duplicate message, a wrong send, or a careless calendar change has real consequences. This skill exists so that **every agent handles Airbnb identically and safely**, instead of improvising tool calls per turn. > **Portability note.** This skill is environment-agnostic. It refers to tool > *roles* (an "Airbnb messages endpoint", an "agent-browser", a "DevTools > bridge", a "Playwright fallback") rather than hard-coded URLs. Your concrete > tool names live in `references/airbnb-tool-priority.md` — edit that one file > to map roles to the actual tools in your deployment. Everything else here is > universal. --- ## THE FIVE LAWS (non-negotiable) 1. **Platform-first.** Always try the first-class Airbnb endpoint for an operation before any browser automation. Browser weirdness is NOT evidence that Airbnb access is down. 2. **Read before write.** Never send a reply without first reading the live thread in the *same* operation. 3. **`sent: true` is `attempted`, not `confirmed`.** An endpoint success proves the call returned — not that the guest can see the message. You MUST re-read the thread and SEE the outbound message before marking `confirmed`. 4. **Never auto-resend an `unconfirmed` send.** Duplicate guest messages are worse than a late reply. Escalate to a human instead. 5. **Writes gate; mutations gate harder.** Sending a message is approval-gated. Calendar mutations (nightly price, block/open dates) are permitted ONLY
README.md
# airbnb-gateway
A reusable OpenClaw / Codex-style **skill package** for safe, coherent,
end-to-end Airbnb host operations: inbox checks, thread reading, reservation
lookup, booking summaries, calendar inspection, draft replies, **verified**
message sending, and disciplined escalation.
> ⭐ **Find this useful?** If `airbnb-gateway` saves you time, please **star it on ClawHub** — stars help other operators discover it and keep it maintained. Thank you!
It does not add transport. It orchestrates whatever Airbnb tooling your
environment already has — first-class Airbnb endpoints, agent-browser, DevTools,
Playwright — behind one consistent operating model so multiple agents behave
identically and never duplicate a guest message.
## Why this exists
Two reliability lessons are baked into the design:
1. **Browser weirdness ≠ Airbnb down.** Auth is host-owned; prefer platform-aware
endpoints before generic browser automation.
2. **`sent: true` ≠ delivered.** A send is only `confirmed` after re-reading the
live thread and *seeing* the message. Endpoint success is just `attempted`,
and an `unconfirmed` send is **never** auto-resent.
## Install / use
1. Drop `skills/airbnb-gateway/` into your skills library.
2. Edit **`references/airbnb-tool-priority.md`** — map the abstract tool roles to
the real tool names in your deployment. This is the only required
customization.
3. (Optional) Set your approval policy and wire a persistent send ledger.
4. Point your agents at the skill. They should speak only in the command verbs
(`check_inbox`, `read_thread`, `send_reply`, …) and never call low-level
Airbnb tools directly.
## What's portable vs. deployment-specific
| Portable (don't fork) | Deployment-specific (customize) |
|---|---|
| The Five Laws | role → tool name map |
| Send state machine | approval policy |
| Safety tiers (READ/WRITE/MUTATE) | persistent ledger wiring |
| Command vocabulary | example payload shapes |
## Layout
```
airbnb-gateway/
├── SKILL.md # the operating contract (start here)
├── README.md # this file
├── CHANGELOG.md
├── LICENSE
├── references/
│ ├── airbnb-tool-priority.md # ← customize per deployment
│ ├── airbnb-message-state-machine.md # universal
│ ├── airbnb-safety-rules.md # universal
│ └── future-adapter-interface.md # how to pair with a code adapter later
├── examples/
│ ├── check-inbox.md
│ ├── read-thread.md
│ ├── send-reply-with-verification.md # the critical path
│ ├── reservation-lookup.md
│ └── calendar-inspection.md
└── state/
└── send-log.schema.json # append-only dedupe ledger schema
```
## Status
v0.2.x — read operations, verified single-send, and **approval-gated calendar
mutations** (block/open dates, nightly price) under an explicit per-operation
approval gate with mandatory fresh-load verification (tier MUTATE-CAL). Listing
edits, accept/decline, and refunds rema_meta.json
{
"ownerId": "kn77gtjzdkfywnsbs5f349wjxd87hb0x",
"slug": "airbnb-gateway",
"version": "0.2.1",
"publishedAt": 1783632040243
}references/airbnb-message-state-machine.md
# Reference — Airbnb message send state machine
This is the authoritative definition of the send discipline. `SKILL.md` carries
the operational summary; this file carries the full machine, timings, and edge
cases. **This logic is universal — do not fork it per deployment.**
## States
| State | Meaning | Terminal? |
|---|---|---|
| `drafted` | Reply text composed, thread + dedupe-key recorded. Nothing sent yet. | no |
| `attempted` | Send endpoint called exactly once and returned. **Delivery NOT proven.** | no |
| `confirmed` | Outbound message verified visibly present in the live thread. | yes ✅ |
| `unconfirmed` | Send returned but the message could not be seen after the verify window. | yes ⚠️ |
| `failed` | The send call itself errored (4xx/5xx/timeout). | yes ❌ |
## Transitions
```
approval (if required) send endpoint
drafted ───────────────────────► (ready) ───── exactly once ─────► attempted
│
re-read same thread │
┌──────────────────────────────┤
│ │
visible ◄─────┘ └─────► call errored
│ │
▼ ▼
confirmed ✅ failed ❌
│
absent after verify window │
│ │
▼ ▼
unconfirmed ⚠️ ◄──────── (treat like) ──────────── re-read thread
│ │
└──────────► ESCALATE. No automatic resend. ◄─────────┘
```
## The dedupe-key
`dedupe_key = hash(thread_id + "\n" + normalize(draft_text))`
`normalize` = trim, collapse internal whitespace, lowercase. The key makes "the
same reply to the same thread" idempotent regardless of retries.
## The ledger (duplicate-prevention backbone)
An append-only record, ideally persisted (survives restarts). One row per
`attempted`:
```json
{
"dedupe_key": "…",
"thread_id": "…",
"attempted_at": "ISO-8601",
"final_state": "confirmed | unconfirmed | failed",
"verified_at": "ISO-8601 | null",
"operator": "agent-id | human-id"
}
```
Rules:
- Write the row at `attempted`, **before** verifying. A crash between send and
verify must never look like "never sent."
- Before any new send, check the ledger for the dedupe-key:
- `confirmedreferences/airbnb-safety-rules.md
# Reference — Airbnb safety rules The portable safety contract. Universal — do not weaken per deployment. The only deployment-specific knob is the **approval policy** (who approves, and whether approval is required for sends). ## Operation tiers | Tier | Definition | Examples | Default gate | |---|---|---|---| | **READ** | Cannot change anything a guest or the host can see. | check inbox, read thread, lookup reservation, booking summary, inspect calendar, verify a sent message | None — proceed. | | **WRITE** | Produces something a guest sees, but bounded & verifiable. | send a guest reply | Approval (if configured) **+ mandatory verify**. | | **MUTATE-CAL** | Affects availability or pricing on the live listing; hard to reverse. | change nightly price, block/open calendar dates | **Explicit per-operation operator approval** (APPROVED keyword, one op per approval) **+ mandatory fresh-load verify + reported inverse.** See `calendar-mutation-procedure.md`. | | **MUTATE-RESTRICTED** | Affects listing content, booking decisions, or money movement; effectively irreversible. | edit listing, accept/decline a booking, issue a refund, payouts | **Not implemented — refuse + escalate.** (Each would get its own gated workflow before ever being enabled.) | Classify every operation into exactly one tier *before* acting. If an operation spans tiers, split it; never let a READ workflow quietly perform a WRITE. ## Approval gate (WRITE) - Per-message, never standing. One approval authorizes exactly one send of one draft to one thread. - Present to the approver: the target thread id, the last inbound guest message, and the full draft text. Wait for explicit "go". - Deployment policy decides whether approval is *required*. Safe default: required for all guest-facing sends. If disabled, verification is still mandatory. ## Irreversibility boundary Treat everything a guest can see, and anything touching money or availability, as irreversible in practice. You cannot reliably "unsend". This is why: - WRITE ops always verify after the fact. - MUTATE-CAL ops (calendar/price) run only under explicit per-operation approval and are fresh-load verified after — never attempted optimistically. - MUTATE-RESTRICTED ops (listing edits, accept/decline, refunds, payouts) are refused outright rather than attempted. ## Ambiguous state — the default is caution | Ambiguity | Action | |---|---| | Can't tell if a send landed | `unconfirmed`. Do NOT resend. Escalate. | | Two read paths disagree on a material fact (dates, guest count, price) | Report BOTH, flag the discrepancy, escalate. Do not silently pick one. | | Browser identity health unclear | Check the browser health role; if unhealthy, escalate rather than assuming. | | Ledger state unknown after restart | Verify by reading the live thread before any send. | ## Escalate to a human when - A send reaches `unconfirmed` or `failed`. - You are asked to perform any MUTATE-RESTRICTED operation, or a MUTATE-CAL opera
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/jason-vaughan/skills/airbnb-gateway",
"sourceUrl": "https://clawhub.ai/jason-vaughan/skills/airbnb-gateway",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T07:49:16.466Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-jason-vaughan-airbnb-gateway/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-jason-vaughan-airbnb-gateway/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T07:49:16.466Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.1K downloads",
"href": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceUrl": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T07:49:16.466Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "0.2.1",
"href": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceUrl": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-09T21:20:40.243Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-jason-vaughan-airbnb-gateway/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-jason-vaughan-airbnb-gateway/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 0.2.1",
"description": "v0.2.1 — doc-consistency + safety patch (resolves SkillSpector findings): reconciled stale v1 'calendar read-only/reserved-for-v2' language to the v0.2 MUTATE-CAL (approval-gated) vs MUTATE-RESTRICTED (refused) split across all files; added a prominent 'changes live production inventory' warning to the calendar-mutation procedure. No behavior change.",
"href": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceUrl": "https://clawhub.ai/jason-vaughan/airbnb-gateway",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-09T21:20:40.243Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
