Connectors
Connect Excellent to Claude
Last reviewed November 2, 2026
1. What the connector does
The Excellent connector lets Claude — or any assistant that speaks the Model Context Protocol (MCP) — work from your restaurant group’s live Excellent data. What it can do depends on the access you give it:
- Read. Answer questions about your events and bookings (any one in full, with its menu, contacts, payments and history), inquiries, invoices and deposits, documents, rooms and when they are free, contacts, staff schedules and training, the marketing queue, the coming days, and the events report with pace against your revenue goal — plus one search across all of it.
- Draft. Stage work in your review queues: thank-you cards, social posts, guest campaigns, replies to inquiries, invoices, pre-shift notes, shifts, training courses, event emails, an event’s proposal, BEO or contract, Partner’s pro formas, pitch decks and investor updates, and imports for you to check. A person on your team always decides those.
- Change. Make everyday changes for you — create and book events, move them along, set guest counts and hosts, place holds, work your inquiries, keep contacts up to date, and add team members and their training — each one listed and undoable for 30 days.
It never publishes, sends, charges or deletes anything. Each connection sees exactly one organization — the one its person connected — and acts as that person: it can only read, draft and change 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. Change additionally lets it make changes you can undo. You choose on the consent screen: read access is always included, and “Also allow drafts” and “…and make changes you can undo” are yours to tick or leave off (changes include drafting).
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, a reply to an inquiry, an invoice or an event email needs the events permission, a pre-shift note, a staff shift or a training course the Craft permission, and a social post or a campaign email the marketing permission (revising one needs the same); a change needs exactly the permission the same change needs in Excellent — the events permission for events, leads and contacts, the Craft permission for the training roster. 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. No account? The free reference server
Excellent also runs a free server that needs no account: https://beexcellent.ai/api/mcp/public. It answers how Excellent works, from Excellent’s own help text, and finds Excellent’s published feature, comparison and blog pages. It reads no restaurant group’s data, and every tool that would (events, leads, invoices, drafts) answers that it needs the signed-in connector above. Add it as a custom connector with no sign-in. It allows 60 requests a minute per address.
start_excellent_workspace starts a sample workspace for someone with no account and returns a one-time link, https://beexcellent.ai/claim/…. Opening it signed in (or after creating a login) makes the workspace theirs. It takes no arguments and no personal data, the link works once for 7 days, an unclaimed workspace is then deleted, and it allows 3 starts a day per address.
For someone planning a private dinner or event, find_event_venues lists the venues on Excellent that chose to accept inquiries from AI assistants, by the group’s or the venue’s name, showing only what each venue’s public inquiry page shows. send_event_inquiry sends one of them an inquiry the person asked for: it lands in that venue’s Leads inbox as a new lead for its team to answer, books and pays for nothing, and Excellent sends the guest no email. It allows 5 inquiries an hour and 20 a day per address.
How Excellent works
How to do something in Excellent, from Excellent's own help.
What the assistant is told
excellent_help— Excellent's own help text (the passages its in-app assistant answers from): how to do a task in Excellent — proposals, e-signed contracts, deposits and invoices, banquet event orders, floor plans, menus, staff training (Craft), marketing drafts, connecting an AI assistant. Returns up to 3 passages, best match first, each with the in-app page it starts on. No account needed; it reads no restaurant group's data.Search Excellent's public pages
Finds Excellent's feature, comparison, guide and blog pages.
What the assistant is told
search_excellent_pages— Search Excellent's published pages: feature pages (what each part of the product does), comparison pages (Excellent vs another events or private-dining platform, with where each one wins and the date the comparison was last reviewed), the blog, and guides (how to connect Claude, with 15 things to ask it). Returns up to 5 pages with their URL and the page's own summary text. No account needed.Find venues that take inquiries from assistants
Finds venues on Excellent that take private-event inquiries from assistants.
What the assistant is told
find_event_venues— Finds restaurants and venues on Excellent that accept private-event and group-dining inquiries from AI assistants, by the restaurant group's or the venue's name. Returns up to 10, each with the group, the venue, who replies, a handle for send_event_inquiry and the venue's public inquiry page. Only venues that opted in are listed, and only what their public inquiry page shows. No account needed.Start a sample Excellent workspace
Starts a sample workspace and hands back a one-time link to make it yours.
What the assistant is told
start_excellent_workspace— Creates a new Excellent workspace filled with sample data (a fictional restaurant group with two venues, bookings, proposals, invoices, staff training and marketing drafts) and returns a one-time link for the person you are helping. Opening the link while signed in to Excellent, or after creating a login there, makes the workspace theirs. Nobody can use it before then, and an unclaimed workspace is deleted when its link expires after 7 days. Takes no arguments and no personal data. At most 3 a day per address.Send a private-event inquiry to a venue
Sends a venue an event inquiry you asked for; it books and pays for nothing.
What the assistant is told
send_event_inquiry— Sends a private-event or group-dining inquiry, on behalf of the person you are helping, to a venue that accepts inquiries from AI assistants (its handle comes from find_event_venues). Use it only when the person asked you to contact the venue, with the details they gave you. It lands in the venue's inbox as a new lead for the venue's team to review and answer directly; it books, holds and pays for nothing, and Excellent sends the guest no email. Give an email or a phone so the venue can reply. Answers only whether it was filed. At most 5 an hour and 20 a day per address.
4. Tools
The connector has a fixed, reviewed set of tools, grouped below by the access each one needs. It has no free-form query tool, so it can only ask your data the questions listed here.
Read
21 toolsAnswers questions from your data. Every connection has it.
Group overview
A snapshot of the group: its locations, upcoming events, new inquiries and the balance outstanding.
What the assistant is told
overview— 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. sample is true whenever the workspace holds sample records. On a workspace with nothing in it yet, workspace is { state: "empty", setup_url, sample_url }: say so plainly, never present the zeros as the group's real state, and offer to set it up (setup_url) or to load the sample (load_sample_data on a connection allowed to make changes; otherwise sample_url, one tap in Excellent).List events
Your events, with date, time, party size, venue and room.
What the assistant is told
list_events— 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 leads
Your inquiries, with who asked, what date and how many guests.
What the assistant is told
list_leads— 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 invoices
Your invoices, with totals, deposits due and what's been paid.
What the assistant is told
list_invoices— 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 documents
Your proposals, BEOs, contracts and training documents, with their status.
What the assistant is told
list_documents— 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 spaces
Your rooms and spaces, with capacity and venue.
What the assistant is told
list_spaces— 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 contacts
Your hosts and clients, with how to reach them and how many events each has had.
What the assistant is told
list_contacts— Contacts (hosts/clients) with reach info and event counts. Each row says its kind (person or organization) and, for a person linked to one of the workspace's organization contacts, that account (account_id, account_name; null = at none). 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 event
One event in full: rooms, host and contacts, menu, documents, money owed and its history.
What the assistant is told
get_event— 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; each item's allergens as the document records them — [] means recorded as none, null means NOT RECORDED: never tell anyone a dish is free of an allergen from a null);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 availability
What each room holds on a given day and when it's free, holds included.
What the assistant is told
space_availability— 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 records
One search across events, inquiries, contacts, invoices, documents and rooms.
What the assistant is told
search— 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.Agenda
The coming days by venue: bookings, live holds, payments due and inquiries nobody has answered.
What the assistant is told
agenda— 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). Plus `suggestions`: those inquiries and the window's bookings with a balance, ranked as Excellent's home ranks them, each with a stable id, a kind, a reason (a code with its numbers, and a sentence) and the next action as a link into Excellent; it names what it does not read (`unprobed`) and what it read only in part (`partial`: past 20 waiting, the 20 longest-waiting inquiries are ranked). 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 today
Who is working today at each venue, and which shifts nobody is on yet.
What the assistant is told
schedule_today— The staff schedule for one day, per venue: who is on (person, role, the area that role works in — foh, boh or office — the languages they speak as ISO 639-1 codes and their uniform_size, 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 week
The staff schedule for a week at each venue, with open shifts and planned hours.
What the assistant is told
schedule_week— 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 status
Where your social posts and guest campaigns stand: drafted, scheduled or sent.
What the assistant is told
marketing— 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.Get a review link
A link to open any draft waiting for review in Excellent, signed in as you.
What the assistant is told
get_review_link— A link for the connection's person to review one draft on Excellent's own page and decide it there, signed in as themselves, for a draft of any of these kinds however it was made (in the app, by Excellent's weekly planner or by an assistant): a social post or guest campaign (approve or reject), a thank-you card (publish or discard), a reply to an inquiry (send or discard), an invoice, a staff shift or a document (keep or discard), a pre-shift note, a training course or an event email (publish or discard), a staged import (keep or discard; it is committed on its own review page). Returns the record's status and whether it is still a draft; for a draft the person may decide, the link and until when it works; otherwise who can decide it. Read-only: the link itself decides nothing.Events report
The group events report for a period: revenue, booking pace and progress toward your goal.
What the assistant is told
report— 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.Recent changes
The changes you have made through an assistant, newest first, and which can still be undone.
What the assistant is told
recent_changes— The changes this connection's person made in this restaurant group through an assistant, newest first: each with its change_id, the tool that made it, a one-line summary, the record it touched, when, whether it was undone, and whether it can still be undone (within 30 days, once). Returns { rows, next_offset }. Read-only.Training roster
Your training roster: the team, your published courses and your on-the-floor skills.
What the assistant is told
training_roster— This restaurant group's training roster, as the Craft roster page shows it: its active team members (id, name, role, home venue, status, hire date, plus area — foh, boh or office, derived from the role: front of house, back of house, or management & the back office — languages they speak as ISO 639-1 codes ([] = none recorded) and uniform_size, one of xs…4xl (null = none recorded)), its published courses (id, title) and its competencies (id, name) — the ids the course and competency assignments take. Optional match filters all three by name. Every row carries is_sample (true for sample/demo data). A team member's emergency contact is never returned by any tool. Read-only.Training status
Who is overdue or due soon on training, and whose cards have lapsed or lapse soon.
What the assistant is told
training_status— Who in this restaurant group is behind on training, computed the way the Craft roster and insights pages compute it: assigned courses and competencies that are overdue (past their due date, not completed or signed off) or due soon (due on or after today and before due_before), and wallet documents (food handler cards, alcohol service cards and the like) that are expired or expiring (expiring on or after today and before due_before). Only people on the team count; a course on a recertification cadence needs a completion made after it was assigned. due_before defaults to 31 days after today (the roster's 30-day window) and must be after today and at most 366 days ahead. Optional location (a venue id, as overview's locationList names them: people whose home venue it is) and staff_id (one person, as training_roster lists them) narrow it; status asks for one of the four states. Returns { as_of, due_before, counts, assignments, documents }: counts covers every state whatever status asks; each list holds at most limit rows, the most overdue or soonest first, each with the person (id, name, role, home venue) and is_sample (true for sample/demo data). Read-only.Event seating and custom fields
One event's seating and custom fields, as its event page shows them.
What the assistant is told
event_setup— One event's seating and custom fields, as its event page shows them: its booked rooms; every floor-plan table in those rooms (id, label, kind, room, capacity, and the seats and seating label assigned to it for this event, 0 when none); and every event custom field the restaurant group defines (key, label, type, options, whether it is required, and this event's value). Read-only.Get an invoice
One invoice in full: every line, its payment schedule and what's still due.
What the assistant is told
get_invoice— One invoice in full, as its invoice page shows it: its id, document_ref, title, status and currency; its line items, the full current list in order, each with label, qty, unit_price_minor and category (the fields revise_invoice_draft's lines take; category is fnb, room, av, staffing or other, null when the line has none — only fnb and uncategorised lines count toward the event's F&B minimum) and line_minor, the line total as stored; the subtotal, tax, fee and total; the party size, deposit due and amount paid; the linked event (id and title); whether it can still be revised (only an unsent draft nobody has paid that is not frozen, voided or archived can) and, when it cannot, why; and its payment schedule's installments in order (label, amount, due date). Amounts are integer minor units (cents). Read-only.
Draft
20 toolsStages work in your review queues. Nothing is sent or published until someone on your team decides it in Excellent.
Draft a thank-you card
Drafts a thank-you card for an event from its details and guest photos, for you to review.
What the assistant is told
draft_thank_you_card— 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 post
Drafts a social post from your own events and recaps, for your marketing review.
What the assistant is told
draft_marketing_post— DRAFT one social post (instagram, linkedin or facebook) for this group's marketing review queue, grounded ONLY in the org's own events, published recaps and 4–5 star guest reviews (every claim is quote-verified against them). On instagram and facebook it picks a photo from the org's own uploads that fits the post (or none), and its default publish time is an hour before that venue opens, on the venue's own clock. 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 campaign
Drafts a guest email campaign in English and Spanish, for your marketing review.
What the assistant is told
draft_marketing_campaign— 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.Draft a reply to an inquiry
Drafts a reply to an inquiry, for you to review and send from Excellent.
What the assistant is told
draft_lead_reply— DRAFT a reply email to one inquiry (lead) in this restaurant group, in the words you write: a subject and a body, in English or Spanish. It is stored as a reviewable draft on the inquiry and is never sent from here: the person reads it, can edit it, and sends it in Excellent, signed in as themselves, and only then does a new inquiry move to contacted. The inquiry must have an email address. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is sent until they do.Draft an invoice
Drafts an invoice for an event from the lines you give, for you to review.
What the assistant is told
draft_invoice— DRAFT an invoice for one event from the line items you give (a label, a whole quantity and a unit price in minor units, e.g. cents). Excellent derives each line, the subtotal and the total with its own money math, and sets the deposit from the group's deposit schedule for the event's party size; tax and fee are added as given, in minor units. It is a draft: never sent, shared or charged from here. The person reviews it in Excellent and sends it from the invoice page. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the figures staged and a link for the person to review it in Excellent. Nothing is sent until they do.Draft a pre-shift note
Drafts the pre-shift note your team reads before service.
What the assistant is told
draft_preshift_note— DRAFT a pre-shift note for one day (what the team reads before service) in the words you write, in English and optionally Spanish. Pre-shift is per location: pass `location` (a location's id) for that location's team — its 86s and specials — or leave it out for the all-locations note every team reads beside its own. It lands as a draft staff cannot see; a day that already has a note for that location (or, without one, an all-locations note), a draft or a published one, is left exactly as it is and nothing is staged. Spends no Excellent AI budget. 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 reaches staff until they do.Draft a staff shift
Drafts a shift into a venue's staff schedule, for a manager to publish.
What the assistant is told
draft_shift— DRAFT one shift into a venue's staff schedule: the venue, the venue day it starts on, start and end on the venue's own clock (HH:MM, 24-hour; an end at or before the start runs past midnight), the role, and optionally the person (leave staff_id out for an open shift), a break in minutes and a short note. It is saved exactly as the venue schedule saves a shift, as the connection's person, into the week's draft: staff see nothing until a person publishes the week in Excellent. Requires a token minted with the 'draft' scope. Returns the shift as staged and a link for the person to review it in Excellent. Nothing reaches staff until they do.Draft an event proposal, BEO or contract
Drafts an event's proposal, BEO or contract from its own details and your menu prices.
What the assistant is told
draft_event_document— DRAFT a proposal, a BEO (banquet event order) or a contract for one event with Excellent's own document engine: it is written from the event's own facts (date, booked window, venue, room, headcount, host, notes) and priced from the venue's own menus and packages at the event's date, with the venue's service charge, fees and tax; prices are never taken from a model. A contract carries the event's finalized proposal's menu and prices as agreed. An event with no venue yet is drafted from sample menus and stays blocked from finalizing until it has one. Spends this restaurant group's Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is finalized, shared or sent until they do.Revise a draft social post
Changes the words, photo or time of a social post that's still a draft.
What the assistant is told
revise_marketing_post— REVISE one social post that is still a DRAFT in this group's marketing review queue: new words, a new photo (a public https image URL) and/or a new publish time, each saved exactly as the marketing calendar saves it, as the connection's person. The words must fit the post's channel (instagram 2,200 characters, linkedin and facebook 3,000, at most 30 hashtags). A post that is already approved, rejected or sent is left as it is. The post stays a draft. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the post as revised and a link for the person to review it in Excellent. Nothing is approved, published or sent until they do.Revise a draft guest campaign
Changes the wording of a guest campaign that's still a draft.
What the assistant is told
revise_marketing_campaign— REVISE the subject and body of one guest-campaign email that is still a DRAFT in this group's marketing review queue, in English and/or Spanish: what you pass replaces those words, and anything you leave out keeps its current words. It is saved exactly as the campaign editor saves it, as the connection's person (English is required, a Spanish version needs both its subject and its body, a subject is one line of at most 200 characters, a body at most 5,000). A campaign already approved or sent is left as it is. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the campaign as revised and a link for the person to review it in Excellent. Nothing is approved or sent until they do.Revise a draft invoice
Changes the title or lines of an invoice that's still an unsent draft.
What the assistant is told
revise_invoice_draft— REVISE one invoice that is still an unsent DRAFT nobody has paid: its title, its line items (a label, a whole quantity and a unit price in minor units, e.g. cents — the list you pass replaces every line), its tax and its fee, in minor units; anything you leave out keeps its current value. Excellent re-derives each line, the subtotal and the total with its own money math and re-prices the deposit from the group's deposit schedule for the invoice's party size, exactly as the invoice page's Edit does. An invoice that was sent, paid, frozen or voided is left as it is. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the figures as revised and a link for the person to review it in Excellent. Nothing is sent until they do.Add a payment installment to a draft invoice
Adds a payment installment to an invoice that's still an unsent draft.
What the assistant is told
add_invoice_installment— ADD one installment to the payment schedule of an invoice that is still an unsent DRAFT nobody has paid: an amount in minor units (e.g. cents), an optional label and an optional due date, exactly as the invoice page's payment schedule adds one. No reminder is sent and no pay link is made. An invoice that was sent, paid, frozen or voided is left as it is. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the installment, how much the schedule now covers of the invoice's total, and a link for the person to review the invoice in Excellent. Nothing is sent until they do.Draft a training course
Drafts a training course from your own finished training documents.
What the assistant is told
draft_course— DRAFT one training course for this restaurant group from its own finalized training documents (lessons, SOPs and knowledge pieces, as list_documents returns them with type lesson, sop or knowledge), in the order you give, with a title, an optional description and an optional passing score. It is created exactly as the course builder creates one, as the connection's person; a library quiz joins as the course's assessment. Staff see nothing and nobody is assigned it: it stays a draft. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns the course as staged and a link for the person to review it in Excellent. Nothing is published until they do.Draft an event email
Drafts new wording for one of your automatic event emails.
What the assistant is told
draft_event_email_template— DRAFT new words for one of the automatic event emails this restaurant group can customize (the reply to a new inquiry, the signature request and its reminder, the event reminder, the deposit reminder, the hold notice, the new-inquiry alert, and the staff emails: the training reminder, the overdue-training reminder and the published-shifts notice): a subject and a body in English and in Spanish (each reader gets their own language), saved exactly as Settings ▸ Event emails saves a draft. Placeholders in braces, like {guest_name}, must be ones that email offers, a signature request must keep its {sign_link}, a training reminder its {portal_link} and the shifts notice its {shifts_link}. Readers keep receiving the email live now until a person publishes these words; an email that already has unpublished changes is left exactly as it is. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is published until they do.Draft a pro forma
Drafts a pro forma for a new location, with your own figures traced from your records.
What the assistant is told
draft_pro_forma— DRAFT a pro forma for a new location (Excellent Partner) from the narrative you write and the assumptions you give. Excellent traces the group's own figures from its records (average event value, booked and collected revenue, plate margin), builds the projection itself from those figures and the assumptions, and places its tables around your words; a number in your narrative never becomes a figure in the tables. Pass the dining-room and cost keys too and the draft is a full location P&L (dining + events revenue, prime cost, occupancy, EBITDA, payback); leave them out for an events-only model. Money is in minor units (cents). Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is published or shared until they do.Draft a pitch deck
Drafts a pitch deck with your group's track record traced from your records.
What the assistant is told
draft_pitch_deck— DRAFT a pitch deck (Excellent Partner) from the narrative you write: Excellent adds the group's track record as traced from its own records, and optionally the tables of one of the group's pro formas, slide by slide around your words; a number in your narrative never becomes a figure in the tables. A line of --- in the narrative starts a new slide. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is published or shared until they do.Draft an investor update
Drafts a quarterly investor update with the quarter's figures from your records.
What the assistant is told
draft_investor_update— DRAFT a quarterly investor update (Excellent Partner) from the narrative you write: Excellent adds the quarter's figures traced from the group's own records, with the quarter before beside them, and a callout naming the focus you choose, which must be a story that quarter's figures support. A number in your narrative never becomes a figure in the table. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns what was staged and a link for the person to review it in Excellent. Nothing is published or sent to investors until they do.Stage an import of contacts, menu items, inquiries or events
Stages a table of contacts, menu items, inquiries or past events as an import for you to check.
What the assistant is told
draft_import— STAGE a table you pass as text as an import into this restaurant group: contacts, menu items, inquiries (leads) or past events. Pass a header row, then one row per record, comma-, semicolon- or tab-separated; Excellent reads the columns from the headers, checks every value, and matches contacts already on record (offered as merges). Nothing is added to Excellent from here: the import waits on its review page, where the person fixes rows, sets rows aside and commits it. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns how many rows were staged and a link for the person to review it in Excellent. Nothing is added until they do.Stage a staff roster import
Stages a staff list as a roster import for you to check.
What the assistant is told
draft_staff_import— STAGE a staff list you pass as text as an import into this restaurant group's roster: a header row, then one row per person, comma-, semicolon- or tab-separated (name, email, phone, role, venue, start date, and any other columns, which are kept as roster columns). Excellent reads the columns from the headers, checks every value, and matches people already on the roster (offered as merges). Nothing is added to the roster from here. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns how many rows were staged and a link for the person to review it in Excellent. Nothing is added until they do.Stage a social posts import
Stages a plan of social posts as an import into your marketing calendar.
What the assistant is told
draft_post_import— STAGE a plan of social posts you pass as text as an import into this restaurant group's marketing calendar: a header row, then one row per post, comma-, semicolon- or tab-separated (channel, caption, photo link, when, location). Excellent checks every value, each location against the group's own and each channel against the ones it can post to. Committed, each row becomes a post awaiting approval; nothing is posted from here. Spends no Excellent AI budget. Requires a token minted with the 'draft' scope. Returns how many rows were staged and a link for the person to review it in Excellent. Nothing is added or posted until they do.
Change
33 toolsMakes everyday changes as you, each one listed and undoable for 30 days. It never sends, publishes, pays or deletes anything.
Undo a change
Undoes a change an assistant made, while nothing has changed since.
What the assistant is told
undo— Undo one change an assistant made, by its change_id: a value it replaced is put back, and a record it added is removed again (archived). Refused when the record has changed since (the later change stands), when the change was undone already or is older than 30 days, and when the person no longer has the permission the change needed. Returns what was undone.Create an event
Creates an event, and books it into a room when you give a time.
What the assistant is told
create_event— Create one event (booking) as a lead or tentative, the way the Events page's New event form does. With space, starts_at and ends_at it is also booked into that room in the same motion (dated on the venue day the window starts); a booking the room cannot take refuses the whole call and creates nothing. A host is an existing contact (host_party_id) or a typed person (host_name, host_email), matched to an existing contact by exact email and name, else created; an email that belongs to someone of another name is refused. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Book an event into a room
Books an event into a room for a time, checked against the calendar the same way.
What the assistant is told
book_room— Book (or re-book) one event into a room for a time window, conflict-checked exactly as the calendar books: refused over a confirmed booking or a block, over an active hold, past the rooms' capacity, and onto a different venue day unless move_event is true (then the event's date moves with it). The event's stage is left as it is. Replaces the event's room, window, date and venue. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set an event's stage
Moves an event along: lead, tentative, confirmed, completed, cancelled or lost (lost records why).
What the assistant is told
set_event_status— Move one event along the pipeline: lead, tentative, confirmed, completed, cancelled (booked, then called off) or lost (never booked). Moving it to lost needs lost_reason — ask the person why if they did not say; never guess one. Confirming is refused while an active hold sits in any room the event holds, or when it would double-book a room or land on a block. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set an event's guest count
Changes an event's guest count, within the capacity of its rooms.
What the assistant is told
set_event_guest_count— Set one event's guest count (party size). Refused when the new count is more than the capacity of the rooms it is booked into. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Rename an event
Renames an event for your team; the name the client sees is unchanged.
What the assistant is told
rename_event— Set one event's internal title (the client-facing title is unchanged). Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set an event's host
Makes a contact the host of an event.
What the assistant is told
set_event_host— Make a contact the host of one event: an existing contact (party_id) or a typed person (host_name, host_email), matched to an existing contact by exact email and name, else created. Only the event's host changes; the contact itself is never edited. A contact already on the event moves into the host seat. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Add a contact to an event
Adds a planner, vendor or other contact to an event.
What the assistant is told
add_event_contact— Put an existing contact on one event as its planner, a vendor or other. Refused for the event's host and for a contact already on it. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Add a guest to an event
Adds a named guest to an event's guest list, with their diet and allergies when known.
What the assistant is told
add_event_guest— Add one named guest to an event's guest list, with an optional meal, VIP flag and diet & allergy record. Seating stays in Excellent's floor plan. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Place a hold on a room
Places a hold on a room and time for someone, in line behind any earlier hold.
What the assistant is told
place_hold— Queue a soft, ranked hold for someone on a room and window, as the calendar does. Refused over a confirmed booking or a block. A hold behind another takes the next rank and puts the first one on a 48-hour clock. Expires in 14 days unless expires_at says otherwise. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Assign a lead
Assigns an inquiry to someone on your team.
What the assistant is told
assign_lead— Assign one inquiry (lead) to a member of the team — the connection's own person when user_id is left out. The assignee must be on this restaurant group's team. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set a lead's status
Marks an inquiry new, contacted, qualified or lost (lost records why).
What the assistant is told
set_lead_status— Move one inquiry (lead) to new, contacted, qualified or lost (converted is what converting it into an event sets). Moving it to lost needs lost_reason — ask the person why if they did not say; never guess one. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Snooze a lead
Snoozes an inquiry until a later time, or wakes it now.
What the assistant is told
snooze_lead— Snooze one inquiry (lead) until an instant in the future, so it leaves the waiting list until then; leave until out to wake it now. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Convert a lead into an event
Turns an inquiry into an event, with its date, party size and host.
What the assistant is told
convert_lead_to_event— Convert one inquiry (lead) into an event, as the inbox's Convert does: a lead-stage event with the inquiry's date, party size and message, its host the contact holding the inquiry's email (or a new one), and the lead marked converted and linked to it. A lead converted already answers its event and changes nothing. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Create a contact
Adds a contact: a host, planner, vendor or other.
What the assistant is told
create_contact— Create one contact (host, planner, vendor or other) — a person (the default) or an organization (a company, club or family office that books as a body) — with optional email, phone, organization and notes. A person can be put at one of the workspace's existing organization contacts (account_id, from list_contacts); an organization is at none. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Update a contact's details
Updates a contact's name, email, phone or organization.
What the assistant is told
set_contact_details— Update one contact's name, email, phone, organization, kind (person or organization) or the organization contact a person is at (account_id; clear_account: true to put them at none); a field left out keeps its value. An organization with people at it cannot become a person, and a person at an organization cannot become one, until they are moved. This is the one shared contact on every event and venue it is on. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Add a note to a contact
Adds a dated note to a contact's timeline, in your name.
What the assistant is told
add_contact_note— Add a dated note to one contact's timeline, written in the name of the person this connection acts for. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Add a team member
Adds someone to the training roster, with their role, venue, languages and uniform size.
What the assistant is told
add_staff_member— Add one person to the training roster, with optional contact details, start date, role, venue and position, the languages they speak and their uniform size. Courses that the group's standing rules give that role or venue are assigned at once. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Assign a course
Assigns a published training course to a team member.
What the assistant is told
assign_course— Assign one published training course to one team member, with an optional due date. A course they already have assigned answers that assignment and changes nothing. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Assign a competency
Puts an on-the-floor skill on a team member's list for a manager to sign off.
What the assistant is told
assign_competency— Put one on-the-floor competency on a team member's plate, with an optional due date, for a manager to sign off later in Excellent. One they already have answers that assignment and changes nothing. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Block a room
Blocks a room for a time so nothing can be confirmed into it.
What the assistant is told
create_space_block— Block one room for a time window (maintenance, private use, a holiday or other) so nothing can be confirmed into it, as the calendar's Block does. Refused when a confirmed booking holds the room for any of the window, or another block of the room overlaps it. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Close a venue
Closes a whole venue for a time, blocking every room.
What the assistant is told
close_venue— Close a whole venue for a time window (a holiday, a buyout, a closed day): every room at the venue is blocked for it, as the calendar's Close venue does, skipping any room a confirmed booking or a block already holds. Returns how many rooms were closed and skipped. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Convert a hold into an event
Turns a room hold into a tentative event in that room and time.
What the assistant is told
convert_hold_to_event— Convert one active room hold into a tentative event booked into the hold's room and window, as the calendar's Convert does: the holder becomes the host (a new contact when the hold names none), the hold is released as converted and the holds queued behind it move up. Refused while another hold is ahead of it, or once it is gone or lapsed. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set an event's extra rooms
Sets the extra rooms an event uses beside its main room.
What the assistant is told
set_event_rooms— Replace the additional rooms one event uses beside its main room (a ceremony in one room, dinner in the next); an empty list leaves it in its main room only. Refused past the rooms' capacity, over an active hold on a room it adds, and for a confirmed event over another confirmed booking or a block. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set a table's seats for an event
Sets how many of an event's guests sit at a table.
What the assistant is told
set_table_seats— Set how many of one event's guests sit at one floor-plan table, with an optional label (e.g. 'Smith party'); 0 clears the table's seating. A label left out keeps the table's label. Refused past the table's capacity and for a table outside the event's booked rooms. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Set an event's custom field
Fills in one of your event custom fields on an event.
What the assistant is told
set_event_custom_field— Set one of the restaurant group's event custom fields on one event, checked against the field's type as the event page checks it: text, a number, true or false, a YYYY-MM-DD date, or one of a select field's options. Leave value out to clear it. Every other field keeps its value. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Update a team member's details
Updates a team member's name, contact details, role, venue, start date, languages or uniform size.
What the assistant is told
set_staff_details— Correct one team member's name, email, phone, role, home venue, start date, languages or uniform size on the training roster; a field left out keeps its value (a language list given replaces theirs). A new role or venue can assign the courses the group's standing rules give it. Moving an email or phone off a verified sign-in address retires that proof, and such a change cannot be undone here. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Create a competency
Adds a new on-the-floor skill for managers to sign off.
What the assistant is told
create_competency— Define one new on-the-floor competency (a skill a manager signs off in person), with an optional Spanish name and category, as the Craft rules page does. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Keep contacts apart
Keeps contacts apart that the duplicates review thought were one person.
What the assistant is told
dismiss_duplicate_contacts— Record that two to twenty contacts the duplicates review proposes as one person are different people, so they are no longer proposed together; nothing is merged or changed on the contacts. Pairs recorded already stay as they are. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Add an investor contact
Adds an investor to your Partner contacts.
What the assistant is told
add_investor_contact— Add one investor to the Partner registry's contacts, with an optional email and organization. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Create a marketing list
Creates a guest marketing list for the group or one venue.
What the assistant is told
create_marketing_list— Create one guest marketing list (newsletter, loyalty or deals) for the whole group or one venue. It starts empty and managed in Excellent, with no public signup page; members are added there with the consent the restaurant holds. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Remove an event
Removes an event from every register and calendar; nothing is deleted.
What the assistant is told
remove_event— Remove one event: it is hidden from every register, calendar and guest link, and nothing is deleted. Its unsent drafts go with it (draft invoices, draft documents, marketing drafts about it) and its rooms are freed. Refused when the event has a payment (has_payment), a sent invoice (has_sent_invoice) or a signed document (has_signed_document): mark it cancelled (if it was booked) or lost with set_event_status instead. Undo restores it with exactly what went with it; the person can also restore it from the Removed filter in Excellent. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since.Load sample data
Fills an empty workspace with Excellent's sample restaurant group, on your yes.
What the assistant is told
load_sample_data— Fill an EMPTY workspace with Excellent's sample restaurant group (venues, rooms, events, inquiries, invoices, staff and marketing, every record marked is_sample) so the person can see Excellent work before adding their own. Call it only when overview answers workspace.state "empty" and the person has said yes. It refuses (workspace_not_empty) on a workspace holding anything, real or sample. Needs a person allowed to manage the workspace. Nothing is sent. Returns change_id: the change can be undone with it for 30 days, while nothing has changed since. Undo clears the sample again, keeping anything the person built on it.
5. Things to ask
New to this? The Claude guide walks through connecting and has a pack of fifteen 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?”
- “Add a $200 AV line to the Adler gala's draft invoice.”
- “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.”
- “Book the Garcia rehearsal dinner into the Garden Room on the 14th from 6 to 10pm.”
- “Assign the new wedding inquiries to me and snooze the one from Lena until Monday.”
- “Undo the last change you made.”
6. Access, safety and your data
Scoped to your organization, and to you. Every tool call is answered as you: Excellent works out your organization and your role from the connection itself, on that call, so 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, or revise one that is still a draft there. Publishing a post, sending a campaign, a reply or an invoice, sharing a card, finalizing or sharing a document (an investor update or a pitch deck included), publishing a course or an event email, committing an import, or showing staff a pre-shift note or a shift happens only when someone on your team decides 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, send or publish anything.
Changes you can undo. With change access, each change runs through the same checks the same change runs in Excellent (a double booking, a hold in the way, a room over capacity or a lapsed subscription is refused, not worked around), is recorded in your name, and comes back with a change id. Asking the assistant to undo it puts things back exactly as they were — once, within 30 days, and only while nothing has changed since; a later change always stands. The assistant can list your recent changes, so a later conversation can still undo one. It never sends, publishes, pays, archives or deletes anything on its own.
Short-lived access you can end any time. A connection’s access lasts an hour at a time and renews itself; each renewal works once, and Excellent keeps only one-way fingerprints of these credentials, never the credentials themselves. Disconnecting ends it at once (below). For developers: connections use OAuth 2.1 with PKCE.
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.
7. 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.
8. 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. For a change tool, tick “…and make changes you can undo”.
- An undo answers that the record has changed since — someone changed it after the assistant did (or added to what it created), so the later change stands. Change it in Excellent.
- “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.