get_guest_list_entry_status
Retrieve the current status of a guest list entry. Provide the entry ID, or the event ID and customer email, to access confirmation, waitlist, or other status details for nightlife events.
Instructions
Check the status of a guest list entry. Provide either entry_id or event_id + customer_email.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | No | ||
| event_id | No | ||
| customer_email | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | ||
| status | Yes | ||
| customer_name | Yes | ||
| event_name | Yes | ||
| event_date | Yes | ||
| created_at | Yes | ||
| guest_list_benefit | Yes | ||
| door_instructions | Yes |
Implementation Reference
- src/services/guestList.ts:403-501 (handler)Core handler that looks up a guest list entry by entry_id or event_id+customer_email, retrieves event name/date and guest list settings, and returns status (confirmed/cancelled), customer details, and door instructions.
export async function getGuestListEntryStatus( supabase: SupabaseClient, input: StatusInput, ): Promise<StatusOutput> { if (!input.entry_id && !(input.event_id && input.customer_email)) { throw new NightlifeError( "INVALID_REQUEST", "Must provide either entry_id or event_id + customer_email", ); } let entryData: any = null; if (input.entry_id) { const { data, error } = await supabase .from("event_guest_list_entries") .select("id, email, name, created_at, event_day_id, venue_id, service_date") .eq("id", input.entry_id) .maybeSingle(); if (error) { throw new NightlifeError("DB_QUERY_FAILED", `Failed to look up entry: ${error.message}`); } entryData = data; } else if (input.event_id && input.customer_email) { // Resolve event_id to event_day_id(s) const { data: eventDays } = await supabase .from("event_occurrence_days") .select("id") .eq("event_occurrence_id", input.event_id); const dayIds = eventDays?.map((d: any) => d.id) ?? []; if (dayIds.length > 0) { const { data, error } = await supabase .from("event_guest_list_entries") .select("id, email, name, created_at, event_day_id, venue_id, service_date") .eq("email", input.customer_email.toLowerCase()) .in("event_day_id", dayIds) .order("created_at", { ascending: false }) .limit(1) .maybeSingle(); if (error) { throw new NightlifeError("DB_QUERY_FAILED", `Failed to look up entry: ${error.message}`); } entryData = data; } } if (!entryData) { throw new NightlifeError( "GUEST_LIST_ENTRY_NOT_FOUND", "Guest list entry not found", ); } // Get event name if we have event_day_id let eventName: string | null = null; let eventDate: string | null = entryData.service_date; if (entryData.event_day_id) { const { data: eventDay } = await supabase .from("event_occurrence_days") .select(` service_date, event_occurrences!inner ( events!inner ( name_en ) ) `) .eq("id", entryData.event_day_id) .maybeSingle(); if (eventDay) { eventName = (eventDay as any).event_occurrences?.events?.name_en ?? null; eventDate = eventDay.service_date; } } // Get guest list settings for benefit/instructions const settings = await loadGuestListSettings( supabase, entryData.event_day_id, entryData.venue_id, ); return { entry_id: entryData.id, status: "confirmed", customer_name: entryData.name, event_name: eventName, event_date: eventDate, created_at: entryData.created_at, guest_list_benefit: settings?.benefit_en ?? null, door_instructions: settings?.door_instructions_en ?? null, }; } - src/tools/guestList.ts:38-53 (schema)Input and output Zod schemas for the get_guest_list_entry_status tool. Input: entry_id, event_id, or customer_email. Output: entry_id, status, customer_name, event_name, event_date, created_at, guest_list_benefit, door_instructions.
export const getGuestListEntryStatusInputSchema = { entry_id: z.string().optional(), event_id: z.string().optional(), customer_email: z.string().optional(), }; export const getGuestListEntryStatusOutputSchema = z.object({ entry_id: z.string(), status: z.enum(["confirmed", "cancelled"]), customer_name: z.string(), event_name: z.string().nullable(), event_date: z.string().nullable(), created_at: z.string(), guest_list_benefit: z.string().nullable(), door_instructions: z.string().nullable(), }); - src/tools/guestList.ts:129-142 (registration)Registration of the 'get_guest_list_entry_status' tool via server.registerTool() with input/output schemas, delegating to the service handler.
server.registerTool( "get_guest_list_entry_status", { description: "Check the status of a guest list entry. Provide either entry_id or event_id + customer_email.", inputSchema: getGuestListEntryStatusInputSchema, outputSchema: getGuestListEntryStatusOutputSchema, }, async (args) => runTool( "get_guest_list_entry_status", getGuestListEntryStatusOutputSchema, async () => getGuestListEntryStatus(deps.supabase, args), ), ); - src/server.ts:37-44 (registration)Top-level call to registerGuestListTools() in the MCP server setup, which registers all guest list tools including get_guest_list_entry_status.
registerGuestListTools(server, { supabase }); if (options.includeOpsTools) { registerVipAgentOpsTools(server, { supabase, config }); registerVipTableOpsTools(server, { supabase }); registerDepositOpsTools(server, { supabase, config }); } return server; }