Connectors
Connect Excellent to Claude
Last reviewed October 9, 2026
1. What the connector does
The Excellent connector lets Claude — or any assistant that speaks the Model Context Protocol (MCP) — answer questions from your restaurant group’s live Excellent data: events and bookings (one at a time in full, with its menu, contacts, payments and history), inbound leads, invoices and deposits, documents, rooms and when they are free, contacts, the marketing queue, an agenda of the coming days, one search across all of it, and the group events report with pace against your revenue goal. With draft access it can also stage a thank-you card, a social post or a guest email campaign into your review queues. It never publishes, sends, changes or deletes anything; a person on your team always approves first.
Amounts are returned in minor units (cents). Each connection sees exactly one organization — the one its person connected — and acts as that person: it can only read and draft what their role in Excellent allows.
2. Connecting
You need: an Excellent account on the team of the organization you want to connect. Anyone on the team can connect an assistant for themselves; it acts as them, with their role.
In Claude: open Settings → Connectors, find Excellent in the directory and choose Connect. (If you are adding it yourself as a custom connector, use the server URL https://beexcellent.ai/api/mcp.) Claude sends you to Excellent: sign in, review what the assistant is asking for, and choose Approve. You return to Claude connected. The approval card names the site Approve sends you back to — for Claude, claude.ai. If it names a site you didn’t just come from, choose Cancel: any app can call itself “Claude”, but only Claude returns you to claude.ai.
Access levels. Read lets the assistant answer questions from your data. Draft additionally lets it stage drafts for your review. You choose on the consent screen: read access is always included, and “Also allow drafts” is yours to tick or leave off.
Your role decides the rest. Whatever the access level, the assistant can do only what you can do in Excellent, checked on every call: reading needs only your seat on the team; drafting a thank-you card needs the events permission, and a social post or a campaign email the marketing permission. If your role changes, so does what the assistant can do, from its next call.
Other MCP clients. Clients that support MCP authorization connect the same way. For a client that only accepts a bearer token, you can mint a scoped, expiring token for yourself under Settings → AI assistant access in Excellent.
3. Tools
The connector exposes a fixed, reviewed set of tools. It has no free-form query tool and cannot run arbitrary database queries.
| Tool | Access | What it does |
|---|---|---|
Group overviewoverview | Read | Snapshot of this restaurant group: its locations (a count, and locationList: each location's id, name and is_sample flag — the ids draft_marketing_post's location argument takes), upcoming events (undated, or dated on or after today's UTC date), new leads, and the outstanding balance. The figures are computed like the report tool's: dataBasis and dataBasisNote state whether they count real records, sample (demo) records, or real records with sample rows set aside. |
List eventslist_events | Read | Events (bookings) with status, date, time window, party size, location and room. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
List leadslist_leads | Read | Inbound inquiries (leads) with contact info, status, requested date and party size. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
List invoiceslist_invoices | Read | Invoices with totals, deposit due, amount paid, and the linked event. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
List documentslist_documents | Read | Documents (proposals, BEOs, contracts, training content) with status and version. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
List rooms and spaceslist_spaces | Read | Bookable rooms/areas with capacity and location. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
List contactslist_contacts | Read | Contacts (hosts/clients) with reach info and event counts. Returns { rows, next_offset }: next_offset is null on the last reachable page; every row carries is_sample (true for sample/demo data). |
Get one eventget_event | Read | One event (booking) in full: its date, time window, party size, venue and rooms; its contacts (the host first, each with a role); the menu its documents state (the contract's, else the proposal's, and each BEO's, with any item they disagree on); its documents with status, signature and client total (price_tbc_count / total_is_partial say when that total leaves out lines still "Price to be confirmed"; rates_pending when no service charge, fees or tax rates are set yet, so total_minor is the subtotal — never quote a partial total as the whole price); its money (each invoice's total, paid and balance, its installments with what is still owed, and every payment); and a timeline — the inquiry, the booking, each change of stage or date, documents made and signed, invoices sent, payments. Amounts in minor units (cents); is_sample marks sample (demo) data. |
Room availabilityspace_availability | Read | What each bookable room holds on given venue days, and when it is free. Per room (optionally one location or one room): capacity and whether it fits party_size; the venue's open hours each day; everything in it — bookings (tentative, confirmed or completed), live holds and blocks, at the venue's local time; and the free stretches: open hours (the whole day when the venue has none on record) minus every timed booking padded by the room's turnover time, every hold and every block. A booking with a date but no time window is listed under untimed_bookings and not subtracted. Times read HH:MM at the venue (24:00 is midnight), each with its ISO instant. A free stretch is not a reservation: only a person books, in Excellent. |
Search recordssearch | Read | One search across this group's events, leads (inquiries), contacts, invoices, documents and rooms, matched the way the app's search boxes match: case- and accent-insensitive, and every word of the query must appear somewhere in the record (an event is found by its title, host, venue, rooms, party size or stage; a lead by name, email, phone or event type). Exact and starting-with title matches rank first, then the most recently updated. Returns { query, results, truncated }: each result has kind, id, title, a few facts and is_sample. |
Agendaagenda | Read | What the coming days hold, by venue day: each date's bookings (all but lost ones) with time, rooms, host and balance; live holds whose slot falls in the window or that lapse inside it (a decision is due); every installment still owed that falls due before the window ends, overdue ones included, with what is left on it (the earliest 200 invoices; payments_due_truncated says when there are more); and the new inquiries nobody has answered yet (snoozed ones aside). Starts today at the group's clock (the location's, when one is named) and runs 7 days unless asked otherwise. Amounts in minor units (cents); is_sample marks sample (demo) data. |
Who is on todayschedule_today | Read | The staff schedule for one day, per venue: who is on (person, role, start and end both as instants and on the venue's own clock, whether it runs past midnight, break, note), the open shifts nobody is on yet, attendance recorded so far, and each shift's warnings (overlap, double_booked at another venue, short_rest, staff_inactive, staff_archived — informational). publish_state says what staff can see: draft (never published), changed (published, with edits staff don't see yet) or published. Defaults to each venue's own today; name a date for another day. Read-only. |
Staff schedule weekschedule_week | Read | A Monday-to-Sunday staff schedule week per venue: for each day the shifts, people, open shifts, planned minutes (less breaks), shifts by role, and the stretches of the venue's opening hours nobody is scheduled for (uncovered; null when the venue has no hours on file). Also each venue's publish state (empty, draft or published, with how many changes staff don't see yet) and the week's warnings. Defaults to this week; name any date to get its week. Read-only. |
Marketing queue statusmarketing | Read | Marketing queue status, both lanes: recent social posts (channel, status, slot, send fact + link) and guest campaigns (kind, segment, status, slot, send progress — sent/suppressed/failed of total). The read-side answer to what became of a draft_marketing_post or draft_marketing_campaign draft; needs only the 'read' scope. |
Draft a thank-you carddraft_thank_you_card | Draft (needs draft access) | DRAFT a thank-you card for one event from its facts + the guest photo wall. Writes a reviewable DRAFT only — it never publishes to guests; the operator reviews and publishes it from the event page. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review and publish it in Excellent. Nothing is published until they do. |
Draft a social postdraft_marketing_post | Draft (needs draft access) | DRAFT one social post (instagram, linkedin or facebook) for this group's marketing review queue, grounded ONLY in the org's own events and published recaps (every claim is quote-verified against them). Writes a reviewable DRAFT — it never approves and never publishes; the operator approves in Portfolio → Marketing and the engine sends behind the org's live gate. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review and approve it in Excellent. Nothing is approved, published or sent until they do. |
Draft a guest email campaigndraft_marketing_campaign | Draft (needs draft access) | DRAFT one bilingual (en/es) guest-campaign email for this group's marketing review queue, grounded ONLY in the org's own completed events and published recaps (every claim is quote-verified against them). Writes a reviewable DRAFT — it never approves and never sends; the operator approves in Portfolio → Marketing and only the consent-gated engine emails the segment. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review and approve it in Excellent. Nothing is approved or sent until they do. |
Events reportreport | Read | Aggregated Events report for the whole group over a period: revenue (booked/collected/outstanding), booking pace vs last period with a plain-language on-track verdict and % to the annual goal, pipeline by stage + win rate, lead funnel, booking sources, and the per-location rollup. Amounts in minor units (cents). dataBasis and dataBasisNote state whether the figures count real records, sample (demo) records, or real records with sample rows set aside; booked and outstanding include draft invoices. |
4. Things to ask
- “What does the next two weeks of private events look like across all our locations?”
- “Which new leads haven't been contacted yet, and what dates and party sizes are they asking about?”
- “How are we pacing against this year's events revenue goal, and which location is behind?”
- “Which invoices still have a deposit outstanding?”
- “Pull up the Adler gala: who's hosting, what's on the menu, and what's still owed?”
- “Is the Garden Room free next Saturday evening for 60 people?”
- “What's on our agenda this week, and which holds lapse before Friday?”
- “Draft a thank-you card for last Saturday's rehearsal dinner.”
- “Draft an Instagram post about our patio room using our recent events.”
5. Access, safety and your data
Scoped to your organization, and to you. Every tool call is answered by a database function that resolves your organization and you from the connection’s credential, and checks your role in Excellent on that call; nothing in a request can widen it to another organization’s records, or past what you may do. Leave the team and every connection you made ends.
Drafts only. The draft tools add a new item to a review queue. Publishing a post, sending a campaign or sharing a card happens only when someone on your team approves it in Excellent, and campaigns go only to guests who consented to receive them. Each draft comes back with a review link for you: it opens Excellent’s own page and shows the draft only to you, signed in — the assistant can pass the link along but can never use it to approve anything.
Short-lived credentials. Connections use OAuth 2.1 with PKCE. Access tokens expire after one hour and refresh credentials rotate on every use; we store only one-way hashes of them.
Your conversations stay with the assistant. Excellent receives only the parameters of each tool call (for example, a status filter), never your conversation. How we handle connection data is set out in our Privacy Policy; our security controls are described on the Security page.
6. Disconnecting
Under Settings → AI assistant access in Excellent you see your own connections — when each was approved and last used — and can disconnect any of them; an administrator also sees everyone’s and can disconnect any. Disconnecting ends its access immediately. You can also remove the connector from Claude under Settings → Connectors.
7. Troubleshooting and support
- “This account isn’t on a workspace’s team” — approve the connection while signed in with the account your organization invited.
- A draft tool answers “This connection’s access does not include this tool” — the connection was approved without draft access. Disconnect and reconnect, and tick “Also allow drafts” on the consent screen.
- “The person this connection acts for lacks permission for this” — your role doesn’t include it (the error names the permission). An administrator can grant it on the Team page; the assistant’s next call picks it up, with no reconnecting.
- “This tool belongs to a part of Excellent that is not switched on” — the marketing tools work only where your group has Marketing switched on, as the Marketing pages do. Write to us to switch it on; the assistant’s next call picks it up.
- “This connection’s access has expired or was revoked” — it may have been disconnected under Settings → AI assistant access, or the person who connected it is no longer on the team. Reconnect from Claude, signed in as yourself.
- “Too many requests on this connection” — wait a minute, then try again.
Every error the connector returns ends with a code in parentheses, such as (code: invalid_argument); include it when you contact us. Anything else: email support@beexcellent.ai.