NeetoInvoice MCP server

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

What is NeetoInvoice MCP?

NeetoInvoice MCP lets AI assistants like Claude and ChatGPT work with your NeetoInvoice account. Once it's connected, you can log time by describing what you did, ask what's still unbilled for a client, turn those hours into an invoice, and check who hasn't filled in their timesheet, 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 NeetoInvoice, and start asking.

Your AI assistant talks to the NeetoInvoice MCP server. NeetoInvoice hosts it, so there's nothing to install or keep updated, and every workspace uses the same address:

https://connect.neetoinvoice.com/mcp/messages

When you connect, you sign in with your NeetoInvoice 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 work with clients and recipients, projects and project members, time entries, invoices, team members, PTO, and your payroll and timesheet reports. You never name a tool; you ask in plain language. The full list is in the NeetoInvoice MCP tools reference.

NeetoInvoice also has a command-line tool, the NeetoInvoice CLI. It works with the same account, 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, https://connect.neetoinvoice.com/mcp/messages, over HTTP (Streamable HTTP). Pick your client below. Each one signs in with your NeetoInvoice account. To use an API key instead, see Connect with an API key.

Screen recording in Claude. NeetoInvoice is added as a custom connector with its name and server URL, a workspace is chosen, and access is approved. Claude shows NeetoInvoice as connected and then lists the NeetoInvoice workspaces.
Adding NeetoInvoice as a custom connector in Claude, 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

When you sign in, enter your workspace subdomain, not your email address. For acme.neetoinvoice.com, enter acme.

What each permission allows

PermissionWhat it allows
ReadSee what your role lets you see in the connected 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 the permission. A read-only connection can list time entries and check unbilled totals, but it cannot log time, generate an invoice, or delete anything.

For developers: the OAuth metadata is at https://connect.neetoinvoice.com/.well-known/oauth-authorization-server. The server supports the authorization_code and refresh_token grants, with PKCE (S256) required. Clients register dynamically at https://connect.neetoinvoice.com/mcp/oauth/register, and loopback redirect URIs are accepted. 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 time entry. Do not use one on a machine where the person should see only their own entries.

The key is the same one the REST API uses. Learn how to get one in the API keys article. Send it in this header:

Authorization: Bearer YOUR_API_KEY

In Claude Code, Codex, Cursor, Antigravity CLI, VS Code, and Devin, leave the key out of the config to sign in with OAuth. Put the key in to use the 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.
  • Treat the key like a password. It gives access to every client, project, and time entry in the workspace, including every user's time entries and the payroll and PTO reports. Keep it out of shared config files and commits, and revoke it if it leaks.

How each interface signs in

InterfaceCredentialWhere it goes
REST APIAPI keyX-Api-Key header on each request
CLIBrowser sign-in, stored per workspace~/.config/neetoinvoice/auth.json. No API key involved.
MCPOAuth, or an API keyBrowser approval, or an Authorization: Bearer header in the config file

NeetoInvoice MCP tools

Once you connect, your AI assistant lists every tool and what it does, and you never need to name one. This is a summary of what the tools cover.

  • Clients and recipients. Find, create and update clients, and add, update or remove the people who receive a client's invoices.
  • Projects and project users. Find, create and update projects, and add users to a project, change their role or hourly rate, or remove them.
  • Time entries. List a project's unbilled time, log time, and change or delete entries.
  • Invoices. List invoices, generate an invoice for a client, and email it to the client's recipients.
  • Team members. List team members, invite new ones, change a profile or organization role, and deactivate a member.
  • PTO. Read the monthly PTO report and set the PTO a person earned in a month.
  • Reports. Run payroll summaries, timesheet summaries, and find working days with no time logged.

Over OAuth, results follow your permissions, and a record you cannot open is refused. An API key reaches the whole workspace.

What to know before you connect

  • Billed time is locked. A time entry that is already billed cannot be changed or deleted. Entries on a locked date are refused unless you have permission to override the lock.
  • Deleting is permanent. Deleting a time entry or removing a recipient cannot be undone. Deleting a team member deactivates them and removes their access.
  • Emails go to real people. An invoice sent by the assistant reaches the client's recipients, and sending twice delivers twice. It cannot send to an address that is not one of the client's recipients.
  • Team invitations are all or nothing. If any address is rejected, no one is invited.
  • Locked PTO months are skipped. The assistant cannot change PTO for a locked month.
  • Every project needs a task. The assistant cannot create a project without at least one task.

Troubleshooting

Your AI assistant shows no NeetoInvoice 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 Claude Code, Cursor, Codex, VS Code, Devin, Antigravity, or Antigravity CLI, 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.neetoinvoice.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 Authorization header must read Bearer YOUR_API_KEY, with the word Bearer and a single space before the key. Confirm 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 run the sign-in from the start.

The client sends a key when you meant to sign in

A client that finds a credential in its config never starts the OAuth flow. 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 meant 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 = "NEETOINVOICE_API_KEY" and export that variable. Then restart the client.

The OAuth sign-in fails at the workspace step

The first screen needs a workspace subdomain or a workspace URL, not an email address. For acme.neetoinvoice.com, enter acme.

Your AI assistant sees fewer time entries than expected

An OAuth connection acts as the person who approved it. Lists come back filtered to your permissions, and a client or project you cannot open is refused. If the assistant needs to reach everything in the workspace, use an API key.

Your AI assistant reaches the wrong workspace

An OAuth connection covers the workspace you entered and any additional workspaces you ticked. Name the workspace in your prompt. To add another, sign in again and tick it. An API key belongs to one workspace, so add the server a second time with the other key and a different 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. Confirm that .vscode/mcp.json is in the workspace you have open. With an API key, answer the key prompt the first time the server is used.

Devin or Antigravity connects but the tools are missing

Enable the server after saving 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. Turn off servers you are not using and reload.

Claude shows the connector as unauthorized

Open Customize → Connectors, remove NeetoInvoice, and add it again as a custom connector. On a Team plan, an Owner must first add the server URL under Organization settings → Connectors.

Check that the server is reachable

The server publishes its OAuth metadata without any credential.

curl -s https://connect.neetoinvoice.com/.well-known/oauth-authorization-server

A JSON document whose issuer is https://connect.neetoinvoice.com means the server is reachable, so look at the client setup next. No answer, or an error page, means the server cannot be reached from your network. Try again in a few minutes, and if it persists, tell us.

Still stuck

Reach us through the help center, or at support@neetoinvoice.com. Tell us which client you use and what the AI assistant reports when it tries a NeetoInvoice tool.

Frequently asked questions

Does NeetoInvoice MCP require an API key?

No. Sign in with your NeetoInvoice account and approve access. There's no API key to copy or manage.

Any AI assistant that can send an Authorization header can also use a NeetoInvoice API key if you prefer. Claude and ChatGPT sign in with OAuth only. However, API keys provide access to the entire workspace rather than operating with your individual permissions.

Where is the NeetoInvoice MCP server hosted?

NeetoInvoice hosts the MCP server at https://connect.neetoinvoice.com/mcp/messages. You don't need to install, configure, or maintain a server yourself.

Use NeetoInvoice in other AI assistants

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

Klaar om tijdregistratie en facturering te vereenvoudigen?

Begin vandaag nog met NeetoInvoice.