NeetoCal MCP server

Connect any MCP client to NeetoCal with your NeetoCal sign-in or an API key. Server URL, permissions, the full tools list, and troubleshooting.

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
Screen recording of the NeetoCal page in the Claude connector directory. Connect to Claude is clicked, a NeetoCal workspace is chosen, access is approved, and Claude shows NeetoCal as connected. A first prompt is then typed into Claude.
Connecting NeetoCal to Claude from the Claude directory, then asking a first question.

Step-by-step guides for each AI assistant:

Which sign-in each client supports

ClientSign in (OAuth)API key
ClaudeYesNo
ChatGPTYesNo
Claude CodeYesYes
CodexYesYes
CursorYesYes
Antigravity CLIYesYes
VS CodeYesYes
DevinYesYes
AntigravityYesYes

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

PermissionWhat it allows
ReadSee what your role lets you see in the selected workspaces. Always granted.
Stay connectedKeep working without asking you to sign in again. Always granted.
Create and updateAdd new items and change existing ones.
DeletePermanently 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

InterfaceCredentialWhere it goes
REST APIAPI keyX-Api-Key header on each request.
CLIBrowser sign-in, stored per workspace~/.config/neetocal/auth.json. No API key involved.
MCPOAuth, or an API keyBrowser 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:

  1. The config key. Claude Code, Cursor, Devin, Antigravity, and Antigravity CLI use mcpServers. VS Code uses servers. Codex uses a [mcp_servers.<name>] section in TOML. A server under the wrong key is ignored silently.
  2. The URL key. Antigravity and Antigravity CLI expect serverUrl. Claude Code, Codex, Cursor, Devin, and VS Code expect url.
  3. The endpoint. It is https://connect.neetocal.com/mcp/messages, with no trailing slash.
  4. 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

Prefer the terminal? The NeetoCal CLI reaches the same data from your shell, your scripts and your coding agent.

Pożegnaj się z bólami głowy związanymi z harmonogramem — rozpocznij teraz!