Skip to content
EventMoot
Docs

Claude & AI Assistants

Connect Claude, ChatGPT, and other AI assistants to EventMoot so they can plan, schedule, and manage events on your behalf.

Overview

EventMoot ships a public REST API and a Model Context Protocol server so AI assistants — Claude, ChatGPT, Copilot, and anything else that speaks MCP — can manage your events, polls, groups, and schedules as a full alternative to the web UI.

Instead of clicking through the dashboard, you can say things like:

"Schedule a campaign session for next weekend and let the party vote on times." "Is anyone in the Thursday Night group free for a one-shot this Friday?" "Finalize the D&D session for this weekend and pick the time with the most yeses."

The assistant authenticates with an API key you mint in your EventMoot settings, and operates strictly as you — it can only see and change things you already have access to.

What you need

  • An EventMoot account (any tier)
  • An AI assistant that speaks MCP — Claude Desktop, Claude Code, or anything else on this list
  • Two minutes to copy a key and edit a config file

Step 1 — Create an API key

Head to Settings → API Keys (or click here) and click Create new key:

  1. Give it a descriptive name — "My Claude Desktop", "Home Mac", "Work Laptop". You'll see this name in the key list so you know which one to revoke if a device gets lost.
  2. Leave the default read + write scopes unless you specifically want a read-only key for a shared device.
  3. Optionally set an expiration date. Unexpired keys stay valid until you revoke them.
  4. Click Create.

The full key appears exactly once in the format em_live_.... Copy it immediately — the UI will only ever show the first 16 characters again.

Your key inherits your subscription tier's rate limits and feature access. Revoke or rotate at any time from the same page.

Step 2 — Wire it up with your AI assistant

Claude Desktop

Open your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Add an eventmoot entry under mcpServers:

{
  "mcpServers": {
    "eventmoot": {
      "command": "npx",
      "args": ["-y", "@eventmoot/mcp-server"],
      "env": {
        "EVENTMOOT_API_KEY": "em_live_your_key_here",
        "EVENTMOOT_API_URL": "https://eventmoot.com"
      }
    }
  }
}

Save the file, then fully quit and relaunch Claude Desktop (not just close the window). When you open a new conversation, you should see a hammer icon indicating MCP tools are available. Ask "What can you do with EventMoot?" and Claude will list the tools.

Claude Code

From any terminal:

claude mcp add eventmoot npx @eventmoot/mcp-server -e EVENTMOOT_API_KEY=em_live_your_key_here -e EVENTMOOT_API_URL=https://eventmoot.com

The server is now registered globally. In any Claude Code session, ask it about your events and it will call the EventMoot tools automatically.

Other MCP clients

Any MCP-compatible client works — the two environment variables (EVENTMOOT_API_KEY and EVENTMOOT_API_URL) are the only configuration. Point the client at npx -y @eventmoot/mcp-server and you're done.

What Claude can do

The MCP server exposes 32 tools grouped by area:

Events

ToolWhat it does
list_eventsList your events, filter by status (DRAFT / PUBLISHED / FINALIZED / CANCELLED) or role (organizer, invited, responded)
create_eventCreate a new event with a title, description, location, and optional polls
get_eventFull event details by slug, including attendees and polls
update_eventEdit title, description, location, timezone
publish_eventPublish a draft so invitees can vote
finalize_eventPick the winning time slots and lock voting
cancel_eventCancel and notify attendees
delete_eventPermanently delete events you organized

Polls

ToolWhat it does
add_pollAdd a poll to an event. Supports DATE_SELECTION, MULTIPLE_CHOICE, SINGLE_CHOICE, RANKING, RATING, YES_NO, TEXT_RESPONSE
get_poll_resultsCurrent vote counts and rankings
submit_votesSubmit or update your votes on a poll

Groups (Moots)

ToolWhat it does
list_groupsYour groups with your role in each
create_groupCreate a new group
get_groupGroup details and recent activity
list_group_membersMembers and their roles
list_group_postsMessage board posts
create_group_postPost to a group's message board
reply_to_postReply to an existing post

Your profile

ToolWhat it does
get_my_profileYour profile, timezone, subscription tier
get_my_availabilityYour weekly availability schedule
update_my_availabilityUpdate your weekly availability

Invites, templates, notifications

ToolWhat it does
create_invite_linkGenerate a shareable invite link for an event
list_templatesAvailable event templates
create_event_from_templateOne-shot event creation from a saved template
list_notificationsYour unread notifications
mark_notifications_readDismiss notifications

Smart scheduling (Intelligence tools)

ToolWhat it does
suggest_timesAI-powered scheduling suggestions based on group availability
get_group_availabilityAggregated availability across a group for a date range
detect_conflictsCheck calendar conflicts for proposed times
list_recurring_patternsRecurring event patterns you've set up
create_recurring_patternSet up weekly / biweekly / monthly recurring events
get_busy_timesBusy times from connected Google / CalDAV calendars

Example prompts

Try asking your assistant things like:

  • "Find a time next weekend when the whole Saturday Night Crew is free, and draft a 2-hour session around it."
  • "What events do I have coming up this week?"
  • "Post a message to the Campaign group reminding everyone to set their availability for next month."
  • "Create a draft event called 'Session 47 — The Wizard's Library' and add a poll for next Saturday, Sunday, or the following Friday evening."
  • "Anyone in the Tuesday group have a conflict with the 7–10pm slot next week?"

The assistant will translate these into the appropriate tool calls automatically.

Rate limits

Per-key rate limits scale with your subscription tier:

TierRequests / hourBurst / minute
Entling (free)10020
Ent1,00060

Every API response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. When you hit the limit you'll get a 429 response with a retry time; Claude will wait and inform you.

Most real workflows stay well under the Entling limit — a typical "check my schedule and create an event" interaction is under five requests.

Security

Treat API keys like passwords

  • Never paste a key into a chat message — including to the assistant itself. Put it in the env block of the MCP config file, which is stored locally on disk.
  • Use a separate key per device. If a laptop gets lost, you revoke that one key without breaking other setups.
  • Give each key a descriptive name so you know what to revoke when you do a cleanup.

Keys are scoped to you

An API key can only access data you already have access to. It cannot:

  • See or modify events you weren't invited to
  • Change your subscription tier or billing
  • Access other users' private data
  • Bypass the group member permissions you've set

Revoking a key

Go to Settings → API Keys, find the key by its name or first 16 characters, and click Revoke. Revoked keys stop working immediately. If you suspect a key has been exposed, revoke it, then create a new one and update your MCP config.

We never store the full key

Only a SHA-256 hash of the key lives in our database. The plaintext is shown to you once at creation and never again — if you lose it, revoke and create a new one.

Troubleshooting

The assistant can't find any EventMoot tools

  • Check that you fully quit and relaunched the assistant after editing the config (on macOS, "close window" doesn't quit the app — use ⌘Q).
  • Verify your config JSON is valid — a missing comma or bracket will silently skip the server.
  • On Claude Desktop, check the developer logs: Settings → Developer → Open Logs Folder and look for mcp.log.

401 INVALID_API_KEY

  • The key is wrong, expired, or revoked. Mint a new one and update your config.
  • Double-check you didn't accidentally copy a trailing space or newline.
  • Make sure the prefix is em_live_ — any other format is invalid.

429 RATE_LIMIT_EXCEEDED

You've hit your tier's rate limit. The response includes an X-RateLimit-Reset header with the Unix timestamp when you can retry. Claude will usually wait automatically. If you hit this often, consider upgrading your tier.

404 on every request

Usually one of:

  • The API is switched off on this EventMoot server right now. Check back later, or contact support.
  • EVENTMOOT_API_URL is wrong — should be https://eventmoot.com in production.
  • You're pointing at a self-hosted dev server that isn't running.

The assistant calls a tool but gets "You don't have access"

API keys inherit your permissions — if you couldn't do the action in the web UI, the assistant can't either. Check group membership, roles, and event invite status.

Self-hosting note

If you're running EventMoot locally, point your MCP client at http://localhost:3000 instead of https://eventmoot.com:

"env": {
  "EVENTMOOT_API_KEY": "em_live_...",
  "EVENTMOOT_API_URL": "http://localhost:3000"
}

The same key format works against either host.

Explore the API in your browser

The full REST API is documented interactively with Swagger UI. Paste your em_live_... key into the Authorize dialog and try any endpoint live against your account.

Open Swagger UI