{"$schema":"https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json","name":"com.getaisley/aisley","title":"Aisley","description":"Read and work on the connected wedding from ChatGPT or Claude. ask_aisley answers from the couple's plan in Aisley, the other tools list and change that plan, show_venue_shortlist and show_vendor_conversations render the shortlist and the inbox as MCP Apps UI, and open_aisley and open_wedding_panel open the wedding as a ChatGPT sidebar app and conversation panel. Tools that change the wedding or send email carry MCP annotations so the client asks the couple first. Authorized per wedding through OAuth with the couple's Aisley account.","version":"2.1.0","websiteUrl":"https://getaisley.com/developers","serverUrl":"https://getaisley.com/mcp","tools":[{"name":"ask_aisley","description":"Ask Aisley a question about the connected wedding. She answers from the couple's plan in Aisley and never changes it."},{"name":"open_aisley","description":"Opens the connected wedding in Aisley as an app: the countdown, what needs the couple, the venue shortlist and the vendor inbox."},{"name":"open_wedding_panel","description":"Opens a side panel beside the conversation with the wedding countdown, what needs the couple, venues and inbox."},{"name":"show_venue_shortlist","description":"Shows the couple's venue shortlist as a card with each venue's status, quoted price or price signal, and whether their date is free. It changes nothing; to act on a venue, get its venueId from list_venues and use update_venue, set_venue_status or add_venue_note."},{"name":"show_vendor_conversations","description":"Shows the couple's conversations with venues and vendors as an inline card: the latest reply, who is waiting on whom and for how long, and Aisley's drafted reply. To read a whole thread use get_conversation; to answer, use reply_to_vendor once the couple has seen and approved the reply."},{"name":"get_venue_detail","description":"Returns one shortlisted venue with its pros, cons, notes and timeline, for the Aisley widgets."},{"name":"list_tasks","description":"Lists the wedding's to-do tasks with each taskId, status, urgency, due date and who has it, plus the memberId of each person a task can go to. Call it before update_task, set_task_status, dismiss_task or assign_task to get the taskId."},{"name":"create_task","description":"Adds a task to the couple's to-do list in Aisley. Give it to aisley and she starts on it straight away; leave assignee out to give it to both of them."},{"name":"update_task","description":"Changes a task's title, description, urgency or due date. Only the fields you pass change; an empty string clears the description or a due date. Use set_task_status to tick it off and assign_task to hand it over."},{"name":"set_task_status","description":"Moves a task to open, in_progress or done, and reopens a dismissed one with open. To take a task off the list, use dismiss_task. Get the taskId from list_tasks."},{"name":"dismiss_task","description":"Takes a task off the couple's to-do list. It stays in Aisley as dismissed and set_task_status with open brings it back. Get the taskId from list_tasks."},{"name":"assign_task","description":"Hands a task to Aisley, to one of the couple, or back to both of them. Handing an open task to aisley starts her on it. Get the taskId and memberIds from list_tasks."},{"name":"draft_task_plan","description":"Asks Aisley to draft a starter to-do list from the wedding's details, skipping tasks already on the list. The tasks arrive within a minute or two; call list_tasks afterwards to see them. Uses the couple's Aisley credit."},{"name":"search_venues","description":"Starts Aisley's venue search for this wedding from a plain description, such as \"barn venues near Bath for 120 guests under £15k\". It runs for a minute or two in the background and returns a searchId; call get_venue_search with it to read the results. Uses the couple's Aisley credit and their search allowance, so check list_venue_searches for a recent search on the same thing first."},{"name":"list_venue_searches","description":"Lists the wedding's recent venue searches, newest first, with each searchId, query, status and result count. Use it to find a searchId for get_venue_search or load_more_venue_results."},{"name":"get_venue_search","description":"Returns a venue search's status and a page of its results, each with a resultId, why it fits, its price signal, and whether the couple saved or dismissed it. Call it after search_venues until the status is complete. Pass a resultId to save_venue to shortlist one, or to dismiss_venue_result to drop it."},{"name":"load_more_venue_results","description":"Asks Aisley to look for more venues on a finished search, skipping the ones it already found. Only works while get_venue_search says canLoadMore. The new results arrive within a couple of minutes on the same searchId. Uses the couple's Aisley credit and their search allowance."},{"name":"dismiss_venue_result","description":"Drops a venue the couple doesn't want from the search results. Aisley leaves it out of future searches and treats the reason as a red line when she searches again; undo_venue_dismissal brings it back. Get the resultId from get_venue_search."},{"name":"undo_venue_dismissal","description":"Brings a dismissed venue back into the search results and future searches. Get the resultId from get_venue_search with filter dismissed."},{"name":"list_venues","description":"Lists the venues on the wedding's shortlist with each venueId, status, price, capacity, contact details, whether the date is free, and the pros and cons. Call it before get_venue, update_venue, set_venue_status, add_venue_note or remove_venue to get the venueId."},{"name":"get_venue","description":"Returns one shortlisted venue in full: contact details, quoted price, capacity, notes, its timeline, and every pro, con and comment with the entryId that remove_venue_note takes. Get the venueId from list_venues."},{"name":"save_venue","description":"Adds a venue to the couple's shortlist. Pass a resultId from get_venue_search to save a search result with what Aisley found, or a name or website for a venue the couple found themselves, which Aisley then fills in from its website. A venue whose website is already on the shortlist isn't added twice."},{"name":"update_venue","description":"Records what the couple has learned about a shortlisted venue: the quoted price, capacity, contact details, notes, and whether their date is available. Only the fields you pass change; an empty string clears one. Use set_venue_status to move it along. Get the venueId from list_venues."},{"name":"set_venue_status","description":"Moves a shortlisted venue along: shortlisted, contacted, in_conversation, viewing_booked, booked, or ruled_out to take it out of the running while keeping its record. Booked also adds the venue to the budget. Get the venueId from list_venues."},{"name":"remove_venue","description":"Deletes a venue from the shortlist for good, with its notes, timeline and email history. To keep the record and just take it out of the running, use set_venue_status with ruled_out. Get the venueId from list_venues."},{"name":"add_venue_note","description":"Adds a pro, a con or a comment to a shortlisted venue, where both of the couple see it beside the venue. Get the venueId from list_venues."},{"name":"remove_venue_note","description":"Deletes one pro, con or comment from a venue. Get the entryId from get_venue."},{"name":"get_wedding","description":"Returns the wedding's details as Aisley plans around them: name, couple, date or timeframe, region, guest count, budget, vibe and vendor follow-up settings, plus whether the person connected is the owner and their role in the wedding. Call it before update_wedding_details to see what is set."},{"name":"update_wedding_details","description":"Changes the facts Aisley plans around: the wedding's name, the couple's names, the date or rough timeframe, region, destination or close to home, guest count, budget, currency and vibe. Only the fields you pass change; pass null to clear one. Aisley rescales the budget estimates when the guest count or budget moves."},{"name":"set_follow_up_settings","description":"Turns Aisley's automatic chasing of quiet vendors on or off, and sets how many days of silence she waits before following up (3 to 14). Only the settings you pass change."},{"name":"list_members","description":"Lists everyone planning this wedding in Aisley with their memberId, email, whether they own it, and their role in the wedding (bride, groom, planner or guest). Call it before set_wedding_role to get a memberId."},{"name":"set_wedding_role","description":"Sets someone's role in the wedding: bride, groom, planner or guest. Leave memberId out to set the connected person's own role; only the owner can set someone else's. Get memberIds from list_members."},{"name":"invite_partner","description":"Emails an invitation to plan this wedding in Aisley to a partner, planner or family member. Only the wedding's owner can invite. The link in the email is valid for 14 days and is never shown here."},{"name":"list_aisley_threads","description":"Lists the wedding's past conversations with Aisley in the app, newest first, with each threadId, title and date. Call it before read_aisley_thread. To ask Aisley something new, use ask_aisley."},{"name":"read_aisley_thread","description":"Returns the messages of one past conversation with Aisley, oldest first, up to the latest 40. Get the threadId from list_aisley_threads."},{"name":"get_gmail_status","description":"Says whether the couple's Gmail is connected so Aisley can write to vendors from their address, who connected it, whether vendor replies are forwarded to Aisley yet, and the next setup step."},{"name":"connect_gmail","description":"Gives the getaisley.com link where the couple connects their Gmail and sets up forwarding, which they finish in their browser. Use it when get_gmail_status shows a step left or a reconnect is needed."},{"name":"get_billing_status","description":"Shows the wedding's Aisley plan, how much credit is left and when it renews. Only the wedding's owner sees billing; anyone else is told who to ask."},{"name":"open_billing","description":"Gives the getaisley.com link where the wedding's owner subscribes, tops up credit or manages billing in their browser. Use it when Aisley is out of credit or the couple asks to pay."},{"name":"send_feedback","description":"Sends the couple's feature request or problem report to the people who build Aisley. Use interest with a topic to register interest in an upcoming area."},{"name":"list_conversations","description":"Lists every conversation with a venue or vendor: who is waiting on whom, unread replies, and whether Aisley has a reply or follow-up drafted, each with its counterpartId. Call it first to get the counterpartId for get_conversation, reply_to_vendor, mark_conversation_read, dismiss_reply_suggestion, mute_follow_ups or resolve_quiet_conversation."},{"name":"get_conversation","description":"Returns one conversation with a venue or vendor: its messages oldest first, Aisley's suggested reply if there is one, a ready follow-up, and the address and subject a reply goes to. Read it before reply_to_vendor so the couple sees what they are answering. Get the counterpartId from list_conversations."},{"name":"mark_conversation_read","description":"Marks every reply in a conversation as read, as opening it in Aisley does. Get the counterpartId from list_conversations."},{"name":"dismiss_reply_suggestion","description":"Discards the reply Aisley drafted in a conversation, when the couple doesn't want it. Sending with reply_to_vendor clears it anyway. Get the counterpartId from list_conversations."},{"name":"reply_to_vendor","description":"Sends a reply in an existing conversation from the couple's connected Gmail, continuing the same email thread. Before calling it, show the couple the exact to, cc, subject and body, and only send what they approved. to must be the reply address from get_conversation; start from Aisley's suggested reply there when it fits. Get the counterpartId from list_conversations."},{"name":"draft_venue_email","description":"Has Aisley write an enquiry to one venue from the couple's plans, and returns it without sending. Show the couple the draft, then send it with send_venue_email once they approve. For several venues at once use start_batch_outreach. Uses the couple's Aisley credit. Get the venueId from list_venues."},{"name":"send_venue_email","description":"Sends a new email to one venue from the couple's connected Gmail and moves a shortlisted venue to contacted. Before calling it, show the couple the exact to, cc, subject and body and send only what they approved. To answer a venue that has already written back, use reply_to_vendor instead. Get the venueId from list_venues."},{"name":"start_batch_outreach","description":"Has Aisley draft one personal email to each of several venues. Nothing is sent: the drafts take a minute, then get_batch_outreach shows them for the couple to review. Venues without an email address are listed but get no draft. Uses the couple's Aisley credit. Get venueIds from list_venues."},{"name":"get_batch_outreach","description":"Returns every draft in a batch with its recipient, subject, body and status: still drafting, ready, sent, or why it has no draft. Leave batchId out for the most recent batch."},{"name":"update_batch_draft","description":"Replaces the subject and body of one ready draft in a batch with the couple's edits. Get the draftId from get_batch_outreach."},{"name":"discard_batch_draft","description":"Removes one venue's draft from a batch so it is never sent. Get the draftId from get_batch_outreach."},{"name":"discard_batch_outreach","description":"Throws away every draft in a batch so none of them is sent. Emails already sent stay in each venue's conversation. Get the batchId from start_batch_outreach or get_batch_outreach."},{"name":"send_batch_outreach","description":"Sends the chosen ready drafts in a batch from the couple's connected Gmail, one email per venue. Before calling it, show the couple every draft you pass in full, with its recipient, subject and body, and pass only the draftIds they approved. Sending takes a moment; get_batch_outreach then shows each as sent or why it failed."},{"name":"list_follow_ups","description":"Lists the conversations waiting on a venue or vendor, how many days each has waited, and the follow-up Aisley has drafted for each: its followUpId, recipient, subject and full body. Also shows conversations gone quiet after two follow-ups and ones with follow-ups muted. Call it before send_follow_up, dismiss_follow_up or resolve_quiet_conversation."},{"name":"send_follow_up","description":"Sends Aisley's drafted follow-up from the couple's connected Gmail, in the same email thread. Before calling it, show the couple the follow-up's to, subject and body from list_follow_ups, then pass them unchanged; a mismatch is refused. To send different words, use reply_to_vendor."},{"name":"dismiss_follow_up","description":"Discards one drafted follow-up without sending it. The conversation keeps waiting, and Aisley may draft the next one later; mute_follow_ups stops them for good. Get the followUpId from list_follow_ups."},{"name":"mute_follow_ups","description":"Stops Aisley drafting follow-ups in one conversation (muted true, which also discards a ready one) or lets her start again (muted false). Get the counterpartId from list_conversations or list_follow_ups."},{"name":"resolve_quiet_conversation","description":"Settles a conversation that has gone quiet after two follow-ups, as the couple decides: rule_out a venue, archive a vendor, or keep_waiting, which mutes further follow-ups. Get the counterpartId from list_follow_ups."},{"name":"get_budget","description":"Shows the wedding budget: the couple's total, the currency, what is planned, booked, quoted and estimated, what is paid, and every expense with its expenseId, category, supplier, status, amount and next payment due. Call it before save_expense or remove_expense to get the expenseId."},{"name":"save_expense","description":"Adds an expense to the wedding budget, or changes one when you pass its expenseId from get_budget. Amounts are whole units of the wedding's currency. Only the fields you pass change; an empty string clears the supplier or due date. A new expense needs a name."},{"name":"remove_expense","description":"Removes one expense from the wedding budget for good, when the couple says it is no longer happening. Get the expenseId from get_budget."},{"name":"set_budget_total","description":"Sets the couple's overall wedding budget, in whole units of the wedding's currency, or clears it with null. Typical estimates on the budget resize to follow it."},{"name":"estimate_budget","description":"Fills an empty budget with typical UK estimates, one per category, sized from the couple's total or, without one, the typical cost for their guest count and region. Only works while the budget has no expenses."},{"name":"list_notes","description":"Lists the wedding's notes, the pages Aisley and the couple keep about the plan (who they are, venues, suppliers, ideas), with each path and whether it can be edited. Call it before read_note or save_note to get the path."},{"name":"read_note","description":"Reads one of the wedding's notes in full, as markdown. Get the path from list_notes; index.md is the notes home."},{"name":"save_note","description":"Writes a note in the wedding's notes, replacing the whole page with the markdown you send, or adds a new page at a new path. To change part of a page, read_note first and send the full text back with the change. Pages Aisley keeps herself (the notes home and her activity log) can't be edited."},{"name":"list_moodboard","description":"Lists every image on the wedding's moodboards with its imageId, the board (facet) it is filed under, its labels, whether it shows big, and where it came from. Call it before changing or removing an image to get the imageId."},{"name":"add_moodboard_image_by_link","description":"Adds an image to the wedding's moodboard from a link: a direct image URL, or a page (Pinterest, a blog, TikTok) whose preview image Aisley fetches. Instagram links can't be fetched. Pass facet to choose the board; without one, Aisley files and labels the image herself shortly after."},{"name":"remove_moodboard_image","description":"Takes an image off the wedding's moodboard for good. Get the imageId from list_moodboard."},{"name":"set_moodboard_facet","description":"Files a moodboard image under a different board (facet), like florals or attire. Get the imageId from list_moodboard."},{"name":"set_moodboard_hero","description":"Shows a moodboard image big on its board (hero true), or back at its usual size (hero false). Get the imageId from list_moodboard."},{"name":"add_moodboard_label","description":"Adds a short label to a moodboard image, the couple's own words for finding it again, like \"candlelit\" or \"long table\". Get the imageId from list_moodboard."},{"name":"remove_moodboard_label","description":"Takes one label off a moodboard image; the image stays. Get the imageId and its labels from list_moodboard."},{"name":"find_inspiration","description":"Looks for wedding photo ideas on Unsplash, either for one of the moodboards (facet, styled from the couple's own images) or for anything the couple describes (query). Returns each idea's photoId and the queryKey that save_inspiration needs. Venue ideas come from the venue search instead, so the venue facet needs a query."},{"name":"save_inspiration","description":"Adds an idea from find_inspiration to the wedding's moodboard, with its Unsplash credit. Pass the queryKey and photoId find_inspiration returned, and facet to file it on a board."},{"name":"dismiss_inspiration","description":"Tells Aisley an idea from find_inspiration isn't for the couple, so it stops showing up in their ideas. It doesn't touch the moodboard."}],"remotes":[{"type":"streamable-http","url":"https://getaisley.com/mcp","supportedProtocolVersions":["2025-11-25","2025-06-18","2025-03-26","2024-11-05"]}]}