Neutra
Sends invitation emails through Gmail using the inviter account's gmail.send permission.
Provides Google sign-in via OAuth for authentication, using only the user's name and email to authorize access and route meeting invites.
Creates and sends calendar invites for matched meeting times through the Google Calendar API using calendar event permissions.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Neutra
A neutral place where people's AI assistants agree on things for them, without anyone seeing anyone else's data.
Today it does one thing: two people's assistants find a time to meet. Each assistant tells Neutra when its person is free. Neutra finds a common time and sends one calendar invite to both. Neither side ever sees the other's times.
sequenceDiagram
participant A as Anna's assistant
participant N as Neutra
participant B as Ben's assistant
A->>N: Anna's free times
N-->>A: a message for Anna to forward to Ben
Note over A,B: Anna forwards it in any chat
B->>N: Ben's free times + the code
N-->>A: calendar invite
N-->>B: calendar inviteIt works across assistants: Anna can use Claude and Ben another assistant, as long as both support MCP connectors.
Privacy, by design
No AI on Neutra's side. Neutra is plain code that compares time ranges. Your times never go into an AI model of ours.
Nobody sees anyone's times. Only the matched meeting time comes back. The other person's times are never returned, and the code is stored only as a hash.
Times are deleted as soon as a decision is settled, at the latest after 14 days. The person answering never has their times stored at all.
Retries can't map a calendar. The person answering gets at most 3 tries, and each answer must cover at least twice the meeting length, so nobody can probe your free time slot by slot.
Data stays in the EU, in Cloudflare's EU jurisdiction.
Checked by tests:
test/decisions.test.tsverifies that no times or codes appear in any response.
Details: privacy page.
Related MCP server: Meeting Scheduler
Try it
In Claude: Customize → Connectors → Add custom connector, URL
https://neutra.day/mcp, then Add.Sign in with Google. Neutra uses only your name and email: to send the invite to the right address, and so that only you can answer.
Ask: "Use Neutra to find an hour with Ben next week. I'm free Tuesday and Thursday, 18:00–21:00." Forward the message it gives you.
For agent builders
A remote MCP server with Google sign-in. Resources follow Google's AIPs: decisions/{decision} and decisions/{decision}/answers/{answer}.
Tool | What it does |
| Start a decision with your person's free times and the meeting length. Returns a code and a message to forward. |
| Answer with the code from the message ( |
| Status ( |
| Cancel a decision you started, including its invite. |
| Read your own answer. |
| Tell Neutra's makers about something your person wanted that Neutra can't do yet. |
| Read a feature request you sent. |
Errors use google.rpc codes: NOT_FOUND, PERMISSION_DENIED, FAILED_PRECONDITION, INVALID_ARGUMENT, RESOURCE_EXHAUSTED (a daily or hourly limit was reached).
Running Neutra
Runs on Cloudflare Workers with D1, based on Cloudflare's remote-mcp-google-oauth template. Every push to main is type-checked, tested and deployed by GitHub Actions (.github/workflows/deploy.yml); migrations in migrations/ are applied before each deploy. Changes go through pull requests.
Setup (done once)
Cloudflare
Account ID and the
MCP_RESOURCEaddress are inwrangler.jsonc. The domainneutra.dayis attached to the Worker as a Custom Domain in the Cloudflare dashboard.API token: "Edit Cloudflare Workers" template plus D1: Edit.
The D1 database (EU jurisdiction) and the
OAUTH_KVnamespace were created once withwrangler d1 create neutra --jurisdiction euandwrangler kv namespace create OAUTH_KV; their IDs are inwrangler.jsonc.
Google Cloud (project neutra)
Google Auth Platform: audience External, publishing status In production (testing mode makes refresh tokens expire after 7 days). Branding: home page and privacy links above, authorized domain
neutra.day.Web client with redirect URI
https://neutra.day/callback(addhttps://developers.google.com/oauthplaygroundonly while making a new inviter key, andhttp://localhost:8788/callbackfor local dev).Google Calendar API and Gmail API enabled.
Sign-in asks only for email and profile. While
ACCESS_MODEisallowlist, onlyALLOWED_EMAILScan sign in.
Inviter (neutra.invites@gmail.com)
Refresh token with scopes
calendar.eventsandgmail.send, obtained via the OAuth 2.0 Playground using the web client's own credentials (steps indocs/RUNBOOK.md).
GitHub secrets (Settings → Secrets and variables → Actions)
Secret | What |
| Cloudflare API token |
| Web client |
| Any long random string |
| Comma-separated emails of the test users |
| Inviter's refresh token |
Local development
npm install, copy .dev.vars.example to .dev.vars and fill it in, then npm run dev. Test with npx @modelcontextprotocol/inspector@latest against http://localhost:8788/mcp.
License
MIT, see LICENSE. Includes code from Cloudflare's MIT-licensed templates.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-native scheduling and booking: check availability, book meetings, share links.
Check availability, book meetings and find group times — without sharing your calendar.
Your agent messages other people’s agents, and your own, to find a time or ask a question.
AI-native scheduling: check availability, book meetings, cancel and reschedule via MCP
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to intelligently schedule meetings by checking Microsoft Outlook calendars, finding available time slots across multiple participants, and automatically booking meetings with Teams integration. Uses Microsoft Graph API with smart fallback logic for optimal scheduling.1MIT
- AlicenseNot gradedqualityDmaintenanceAutomates meeting logistics with tools for scheduling, availability checking, slot finding, timezone conversion, and recurring date generation. Eliminates the need for custom calendar logic by providing validated time operations and formatted invitations for applications and AI assistants.MIT
- AlicenseAqualityDmaintenanceAI-powered scheduling assistant that checks calendars, finds mutual availability, and books meetings via natural language commands.337 PyPI1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to book meetings, check availability, and manage Cal.com scheduling through natural conversation.MIT