Tools
The curated set of tools the LaunchList MCP server exposes, grouped by area, each marked whether it reads your data or changes it.
The MCP server exposes a curated set of tools, not a mirror of every REST endpoint. Each one is a semantic action described so an assistant knows when to use it. Every tool reads your data or writes to it, never both, and a connected credential only sees the tools it is allowed to call, so a read-only API key never shows a write tool at all. They are grouped below by area, in the order an assistant reaches for them: workspace and projects first, then pages, then the audience, then imports, broadcasts and automations.
Workspace and projects#
| Tool | Reads or writes | What it does |
|---|---|---|
get_workspace |
Read | Your workspace, plan and size, what the plan includes, its limits (contacts, emails a month, projects) against your usage, any contacts held past your size, the link to your plan page, and the current key's scopes. |
list_projects |
Read | The projects in the workspace, newest first, a page at a time. A key pinned to one project returns only that one. |
get_project |
Read | One project with its pipeline stages, capture forms and headline numbers. Each form lists its fields (key, label, type, required) and whether it asks people to verify their email, so an assistant can tell you what a signup sees and receives. |
create_project |
Write | Start a new project: one waitlist with its own signup form, audience and draft launch page. Optionally pick the page's public address. Your plan limits how many projects you have, and when it is reached the tool names the projects you already have. Nothing is live until the page is published. It does not need a verified email address. |
update_project |
Write | Rename a project, change the address of its launch page, or both. A new account starts with a project called "My first launch", which this renames after your idea. A new address keeps the old one redirecting to it. It changes the name and address only, not the words on the page. |
locate_setting |
Read | Find where a feature or setting is configured in the dashboard, from a plain-language question like "custom domain" or "double opt-in", and get a link to open it. It returns navigation only, never your data. |
Launch pages#
| Tool | Reads or writes | What it does |
|---|---|---|
list_pages |
Read | Every hosted page a project has, its landing pages and its status page, each marked published or draft with a link to view it. |
get_page |
Read | One page in detail: its title, whether it is live, a link, and a summary of the blocks it is built from. |
create_page |
Write | Rewrite your launch page from a plain description, built from real blocks with the project's form wired in. It writes the page's draft, and the draft it replaces can be restored from the editor: nothing is live until the page is published. Included on every plan, within a fair-use limit. |
update_page |
Write | Revise an existing draft page by describing the change in plain words, like "add an FAQ" or "make the hero dark". It keeps everything you did not ask to change, and only ever edits the draft: nothing is live until the page is published. Included on every plan, within a fair-use limit. |
apply_page_edits |
Write | Apply an exact, ordered list of edits to a draft page, such as changing a block's words or layout, adding, removing or moving blocks, or changing the page's theme, with no model in the loop and applied all at once or not at all. Like the other page tools it edits the draft only. |
prepare_page_publish |
Read | Step one of publishing: the address the page will be live at, whether it is live already, the headline, a preview link and a confirmation token. It publishes nothing and changes nothing. Needs a verified email address on the account. |
publish_page |
Write | Step two: publish the draft at its address, using the confirmation token prepare_page_publish returned. It replaces whatever is live and makes the page public, so the assistant shows you the address and what goes live first and publishes only after you say yes. It is the same action as the Publish button in the editor. |
Audience#
Contacts, tags and segments. Bulk imports are their own area below.
| Tool | Reads or writes | What it does |
|---|---|---|
get_audience_stats |
Read | Signup totals, arrivals over time, launch page views and the share of visits that became signups, and breakdowns by status, stage and source. This is how you answer "how many signups". Where your plan limits part of the answer (the source breakdown, how far back it reaches, contacts held past your size), the answer still comes back, says what is missing and why, and names the plan that removes the limit with a link. |
get_leaderboard |
Read | Your top referrers, most referrals first: who brought in the most signups through their own link, with their referral count and place in line. Test contacts and contacts held past your plan's size are never listed. |
search_audience |
Read | Find contacts by identifier, status, stage, signup date, tag or segment, newest first. |
get_contact |
Read | One contact in full: identity, subscription status, stage, attributes, referral standing and their last 10 emails. |
list_segments |
Read | Every saved segment, with a live matching count, and every tag, with how many contacts carry it. |
preview_segment |
Read | Count how many contacts an unsaved rules tree matches, without saving anything. |
capture_signup |
Write | Add someone to a project's waitlist through the real signup pipeline: dedupe, referral credit, the verification email when the form asks people to verify, and automations. A new signup is subscribed at once, and the answer says where they stand on verifying (verification). Optionally stamp your own external_id. Someone already on the list is never changed. |
update_contact_stage |
Write | Move one contact through the funnel, for example from waitlist to invited. Moving into the invited stage mints an invitation and sends its email. |
update_contact |
Write | Edit the custom attributes stored on one contact, like company or role. Keys you pass are merged onto the contact; a key set to null removes it. It cannot change identity, subscription status or funnel stage. |
invite_contacts |
Write | Give early access to up to 50 named contacts at once, as a labelled wave. Emails each person their invitation. |
unsubscribe_contact |
Write | Opt one contact out of your broadcasts and automations. Emails about their own spot, like an invitation, still go. Their data is kept. |
resubscribe_contact |
Write | Subscribe one contact a teammate unsubscribed, or an imported contact listed as not subscribed. Your statement that they asked to hear from you, recorded on the contact. It cannot undo a person's own unsubscribe or a spam complaint, and sends no email. New signups are already subscribed. |
tag_contacts |
Write | Add a tag to a list of contacts, or to everyone a saved segment matches. Creates the tag if the name does not already exist. |
untag_contacts |
Write | Remove a tag from a list of contacts, or from everyone a saved segment matches. Never deletes the contacts or the tag itself. |
create_segment |
Write | Save a rules tree as a named, reusable segment. |
Imports#
| Tool | Reads or writes | What it does |
|---|---|---|
get_import |
Read | Status of a bulk import: counts, and up to 100 rejected rows with the reason. |
import_contacts |
Write | Bulk-import up to 1,000 contacts without the signup pipeline, exactly like the dashboard's CSV import. Silent: no verification or welcome email, no automation enrollment. Requires saying whether these people asked to hear from the founder. A row can carry its own consent, and update_subscription lets a file change existing contacts' subscription. |
Broadcasts#
| Tool | Reads or writes | What it does |
|---|---|---|
list_broadcasts |
Read | A project's broadcasts, newest first, with headline results. |
get_broadcast |
Read | One broadcast in full: content, audience, delivery, status and results, optionally with a page of who it went to. |
prepare_broadcast_send |
Read | Check a broadcast before sending: problems to fix, recipient count, who would be skipped and why, who it goes to (verified, waiting for verification, or verified or not) and how many of them have not verified, whether it goes out gradually, and a confirmation token. Sends nothing and changes nothing. |
save_broadcast |
Write | Create a broadcast draft, or edit one that has not gone out yet, including who it goes to. This never sends anything. |
send_test_broadcast |
Write | Send one copy of a broadcast, marked [TEST], to a member of your team (by default, the person who connected the assistant) so they can see it in a real inbox. Does not count as sending, and nobody in the audience gets anything. |
send_broadcast |
Write | Step two of sending: email a broadcast to its audience now, or schedule it, using the confirmation token prepare_broadcast_send returned. Sends real email and cannot be undone. |
pause_broadcast |
Write | Stop a sending broadcast where it is. Nobody else gets it until it is resumed, and a batched broadcast keeps its schedule. |
resume_broadcast |
Write | Pick a paused broadcast back up. Nobody who already got it is sent it again. |
cancel_broadcast |
Write | Stop a scheduled, sending or paused broadcast for good. Emails already sent stand; it cannot be resumed afterward. |
Automations#
Read-only: there is no tool to enroll a contact. Every enrollment traces back to a real event (a signup, a verification, a referral, a stage change, launch day), never a direct write.
| Tool | Reads or writes | What it does |
|---|---|---|
list_automations |
Read | Every automation, its trigger and its live status. Pass a contact to also see their own enrollment state. |
Notes worth keeping in mind#
- Numbers come from precomputed counters. Use
get_audience_statsto count, never a page ofsearch_audience. - A signup is never refused over a plan limit. It is captured and returned locked; the fix is an upgrade, not a retry.
- When your plan is what blocks a request, the assistant is told which plan removes it. Sending a broadcast, saving your own segments, a second project, hiding the "Powered by LaunchList" badge and seeing contacts held past your size all come back with the plan that includes it and a link to your plan page, opened on the right workspace. A request your plan only limits in part (the source breakdown, how far back the numbers reach) still gets its answer, with the reason and the same link. Nothing is bought through the connector: the link opens your plan page and you decide there.
- Sending a broadcast is two steps, on purpose.
prepare_broadcast_sendonly checks and counts;send_broadcastneeds the token that step returned, which expires in 15 minutes and stops working if the broadcast changes or the recipient count moves. An assistant should show you the count and a sample before it sends anything. import_contactsis silent by design. It is the dashboard's CSV import, not the signup pipeline: no verification or welcome email goes out, and no automation enrolls. It requires saying whether the list already agreed to hear from you, because that decides whether the contacts can be mailed or must wait until you subscribe them withresubscribe_contact.- Publishing a page is two steps, on purpose.
prepare_page_publishonly looks;publish_pageneeds the token that step returned, which expires in 15 minutes, works once and stops working if the page changes. An assistant should show you the address and what goes live before it publishes. Both need a verified email address on your account, as does sending a broadcast. Setting up a project and writing a draft do not. - Contact fields and survey answers are end-user data, written by your signups. The server treats them as data, never as instructions, and so should any assistant you connect.
The surface grows over time. See Security and permissions for how the most sensitive tools can be kept off a connection.
Common questions
Can an assistant delete my contacts over MCP?
No. There is no delete tool on the MCP surface. Deletion stays in the dashboard and the REST API, behind their own confirmation.
How many tools does the server expose?
40: a curated set of semantic actions, not a copy of every REST endpoint (the REST API has more operations because an integration composes them; a model picks one tool per turn instead). Each one is described richly enough for an assistant to use correctly without a long list of near-duplicate low-level calls.
Can an assistant publish my launch page?
Yes, in two steps and only when you say yes. prepare_page_publish shows the address the page will be live at, its headline and a preview link, and publishes nothing. An assistant should show you that and publish with publish_page only after you agree. The confirmation token expires in 15 minutes, works once, and stops working if the page is edited in between. Publishing needs a verified email address on your account, the same as the dashboard. If your assistant does not list publish_page, press Publish in the editor instead.
Can an assistant send email to my audience on its own?
No. Sending a broadcast is two calls: prepare_broadcast_send only checks and counts, and send_broadcast needs the token that step returned. An assistant should show you what prepare_broadcast_send found and get a yes before calling send_broadcast, and the broadcasts:send scope it needs is only ever granted to someone who could already send campaigns themselves.