Facebook Tracking Pixel

Use Claude With Your BetterSTR Account

The BetterSTR MCP connects Claude to your account so you can manage guidebooks, check reservations, text guests, watch your WiFi and export your guest marketing list by typing what you want in plain English.

MCP stands for Model Context Protocol, an open standard that lets an AI assistant use real tools. Our MCP is a small connector that runs on your computer, signs in to the BetterSTR User API with credentials you create, and gives Claude a set of tools it can call on your behalf. Claude does the work in your account instead of only describing how you might do it.

Set up in three steps

You need a BetterSTR account, Node.js 18 or newer on your machine, and either Claude Desktop or Claude Code. The whole thing takes about five minutes.

1
Create API credentials Open your profile and find the API Credentials section. Click New API Credentials, give the pair a name such as "Claude", and copy both values. The client id begins with bsc_ and the secret begins with bss_. The secret is only displayed once, so save it before you close the dialog. You can revoke a pair from the same page at any time.
2
Add the connector to Claude Desktop Open your Claude Desktop config file. On macOS it lives at ~/Library/Application Support/Claude/claude_desktop_config.json, on Windows at %APPDATA%\Claude\claude_desktop_config.json. Paste this in, replacing the two placeholder values with your credentials, then restart Claude Desktop.
{
  "mcpServers": {
    "betterstr": {
      "command": "npx",
      "args": ["-y", "@betterstr/claude-mcp"],
      "env": {
        "BETTERSTR_CLIENT_ID": "bsc_your_client_id",
        "BETTERSTR_CLIENT_SECRET": "bss_your_client_secret"
      }
    }
  }
}
The npx command downloads the connector the first time Claude starts it and caches it after that. Nothing else needs installing.
3
Or add it to Claude Code If you use Claude Code in the terminal, one command registers the connector for your user:
claude mcp add betterstr -- npx -y @betterstr/claude-mcp \
  --env BETTERSTR_CLIENT_ID=bsc_your_client_id \
  --env BETTERSTR_CLIENT_SECRET=bss_your_client_secret
Then start a new Claude Code session and ask it to list your properties. If it answers with your property names, everything is wired up.

Checking it works

In either app, type "List my BetterSTR properties". Claude should call the list_properties tool and come back with your active properties. If you see a credentials error, re-copy the secret from your profile. If the tools do not appear at all, confirm Node.js is installed by running node -v in a terminal.

Let Claude do the install

You do not have to touch a config file yourself. Once you have the two credentials from step 1, open Claude and ask it to set the connector up. Claude Desktop and Claude Code both know how to edit their own configuration and restart.

Paste this into Claude

Set up the BetterSTR MCP for me. The npm package is @betterstr/claude-mcp. Use client id bsc_your_client_id and client secret bss_your_client_secret, add it to your config, restart, and then list my properties to prove it works. Swap in your real values first. Claude writes the config entry, restarts itself, and confirms the tools are available.

Keeping the secret safe: the credentials only go into the config file on your own machine. If you would rather not paste a secret into a chat window, create a separate credential pair just for this, and revoke it later from your profile if you want.

What Claude can do

The connector currently exposes 24 tools. Below is each area with the kind of request that works well. You do not need to name the tool; describe what you want and Claude picks the right one.

Reservations

Read-only. Claude can search by date window, property, status, confirmation code or guest name.

Who is checking out of Surfers Paradise this weekend?Claude filters departures to the coming Saturday and Sunday at that property and lists the guests.
Compare my booking counts for June and July across every property.Two booking-date queries, then a short table with totals per property and the change between months.
Pull up the booking for confirmation code HMABC123.Works with either our internal id or the code the guest sees on their booking.

Payment links Stripe Connect

If your account has Stripe connected, Claude can produce a link a guest opens to pay an extra amount. Creating the link never charges anyone.

Make a 120 dollar late checkout link for the Nguyen family at 30c Snowmass, in the currency they booked in.Claude reads the reservation currency, generates the link and hands it back for you to send.

Guidebook entries

Your guidebook is a tree: a top-level menu, sub-menus under it, and content cards at the third level. Claude knows the structure and creates each level in order, showing you the plan first.

Add a "Rubbish and Recycling" card under House Rules on the Atiamuri guide. Collection is Tuesday, yellow bin is recycling.Claude finds the House Rules menu, proposes the new card, and creates it once you say yes.
Change the WiFi password in every guide tagged Ohakune to "snowday2026". Show me the entries before you edit them.A tag-wide edit. Claude lists each matching entry first so you can check nothing unexpected is included.
Remove the "Live Camera" section from 30d Snowmass.Deletes cascade to child entries, so Claude always asks once more before removing anything with children.

Map locations

Pins can belong to one property, a tag, or every property. Claude looks the place up on Google first and confirms the details with you before saving.

Pin the nearest hospital to the Gold Coast apartment.Google Places search, then name, address, phone and a Maps link for you to approve.
Which of my pins have no website recorded?Claude lists your locations and filters client-side, so you can fix them in one pass.

SMS to guests Charged per message

Claude can text guests who hold a reservation on your account. It cannot text arbitrary numbers. Every send is quoted first, with the recipient list, segment count and total cost, and only goes out after you confirm.

Text everyone staying in Queenstown tonight that the road is closed at Frankton until 6pm.Claude resolves the properties, finds guests in residence with a valid phone number, quotes the cost and waits.
Send tomorrow's arrivals at Snowmass their guidebook link with a welcome note.Include the token {guide_link} in your message and the server swaps in each guest's short link.

Messages must use plain GSM characters, so no emoji. Anything sent to a reservation that has already checked out triggers an extra confirmation, even if you told Claude earlier not to ask.

WiFi status and control WiFi plan required

With a BetterSTR-managed WiFi plan (hosted UniFi, hosted Omada, or your own UniFi controller), Claude can read live network state and act on individual devices.

Is every access point at Hidden Hollow online right now?Live from your controller, cached for 30 seconds so follow-up questions are instant.
What is sitting on the guest portal at Snowmass without being authorised?Device names, MAC addresses, SSID and how recently each was seen.
Let the Sonos through on the guest network for a week.Claude confirms the device and duration, then authorises it.

WiFi guest marketing list New

Added September 2026. Everything your captive portal has collected, the same list you see under WiFi → Marketing in the members area, is now available to Claude through the list_wifi_guests tool and to any other software through the API.

This one does not need an active WiFi plan. The sign-ins were collected while your portal was running and they remain yours.

Each guest record carries the property, name, email, phone, whether they ticked the marketing opt-in, whether their email was verified, first and last sign-in (in your account timezone) and how many times they have connected. You can narrow the pull by property, by a date window on either the first or the latest sign-in, by opt-in status, or by a search term, and page through as many as you have.

Export all opted-in WiFi guests from Pointe Landing as a table with name, email and phone.Claude filters to that property and to guests who opted in, then formats the rows for you to paste into your mailing tool.
How many new guests signed in on my WiFi in August, per property?A first-seen window for the month, grouped by property, with the opt-in rate alongside.
Give me everyone who connected at any Ohakune property between 1 and 15 June.Claude resolves the tag to its properties and uses the latest-sign-in window.
Pull my whole guest list, keep going until you have every page, and save it as CSV.The tool returns up to 1,000 rows per call and tells Claude when more remain, so "all of them" really means all of them.
Which guests opened the verification email but never clicked the link?Useful for a gentle follow-up. Claude filters on the opened and verified flags.

Marketing consent

For anything you plan to email, Claude defaults to guests who ticked the marketing opt-in and tells you it did so. Ask explicitly if you want the full list for another reason, such as a lost-property notice.

Pulling the same data without Claude

The MCP is a thin layer over the BetterSTR User API, so anything Claude can read, your own scripts and automation tools can read too, with the same credentials. The guest list endpoint is the one most hosts ask about, because it feeds a CRM or email platform on a schedule.

curl -u "bsc_your_client_id:bss_your_client_secret" \
  "https://api.betterstr.com/user-api/v1/wifi/guests?marketing_opt_in=true&first_seen_from=2026-08-01&format=csv" \
  -o new_guests.csv
  • Zapier, Make, n8n: use an HTTP module with Basic auth on a daily schedule. Filter with first_seen_from set to your last run so each pull only brings new sign-ups.
  • ChatGPT: there is no ChatGPT connector, but a Custom GPT with an Action pointed at the same endpoint and Basic auth works, as does asking ChatGPT to write the Zapier step for you.
  • Spreadsheets: drop format=csv on the URL and import the file. The columns match the CSV export on the members page, with a property id column added at the end.
  • Anything else: JSON is the default, and the response includes has_more plus totals so you can page cleanly.

Machine-readable spec for AI tools and API importers

The whole API is described in an OpenAPI 3.1 document at api.betterstr.com/user-api/openapi.json. Point a ChatGPT Custom GPT Action, Zapier's API import, Postman, or any coding assistant at that URL and it gets every endpoint, parameter, response shape and error code without guessing. For ChatGPT: create a GPT, open Actions, choose Import from URL, paste the link, and set authentication to Basic with your client id as the username and secret as the password.

Prose documentation with worked examples is in the API README; the guest list endpoint is under WiFi.

Guard rails

Because the connector edits live guidebooks and sends real messages, it is deliberately cautious.

  • It asks which one you meant. Say "Snowmass" when you own five Snowmass units and Claude lists them and waits, rather than guessing.
  • It shows the plan before writing. Creates, edits and deletes are summarised first: the target, the change, and how many properties it touches. Say "go ahead without asking" per request, or "stop confirming for this session", to skip the check.
  • Deletes and multi-row changes always re-confirm. Even after blanket consent.
  • SMS is quoted, never fired blind. Recipients, cost and segments come back first. Guests can reply STOP and are excluded from future sends automatically.
  • Guest data is treated as personal information. Claude uses it for the task you gave it and does not volunteer it elsewhere.
  • Rate limits apply per credential. Reservation and Google Places lookups have their own smaller buckets. Premium accounts get higher limits that scale with property count.

Which parts need a paid plan

Most tools work on a free account. Google Places search and place details need Guidebook Premium, because each lookup costs us a Google request; you can still add pins by giving coordinates. WiFi status and device control need a BetterSTR WiFi plan. Payment links need Stripe connected. SMS is pay per message from your account balance.

Tool reference

For the curious, or for writing your own prompts. Names are what Claude sees; you can mention them directly if you want to force a particular tool.

ToolWhat it does
Properties and tags
list_propertiesActive properties with uuid, name, address, timezone and entry count. Filters: name or address text, city, country.
list_tags / get_tagYour property tags, and one tag with the properties it covers.
Guidebook entries
list_entriesTop-level menu or the children of one entry.
get_entryOne entry with its direct children.
create_entryAdd a menu, sub-menu or content card.
update_entryChange title, content, icon, parent, order or visibility.
delete_entryRemove an entry and everything under it.
Reservations
list_reservationsFilter by check-in, check-out or booking date, status, property or guest name.
get_reservationOne reservation by id or confirmation code.
generate_payment_linkA pay-now URL for an extra charge on a reservation.
send_smsQuote, then send, a text to guests of chosen reservations.
Map locations
list_locationsPins, filterable by scope, property or tag.
search_places / get_placeGoogle Places lookup and details. Premium.
add_locationCreate a pin for a property, a tag or all properties.
update_locationEdit a pin, including moving it between scopes.
delete_locationRemove a pin.
WiFi
list_wifi_guests NewYour captive-portal guest list with name, email, phone, opt-in, verification and sign-in dates. Filter by property, date window, opt-in or search. No WiFi plan needed.
list_wifi_controllersYour controllers and the property each serves.
get_wifi_statusAccess points, client counts by SSID and unauthorised devices for one property.
list_wifi_clientsEvery connected client with filters for AP, SSID, wired and unauthorised.
authorize_wifi_clientLet a captive-portal device through for a set time.
kick_wifi_clientDisconnect a client. Always confirmed first.

Source code and issue tracker: gitlab.com/icepicknz/betterstr-claude-mcp. The npm package is @betterstr/claude-mcp. The original announcement is on our blog.

Troubleshooting and FAQ

Claude says the BetterSTR tools are not available

Restart Claude Desktop fully after editing the config file, and check the JSON has no trailing commas. In Claude Code, run claude mcp list to confirm the entry exists. Both apps need Node.js 18 or newer on the path.

I get "invalid_credentials" or "credentials_revoked"

The secret is shown once when you create the pair. If you lost it, create a new pair in your profile, update the config, and revoke the old one.

I hit a rate limit

The error tells you how many seconds to wait. Reservation and Google Places lookups have separate, smaller buckets. Guidebook Premium raises every limit and scales it with your property count.

Can I use this with ChatGPT or another assistant?

The connector speaks MCP over standard input and output, so any MCP-capable host can run it. ChatGPT does not run local MCP servers, but a Custom GPT Action can call the User API directly by importing openapi.json. See pulling the same data without Claude.

Is my data sent anywhere other than BetterSTR?

The connector only talks to api.betterstr.com. It has no analytics and stores nothing on disk. What Claude sees during a conversation is governed by your Anthropic plan and settings.

Can I limit what a credential is allowed to do?

Not yet. Each credential pair has full access to your account through the API, so treat the secret like a password. Create one pair per tool or teammate so you can revoke them individually.

Want Claude to do something it cannot yet?

Every new tool so far came from a host asking for it. Tell us the workflow and we will look at adding it.

Create API credentials