{"$schema":"https://raw.githubusercontent.com/modelcontextprotocol/modelcontextprotocol/main/schema/mcp-server-card.schema.json","serverInfo":{"name":"wedding-computer","version":"1.1.0","title":"Wedding Computer","description":"Wedding briefings, permission-scoped notes, form answers and files, contacts, follow-ups, guest operations, seating, timelines and approvals, invoices, weather, calendars and vendor credits. Supports current and legacy MCP clients with text results and a structured wedding briefing."},"transport":{"type":"streamable-http","url":"https://wedding.computer/mcp","authentication":{"type":"bearer","instructions":"Use your integration token from Settings > Calendar & contacts > Advanced integrations as the Bearer token."}},"capabilities":{"tools":{"listChanged":false}},"tools":[{"name":"get_wedding_briefing","description":"Start here for a complete wedding briefing from current records: details, visible timeline and people, your checklist, all permitted note scopes, invoices, files and form answers. Returns bounded sections with full-read tools; unavailable is not empty. Never includes couple-only notes or another vendor's private notes."},{"name":"get_wedding_files","description":"List files this vendor can access on a wedding, with descriptions and authenticated browser links. Returns metadata, not PDF contents, storage keys or private share lists."},{"name":"get_wedding_forms","description":"Read this vendor's sent forms and permitted wedding form answers (own submissions plus responses explicitly shared with the team). Never exposes access tokens or responder IP addresses."},{"name":"get_vendor_briefing","description":"Voice-first vendor briefing for driving or hands-free work: upcoming weddings/events, open follow-ups, money needing attention, and the most relevant next actions. Optional wedding_query focuses the briefing on one wedding."},{"name":"find_wedding_or_contact","description":"Voice-friendly search across accessible weddings and vendor contacts. Use this before wedding-scoped tools when the user names a couple, venue, date, or contact instead of an ID."},{"name":"capture_wedding_note","description":"Append a short dictated note to a wedding without replacing existing content. Defaults to your own private note. Use vendors for the vendors-only shared note, or shared for the Everyone note visible to vendors and the couple."},{"name":"create_follow_up","description":"Add a single unchecked follow-up item to a wedding checklist, designed for quick voice capture while driving."},{"name":"get_guest_ops_brief","description":"Summarise the Guests app for a wedding: RSVP counts, unanswered guest units, allergies/dietary notes, song requests, and recent operational risks. Only available when the Guests app is enabled and shared with this vendor."},{"name":"get_seating_brief","description":"Summarise the seating chart for a wedding: table counts, seated/unseated guests, bench, warnings, kids table use, and declined guests still seated. Only available when the Guests app is enabled and shared with this vendor."},{"name":"list_contacts","description":"List all contacts/enquiries newest first, including created_at, updated_at, source, status, contact details, and wedding date."},{"name":"get_contact","description":"Get a contact/enquiry by ID with full details, including created_at, updated_at, source, and notes."},{"name":"list_weddings","description":"List all weddings with title, date, location, and status."},{"name":"get_wedding","description":"Get a wedding's full details as a markdown file by ID."},{"name":"get_wedding_todo","description":"Get the checklist/to-do list for a wedding."},{"name":"update_wedding_todo","description":"Replace the wedding checklist with new markdown content (GitHub-flavoured checklist: \"- [ ] item\" / \"- [x] done\")."},{"name":"get_wedding_timeline","description":"Get the wedding day timeline (run sheet) as markdown: your own editable items, other vendors' items when visible, and pending approval requests."},{"name":"update_run_sheet","description":"Replace your complete run sheet for a wedding. Every item must include all eight fields: id, time, end_time, title, description, location, assigned_to, and category. Use an empty string for an unset id, time, end_time, description, location, or assigned_to; an empty id creates a new row. Use category \"other\" when no more specific category applies. Your existing rows omitted from items are deleted. Array order becomes the display order."},{"name":"propose_timeline_change","description":"Change the wedding date. Applies immediately when allowed; when a managing planner or venue controls the timeline, the change is queued for approval. Day-of times and locations belong in run-sheet rows via update_run_sheet."},{"name":"get_wedding_weather","description":"Weather outlook for a wedding: sunrise, golden hour and sunset times for the day, plus the live forecast (run-up days + an hour-by-hour view once the wedding is within ~10 days). Read-only."},{"name":"add_sun_times","description":"Add Sunrise and Sunset markers to the wedding timeline at their real local times (point-in-time facts). Idempotent — skips any already present. Needs the wedding date + a location."},{"name":"save_timeline_item","description":"Add ONE timeline item (omit id) or edit one of YOUR items (with id). Granular alternative to update_run_sheet. Fields: title (required when adding), time (\"14:30\"), end_time, location, assigned_to (who), category (getting_ready|ceremony|portraits|reception|other), description, visibility (couple=everyone, vendors=vendors only, private=just you; default couple). Relative timing: set relative_to + relation + gap_minutes to time this item relative to another item or the sun (its clock is then computed). duration_minutes/pinned supported. You can only edit items you own."},{"name":"remove_timeline_item","description":"Delete one of YOUR timeline items by id."},{"name":"set_timeline_item_started","description":"Live mode (on the wedding day): mark a timeline item as started right now (stamps the venue-local time and drives the running-ahead/behind status), or clear it with started=false. The timeline lead can mark any item; otherwise you can mark your own."},{"name":"end_live_timeline","description":"End live mode for the day — clears every recorded start time on the timeline. Timeline lead only."},{"name":"get_wedding_vendors","description":"Get the wedding team as markdown. The couple's vendor_visibility setting is enforced; on a private wedding an ordinary vendor receives only their own roster entry."},{"name":"get_private_notes","description":"Get your own private notes for a wedding. These are stored on your wedding membership and are never returned to the couple or other vendors."},{"name":"update_private_notes","description":"Replace your own private notes for a wedding (markdown). For safer dictated additions, prefer append_wedding_note or capture_wedding_note with scope private."},{"name":"read_wedding_notes","description":"Read one of the three wedding note layers. Defaults to private for safety. shared = Everyone note visible to vendors and the couple; vendors = vendors-only shared note hidden from the couple; private = your own note only. Returns markdown."},{"name":"append_wedding_note","description":"Append text to the BOTTOM of a wedding note (markdown). Defaults to private for safety. Use shared for the Everyone note or vendors for the vendors-only shared note. Existing content is kept and your text is added below."},{"name":"get_wedding_log","description":"Get the changelog/activity log for a wedding."},{"name":"get_wedding_credits","description":"Get the vendor credits list for a wedding (for Instagram or blog), limited by the couple's vendor_visibility setting."},{"name":"search_contacts","description":"Search contacts/enquiries by name, email, status, source, or wedding details. Results include created_at/updated_at so agents can answer newest/most recent questions."},{"name":"get_upcoming_events","description":"Get upcoming calendar events for the next N days."},{"name":"add_or_import_booking","description":"Add or import a couple and their booking into Wedding Computer. Use this whenever the authenticated vendor asks to add, import, save, or bring in a couple, pasted email enquiry, booking confirmation, old booking, or CRM record. Extract the couple, contact and wedding details from the user's text, then create or match the contact, mark it booked/completed, and create the wedding workspace and calendar booking. Matching is tenant-scoped and uses the wedding date together with either participant email, so a repeat client on a different date remains a separate booking. Existing non-empty contact fields are preserved; conflicting supplied details are returned for review instead of overwritten. This is the only MCP tool for bringing a new couple or booking into the vendor's records. It is silent: never submits an enquiry, calls AI, sends an automated reply, emails the vendor, or invites the couple. Requires first_name, last_name, email, and wedding_date."},{"name":"update_wedding_details","description":"Edit the operational details of a wedding. Manager permission is required. Date/range changes obey planner or venue timeline control and may be sent for approval; other supplied fields apply immediately. Omitted fields are unchanged and explicit null clears an optional field."},{"name":"change_wedding_status","description":"Change a wedding lifecycle status to planning, confirmed, postponed, completed, or cancelled. Manager permission is required. Cancellation is reversible, removes the wedding from active calendars without deleting its data, updates the linked CRM contact, notifies the wedding team, and requires the exact wedding title in confirm_title."},{"name":"list_timeline_change_requests","description":"List pending run-sheet or wedding-date changes awaiting this wedding's timeline lead. Timeline lead only."},{"name":"decide_timeline_change_request","description":"Approve or decline a pending run-sheet or wedding-date change. Timeline lead only. Approval applies the proposal and triggers the same calendar, live-update, storage and requester-notification side effects as the app."},{"name":"create_contact","description":"Create a CRM contact or enquiry without creating a wedding, sending email, or inviting anyone. Use add_or_import_booking instead when the user is bringing in an existing booking."},{"name":"update_contact","description":"Edit an existing tenant-scoped CRM contact. Omitted fields are unchanged and explicit null clears an optional field. This does not send email or create a wedding."},{"name":"list_calendar_events","description":"List vendor calendar events in an exact inclusive date range, including IDs needed for edits. Defaults to today through 90 days ahead."},{"name":"create_calendar_event","description":"Create a private vendor calendar event. It can optionally be linked to an accessible wedding for context, but it does not alter the shared run sheet or send notifications."},{"name":"update_calendar_event","description":"Edit one of the vendor's calendar events by ID. Omitted fields are unchanged. Wedding booking markers and client appointments must be changed through their dedicated wedding or appointment workflows."},{"name":"delete_calendar_event","description":"Delete one ordinary vendor calendar event. Requires confirm_title to exactly match the event title. Wedding booking markers and client appointments cannot be deleted with this tool."},{"name":"list_invoices","description":"List up to 500 vendor invoices with contact, wedding, totals, due dates and payment status. Read-only and does not send or change invoices."},{"name":"get_invoice","description":"Get one vendor invoice and its payment schedule by ID. Read-only and tenant-scoped."},{"name":"list_wedding_actions","description":"List shared planner actions for a wedding, including assignees, due dates and completion state. Requires access to the enabled Shared actions app."},{"name":"create_wedding_action","description":"Create a shared planner action for a wedding. Requires management permission for the enabled Shared actions app. Optional reminders require both an assignee and due date."},{"name":"set_wedding_action_status","description":"Mark a shared wedding action complete or reopen it. Any member who can view the enabled Shared actions app may update its completion state."}]}