Awesome MCP Servers by AI Anytime

Directory / Work & productivity

Mooi

Plan group gatherings with dates, availability votes, questions and decisions; no login or API key, email required to join an event. Endpoint: https://mooi.fyi/mcp

Live  Answered an MCP handshake without credentials and listed 18 tools.

Category
Work & productivity
Transport
http
Source
https://mooi.fyi/docs
Endpoint
https://mooi.fyi/mcp
Reports itself as
Mooi 1.0.0
Protocol
2025-06-18
Tools
18
Context cost
about 4,640 tokens for the tool definitions (estimated at four characters per token)
Tool definitions last changed
no change seen since first check
Handshake time
352 ms
Last checked
2026-11-03 16:08:52 UTC
Listed since
2026-11-03

Health and compatibility

Endpoint reachableVerifiedResponded in 352 ms
MCP handshake (initialize)VerifiedCompleted without credentials
Tool discovery (tools/list)Verified18 tools listed
AuthenticationVerifiedNone needed to connect
Protocol versionVerified2025-06-18
TransportVerifiedStreamable HTTP
Capabilities declaredVerifiedtools

Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.

Recent history

1 daily check so far. Green answered, violet asked for auth, red did not answer.

Set up in your client

Claude Code

Run this in a terminal:

claude mcp add --transport http mooi https://mooi.fyi/mcp

Claude Desktop

Open Settings → Connectors → Add custom connector and paste this URL:

https://mooi.fyi/mcp

Or bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):

{
  "mcpServers": {
    "mooi": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mooi.fyi/mcp"
      ]
    }
  }
}

Cursor

Add to Cursor

Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "mooi": {
      "url": "https://mooi.fyi/mcp"
    }
  }
}

VS Code

Add to VS Code

Or add it to .vscode/mcp.json:

{
  "servers": {
    "mooi": {
      "type": "http",
      "url": "https://mooi.fyi/mcp"
    }
  }
}

Or from a terminal:

code --add-mcp '{"name": "mooi", "type": "http", "url": "https://mooi.fyi/mcp"}'

Windsurf

Add it to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mooi": {
      "serverUrl": "https://mooi.fyi/mcp"
    }
  }
}

Other clients

Most clients accept this shape. The endpoint is:

https://mooi.fyi/mcp
{
  "mcpServers": {
    "mooi": {
      "type": "http",
      "url": "https://mooi.fyi/mcp"
    }
  }
}

If it does not connect

Tools 18

Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON

acknowledge_changescan modifydestructiveexternal accessRecord that you have read changes up to a version. Does not send email or create a new change.

Record that you have read changes up to a version. Does not send email or create a new change.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
versionintegerrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "acknowledge_changes",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "version": 0
    }
  }
}
add_commentcan modifydestructiveexternal accessPost a message or answer a question. questionId attaches it to that discussion. Returns a direct comment link.

Post a message or answer a question. questionId attaches it to that discussion. Returns a direct comment link.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
bodystringrequired
questionIdstringoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "add_comment",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "body": "..."
    }
  }
}
add_poll_optioncan modifydestructiveexternal accessAdd an option to an open question, such as a city or restaurant.

Add an option to an open question, such as a city or restaurant.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
questionIdstringrequired
labelstringrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "add_poll_option",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "questionId": "...",
      "label": "..."
    }
  }
}
ask_questioncan modifydestructiveexternal accessAsk a question or create a poll. Use kind city first, then restaurant with parentId pointing to the city …

Ask a question or create a poll. Use kind city first, then restaurant with parentId pointing to the city question. Empty options allow an open discussion.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
titlestringrequired
kindstringoptionalOne of: city, restaurant, general
parentIdstringoptional
optionsstring[]optional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "ask_question",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "title": "..."
    }
  }
}
create_eventcan modifydestructiveexternal accessCreate an event and register its host. Supply a random UUID requestId and reuse it for uncertain retries, …

Create an event and register its host. Supply a random UUID requestId and reuse it for uncertain retries, including across HTTP/MCP clients. Give personalUrl only to the host; share the plain url with invitees. Email is required for event updates.

ParameterTypeDescription
requestIdstringoptional
titlestringrequired
descriptionstringoptional
timezonestringrequired
namestringrequired
emailstringrequired
agentstringoptional
emailAccessbooleanoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "create_event",
    "arguments": {
      "title": "...",
      "timezone": "...",
      "name": "...",
      "email": "..."
    }
  }
}
decide_questioncan modifydestructiveexternal accessRecord the current choice of city, restaurant or other detail, or reopen a question. Agents may decide using …

Record the current choice of city, restaurant or other detail, or reopen a question. Agents may decide using the group’s responses and discussion without separate human approval. State unresolved assumptions; do not claim unanimous human approval from vote counts or silence. A human veto requires reopening and finding an alternative.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
questionIdstringrequired
decisionstringoptional
reopenbooleanoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "decide_question",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "questionId": "..."
    }
  }
}
get_changesread-onlyFetch changes strictly after sinceVersion. Save nextVersion only after processing. Read-only: never emails …

Fetch changes strictly after sinceVersion. Save nextVersion only after processing. Read-only: never emails participants. Poll every 300 seconds if you cannot monitor email.

ParameterTypeDescription
eventIdstringrequired
sinceVersionintegeroptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "get_changes",
    "arguments": {
      "eventId": "..."
    }
  }
}
get_channel_updateread-onlyBuild a linked message for WhatsApp, Signal or email, excluding already-recorded deliveries. Only send when …

Build a linked message for WhatsApp, Signal or email, excluding already-recorded deliveries. Only send when shouldSend is true. This does not send anything. Send with your authorized channel connector and record delivery afterwards.

ParameterTypeDescription
eventIdstringrequired
channelstringrequiredOne of: whatsapp, signal, email
sinceVersionintegeroptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "get_channel_update",
    "arguments": {
      "eventId": "...",
      "channel": "whatsapp"
    }
  }
}
get_eventread-onlyRead the event, dates, availability, questions, decisions and activity. Emails are private and never returned.

Read the event, dates, availability, questions, decisions and activity. Emails are private and never returned.

ParameterTypeDescription
eventIdstringrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "get_event",
    "arguments": {
      "eventId": "..."
    }
  }
}
join_eventcan modifydestructiveexternal accessRegister yourself or the person you represent, with their email. Set emailAccess to whether your agent can …

Register yourself or the person you represent, with their email. Set emailAccess to whether your agent can monitor that inbox. Do not register other people without their permission.

ParameterTypeDescription
eventIdstringrequired
namestringrequired
emailstringrequired
agentstringoptional
emailAccessbooleanoptional
requestIdstringrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "join_event",
    "arguments": {
      "eventId": "...",
      "name": "...",
      "email": "...",
      "requestId": "..."
    }
  }
}
propose_datecan modifydestructiveexternal accessAdd a date option with ISO 8601 start and end including UTC offset. The event timezone controls display. …

Add a date option with ISO 8601 start and end including UTC offset. The event timezone controls display. Check accessible calendars and propose suitable options autonomously; do not claim unverified availability as certain.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
startstringrequired
endstringrequired
labelstringoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "propose_date",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "start": "...",
      "end": "..."
    }
  }
}
record_channel_updatecan modifydestructiveexternal accessRecord a successful external message delivery. Only call after your channel confirms the message was sent. …

Record a successful external message delivery. Only call after your channel confirms the message was sent. Does not trigger more emails.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
channelstringrequiredOne of: whatsapp, signal, email
versionintegerrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "record_channel_update",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "channel": "whatsapp",
      "version": 0
    }
  }
}
remove_datecan modifydestructiveexternal accessRemove a proposed date. A confirmed date must first be changed or the event reopened.

Remove a proposed date. A confirmed date must first be changed or the event reopened.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
dateIdstringrequired

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "remove_date",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "dateId": "..."
    }
  }
}
set_availabilitycan modifydestructiveexternal accessSet or change your yes/maybe/no response to one or more proposed dates. Check accessible calendars and …

Set or change your yes/maybe/no response to one or more proposed dates. Check accessible calendars and respond autonomously without asking for approval for each vote; use maybe for uncertainty. Change responses when the human vetoes or circumstances change. Omitted dates remain unchanged.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
responsesobject[]required

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "set_availability",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "responses": []
    }
  }
}
set_channelscan modifydestructiveexternal accessSet where the group communicates. These are labels for participants’ agents, not credentials or automatic …

Set where the group communicates. These are labels for participants’ agents, not credentials or automatic integrations. Agents prepare updates and use their own authorized messaging tools.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
channelsobject[]required

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "set_channels",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "channels": []
    }
  }
}
update_eventcan modifydestructiveexternal accessUpdate the title, description, timezone, location or event status. Agents may select and confirm the current …

Update the title, description, timezone, location or event status. Agents may select and confirm the current proposed plan without per-step human approval; confirmation requires a proposed date. Humans may veto later: set status to planning, coordinate alternatives and select a revised plan.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
titlestringoptional
descriptionstringoptional
timezonestringoptional
locationstringoptional
statusstringoptionalOne of: planning, confirmed, cancelled
confirmedDateIdstringoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "update_event",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "..."
    }
  }
}
update_participantcan modifydestructiveexternal accessChange your display name, agent, email monitoring mode or email notification preference. Reading and cursor …

Change your display name, agent, email monitoring mode or email notification preference. Reading and cursor acknowledgements do not trigger emails.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
namestringoptional
emailAccessbooleanoptional
notificationsbooleanoptional

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "update_participant",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "..."
    }
  }
}
votecan modifydestructiveexternal accessReplace your votes on a question. Choose all acceptable options; an empty array clears your votes. Agents may …

Replace your votes on a question. Choose all acceptable options; an empty array clears your votes. Agents may vote and revise votes autonomously using known preferences and reasonable stated assumptions. Reopen decided questions with decide_question before changing votes. Votes do not decide the question automatically; use decide_question to record the selected plan.

ParameterTypeDescription
eventIdstringrequired
participantIdstringrequired
agentstringoptional
requestIdstringrequired
questionIdstringrequired
optionIdsstring[]required

Example call (required arguments only, placeholder values):

{
  "method": "tools/call",
  "params": {
    "name": "vote",
    "arguments": {
      "eventId": "...",
      "participantId": "...",
      "requestId": "...",
      "questionId": "...",
      "optionIds": []
    }
  }
}

Badge

Maintain this server? Put its live status in your README:

MCP status badge

[![MCP status](https://mcp.aianytime.net/badge/mooi.svg)](https://mcp.aianytime.net/s/mooi/)

Edit this entry · Report a problem

More in Work & productivity

Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt

Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers