Skip to content

Scopes & permissions

The hejGuide MCP server exposes 30 OAuth scopes. Each scope maps to a hejGuide plan module — the consent screen filters out scopes that the host's plan doesn't support, so tokens are minted only for what's actually usable.

Scope catalog

ScopeDisplay nameWhat it unlocksPlan moduleFlags
reports:readView reportsRead revenue, occupancy and other KPIsbookings
bookings:readRead bookingsRead details of upcoming and existing bookingsbookings
listings:readRead listingsRead property details and amenitiesmcp_access
rates:readRead ratesRead daily rates and min-stay restrictionsrates
messages:readRead messagesRead inbox and threadsmessages
messages:write_draftCreate message draftsCreate draft messages (never auto-sends)messagesWRITE
reviews:readRead reviewsRead guest reviews and host replieschannels
reviews:write_draftCreate review draftsCreate draft review replies (never auto-publishes)channelsWRITE
tasks:readRead tasksRead operational and housekeeping taskstasks
tasks:writeEdit tasksAdd notes, update status, report issuestasksWRITE
guidebook:readRead guidebookRead pages and welcome content of the guidebookguidebooks
guidebook:writeEdit guidebookCreate and edit guidebook pagesguidebooksWRITE
places:readRead placesRead tips and recommendations in the local guideguidebooks
places:writeEdit placesCreate and edit places in the local guideguidebooksWRITE
team:readRead team chatRead internal messages between you and your teammessages
team:write_messageSend team chatSend internal messages to team members (instant, no draft)messagesWRITE
guests:readRead guest info (masked)Read first name and last initial of guestsbookings
guests:read_piiView guest PIIRead guest email and phone — limited 50/daybookingsPII
automations:readRead automated messagesSee which journey messages are on, their timing, content, and what's queuedemails
bookings:write_importImport bookingsImport past/manual bookings into hejGuidebookingsWRITE
housekeeping:readRead cleaning checklistsSee cleaning checklist templates: name, type, listing and item countstasks
housekeeping:writeManage cleaning checklistsCreate and delete cleaning checklist templates with sections and itemstasksWRITE
locks:readRead smart locksSee connected locks, battery/online status and door-code status (without the code itself)smart_locks
locks:read_codesReveal door codesRetrieve the actual door code for a booking; every reveal is auditedsmart_locksPII
products:readRead productsSee your product/extras catalogue with prices and channel settingsproducts
products:writeAdd products to bookingsPut catalogue products on a booking's bill (no payment, nothing sent to the guest)productsWRITE
reports:writeMark smart insights as doneMark AI tips as done or not relevant so they don't resurfacebookingsWRITE
website:readRead booking websiteSee your booking sites' and collections' settings and copy, including domain diagnosticsdirect_booking
website:writePropose website copyPropose new booking-site copy; you review every proposal in the editor before it goes livedirect_bookingWRITE
help:readSearch help articlesSearch help.hejguide.commcp_access

The PII gate

Scopes flagged PII reveal raw guest email / phone / full name on demand. Even when the host has granted the scope, every individual call to a PII-revealing tool requires:

  • include_pii: true in the tool arguments
  • A reason from a fixed enum: phone_check, email_check, invoice, address_check, investigation, other
  • When reason='other', an additional reason_detail of ≥10 characters

Every unmask is sync-audited with the reason, the client name, and the resolved guest hash. Hard cap: 50 unmasks per account per UTC day. When the budget is reached, the tool throws rate_limit and the host can either wait until midnight UTC or contact support.

locks:read_codes is a separate reveal-path with the same flag: the actual door code is never returned by the list tools — a client must pass include_code: true to get it, and every reveal is sync-audited to the lock audit log (the PIN is stored as a SHA-256 hash, never in plaintext). It does not consume from the 50/day guest-unmask budget.

Plan-module gating

A scope is only usable if the host's active plan includes its module key (or has the * wildcard). At consent time we show requested scopes the plan doesn't support under "Not available on your current plan", but we never grant them — even if the AI client asked for them.

The consent screen renders scope toggles with GDPR-friendly defaults — PII-sensitive scopes start in the off position so the host has to deliberately opt in. Non-PII writes (drafts, task edits) default on since draft content never leaves hejGuide until the host clicks Send.

A note on writes to guest-facing content

guidebook:write and places:write are different from messages:write_draft / reviews:write_draft / tasks:write. Guidebook pages and places with is_published=true are immediately visible to guests on the guest portal — there's no separate "send" step. The AI can also unpublish (is_published=false) to hide a page from guests without deleting it. Hosts should grant these scopes only to clients they trust with the published-to-guests surface.

A note on team-chat writes

team:write_message also has no draft step — calling team.send_message delivers an internal message to your team members instantly, just like clicking Send in the dashboard's team-chat panel. There is no team:write_draft scope. If you want a preview step before sending, ask the AI to read the body back to you first and then explicitly approve the send.

hejGuide Property Management System