What is NeetoCal MCP?
NeetoCal MCP lets AI assistants like Claude and ChatGPT work with your NeetoCal account. Once it's connected, you can ask your AI assistant about your schedule, find open slots, book a meeting for a client, or move a meeting that no longer works, in the same conversation where you're already working.
MCP stands for Model Context Protocol, an open standard for connecting AI assistants to the apps you use. You don't need to know anything about it. You connect once, sign in to NeetoCal, and start asking.
Your AI assistant talks to the NeetoCal MCP server. NeetoCal hosts it, so there's nothing to install or keep updated, and every workspace uses the same address:
https://connect.neetocal.com/mcp/messages
When you connect, you sign in with your NeetoCal account and pick your workspace. The assistant then works as you: it sees only what you can see, and does only what your role allows. It can reach your meetings, bookings, availability, holidays, meeting templates, locations, add-on services, meeting outcomes, blocked emails, discount codes, packages, automation rules, and team members. You never name a tool; you ask in plain language. The full list is in the NeetoCal MCP tools reference.
NeetoCal also has a command-line tool, the NeetoCal CLI. It reaches the same data as MCP, but runs in your terminal, in scripts, and in scheduled jobs. It's open source, so you can read exactly what it does, change it, and build on it.
Connect any MCP client
Every client uses the same server URL over HTTP (Streamable HTTP):
https://connect.neetocal.com/mcp/messages

Step-by-step guides for each AI assistant:
Which sign-in each client supports
| Client | Sign in (OAuth) | API key |
|---|---|---|
| Claude | Yes | No |
| ChatGPT | Yes | No |
| Claude Code | Yes | Yes |
| Codex | Yes | Yes |
| Cursor | Yes | Yes |
| Antigravity CLI | Yes | Yes |
| VS Code | Yes | Yes |
| Devin | Yes | Yes |
| Antigravity | Yes | Yes |
Sign in and choose permissions
For sign-in, enter your workspace subdomain, not your email address. For acme.neetocal.com, enter acme.
What each permission allows
| Permission | What it allows |
|---|---|
| Read | See what your role lets you see in the selected workspaces. Always granted. |
| Stay connected | Keep working without asking you to sign in again. Always granted. |
| Create and update | Add new items and change existing ones. |
| Delete | Permanently delete items. This cannot be undone. |
If you leave a permission unticked, a tool that needs it is refused with a message that names it. For example, a read-only connection can list bookings but cannot book, reschedule, or cancel. To grant it later, remove the connector and add it again with the box ticked.
For developers: the OAuth metadata is at https://connect.neetocal.com/.well-known/oauth-authorization-server. The server supports the authorization_code and refresh_token grants, and requires PKCE (S256). Clients register dynamically at https://connect.neetocal.com/mcp/oauth/register, and loopback redirect URIs are accepted. The scopes are read, write, delete, and offline_access. Refresh tokens are issued, so you stay signed in.
Connect with an API key
An API key is not tied to a person. Every tool call reaches the whole workspace, and role checks do not run. Use a key for automation that must see every booking. Do not use one on a machine where the person should see only their own bookings.
It is the same key the REST API uses. Learn how to generate your API key. Create it in the workspace you want the assistant to reach. Every client sends it in this header:
Authorization: Bearer YOUR_API_KEY
Each AI assistant's guide shows where its config file lives and how it sends the key.
Keep your key safe
- One key is one workspace. To reach two workspaces, add the server twice, with a different key and a different server name in each entry.
- Keep the key out of shared files and commits. It gives access to every meeting and booking in the workspace. Treat it like a password, and revoke it if it leaks.
- A key in the config blocks OAuth. A client that finds a key never starts the sign-in. A missing key makes the client fall back to OAuth.
How each interface signs in
| Interface | Credential | Where it goes |
|---|---|---|
| REST API | API key | X-Api-Key header on each request. |
| CLI | Browser sign-in, stored per workspace | ~/.config/neetocal/auth.json. No API key involved. |
| MCP | OAuth, or an API key | Browser approval, or an Authorization: Bearer header in the assistant's config file. |
NeetoCal MCP tools
Once you connect, your AI assistant lists every tool with what it does, and you never need to name one. This is a summary of what the tools cover.
- Meetings. Find, create, update and delete meeting pages, see open slots, find out why a meeting has no open slots, and create single-use booking links.
- Meeting details. Read, add, change and remove a meeting's duration options, spot options and add-on services, and change which calendars it adds events to and checks for conflicts.
- Meeting availability. Set date-specific availability for a meeting's hosts, or replace it.
- Bookings. Find, create, reschedule, cancel, approve or reject bookings, set a meeting outcome, and record or confirm payments.
- Holidays. See the workspace's holidays.
- Availabilities. Read, create and update named working-hour schedules for team members.
- Meeting templates. Read, create, update and delete meeting templates.
- Meeting outcomes. Read, create, rename and delete the labels hosts put on bookings.
- Blocked emails. Read, add, edit and remove blocked client emails. This needs the Manage blocked emails permission over OAuth.
- Prefill tokens. Create a booking link that opens the form already filled in.
- Automation rules. Read, create and delete automation rules.
- Packages. Read packages and their purchases, with each buyer's remaining bookings or minutes.
- Discount codes. Read, create, update and delete discount codes for paid bookings.
- Team members. Read, invite, update and deactivate team members, and find times when several of them are free together.
What to know before you connect
- Permissions. A connection that was not granted Create and update or Delete is refused when the assistant tries to create, change or delete something.
- Who sees which records. Over OAuth, results follow the role of the person who approved the connection, and a record they cannot open is refused. A member who cannot view the whole workspace's bookings sees only the bookings they host, plus the ones they booked when their role lets them manage those. An API key reaches the whole workspace.
- Booking outside working hours. The assistant can book a time outside a meeting's availability. This ignores working hours, minimum notice, buffer time, booking limits, holidays, calendar conflicts and existing bookings. Past times are still refused. Over OAuth, only a host of the meeting or an admin can do this.
- Emails and invites. Creating a booking sends the usual confirmations and calendar invites to real people, and inviting team members sends invitation emails. Asking twice sends twice.
- Deleting meetings. A meeting with bookings or routing form submissions is soft-deleted and keeps its history. Any other meeting is removed permanently.
- Deleting add-on services and outcomes. An add-on service or outcome that bookings already used is hidden and kept on those bookings. Any other is removed permanently.
- Deleting other items. Deleting a template, duration, spot, automation rule or discount code is permanent.
- Deactivating team members. The assistant cannot deactivate your own account. Deactivating a member removes them from their meetings and disconnects their calendar integrations, and a meeting left without a host is disabled. A workspace always keeps at least one Admin.
- What no tool can do. Holidays are read-only and can only be managed in the NeetoCal app. No tool updates an automation rule, and no tool creates or changes a package.
- Payments. The assistant can record UPI or cash payments only.
Troubleshooting
Your AI assistant shows no NeetoCal tools
Restart the client first. Every client reads its MCP config at startup. On Claude or ChatGPT, confirm that you added the connector and finished the sign-in. In ChatGPT, the plugin is created only after you tick I understand and want to continue.
On clients that read a config file, check these:
- The config key. Claude Code, Cursor, Devin, Antigravity, and Antigravity CLI use
mcpServers. VS Code usesservers. Codex uses a[mcp_servers.<name>]section in TOML. A server under the wrong key is ignored silently. - The URL key. Antigravity and Antigravity CLI expect
serverUrl. Claude Code, Codex, Cursor, Devin, and VS Code expecturl. - The endpoint. It is
https://connect.neetocal.com/mcp/messages, with no trailing slash. - The syntax. In JSON, a trailing comma or an unclosed brace makes the whole file unreadable.
The connection is refused or unauthorized
With an API key, the header must read Bearer YOUR_API_KEY, with the word Bearer and one space before the key. Check that the key is not revoked and belongs to the workspace you expect. A key from one workspace does not work in another. With OAuth, remove the connector and add it again to start the sign-in over.
The client uses a key when you wanted to sign in
A client that finds a credential in its config never starts OAuth. Remove the headers block, or the bearer_token_env_var line in Codex, and restart the client.
The client asks you to sign in when you wanted to use a key
The credential is missing, so the client falls back to OAuth. Add the headers block with "Authorization": "Bearer YOUR_API_KEY". In Codex, set bearer_token_env_var = "NEETOCAL_API_KEY" and export that variable. Then restart the client.
The sign-in fails at the workspace step
The first screen asks for a workspace subdomain or the workspace URL, not an email address. For acme.neetocal.com, enter acme.
Your assistant sees fewer bookings than expected
This is the scoping working as intended. An OAuth connection acts as the person who approved it, so lists come back filtered to your permissions. If the assistant must reach everything in the workspace, use an API key.
Your assistant reaches the wrong workspace
An OAuth connection covers the workspaces you ticked when you approved it. Name the workspace in your prompt. To add another, sign in again and tick it. An API key belongs to one workspace, so the wrong workspace means the wrong key. Add the server a second time with the other key and a different server name.
VS Code never offers the tools
MCP needs VS Code 1.99 or later with GitHub Copilot in Agent mode. It is not available in Ask or Edit mode. Check the version, switch to Agent mode, and confirm .vscode/mcp.json is in the workspace you have open. With an API key, VS Code asks for the key the first time you use the server.
Devin or Antigravity connects but the tools are missing
Enable the server after you save the config. In Devin, open the ... menu at the top of a Devin chat in the IDE view and turn the server on, then run devin mcp login <name>. In Antigravity, go to Settings → Customizations.
Claude shows the connector as unauthorized
Open Customize → Connectors at claude.ai/customize/connectors, remove NeetoCal, and connect it again from the NeetoCal listing. On a Team plan, Requested means an admin has not turned NeetoCal on yet. An admin turns it on under Organization settings → Connectors.
Check that the server is reachable
The server publishes its OAuth metadata without any credential, so one request tells you whether the problem is the server or your client:
curl -s https://connect.neetocal.com/.well-known/oauth-authorization-server
A JSON document whose issuer is https://connect.neetocal.com means the host is reachable. It does not prove every tool call works. No answer, or an error page, means the server cannot be reached from your network. Try again in a few minutes, and if it continues, contact us.
Still stuck
Reach us through the help center, or at support@neetocal.com. Tell us which client you use and what the assistant reports when it tries a NeetoCal tool.
Frequently asked questions
Does NeetoCal MCP require an API key?
No. Sign in with your NeetoCal account and approve access. There's no API key to copy or manage.
Any client that can send an Authorization: Bearer header, such as Claude Code, Cursor, and Codex, can also use a NeetoCal API key if you prefer. Claude and ChatGPT sign in with OAuth only. API keys provide access to the entire workspace rather than operating with your individual permissions.
Where is the NeetoCal MCP server hosted?
NeetoCal hosts the MCP server at https://connect.neetocal.com/mcp/messages. You don't need to install, configure, or maintain a server yourself.
Use NeetoCal in other AI assistants
| AI assistant | Setup guide |
|---|---|
| Claude | Use NeetoCal in Claude |
| ChatGPT | Use NeetoCal in ChatGPT |
| Claude Code | Use NeetoCal in Claude Code |
| Cursor | Use NeetoCal in Cursor |
| Codex | Use NeetoCal in Codex |
| VS Code | Use NeetoCal in VS Code |
| Antigravity CLI | Use NeetoCal in Antigravity CLI |
| Devin | Use NeetoCal in Devin |
| Antigravity | Use NeetoCal in Antigravity |
| Any other MCP client | NeetoCal MCP server |
Prefer the terminal? The NeetoCal CLI reaches the same data from your shell, your scripts and your coding agent.