The assistant does not see any NeetoInvoice tools
The assistant does not see any NeetoInvoice tools
Restart the client first. Every client reads its MCP config at startup, and Cursor can also reload the window from the command palette. Then check the items for your kind of client.On Claude or ChatGPT, which connect over OAuth, confirm the connector was actually added and that you completed the sign in rather than closing the browser tab partway. In ChatGPT the plugin is only created once you tick the risk acknowledgement.On Claude Code, Cursor, Gemini CLI, Codex, VS Code, Windsurf, or Antigravity, which read a config file:
- Check the config key. Claude Code, Cursor, Gemini CLI, Windsurf, and Antigravity nest servers under
mcpServers. VS Code usesservers, and Codex uses a[mcp_servers.<name>]section in TOML. A server under the wrong key is ignored silently. - Check the URL key. Windsurf and Antigravity expect
serverUrl, and Gemini CLI expectshttpUrlbecause it reservesurlfor SSE. Claude Code, Codex, Cursor, and VS Code expecturl. - Check the endpoint. It is
https://connect.neetoinvoice.com/mcp/messages, with no trailing slash. - Check the syntax. In JSON a trailing comma or an unclosed brace makes the whole file unreadable, which takes out any other servers too.
The client sends a key when you meant to sign in
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. It then answers the server’s 401 by opening the sign in.The client asks you to sign in when you meant to use a key
The client asks you to sign in when you meant to use a key
The opposite case: the credential is missing, so the client falls back to OAuth. Add the
headers block with "Authorization": "Bearer YOUR_API_KEY", or set bearer_token_env_var = "NEETOINVOICE_API_KEY" in Codex and export that variable, then restart the client. Codex takes the name of an environment variable, not the key itself.The OAuth sign in fails at the workspace step
The OAuth sign in fails at the workspace step
The first screen asks for a workspace subdomain, not a full URL or an email address. For
acme.neetoinvoice.com, enter acme. See Workspace subdomain.An OAuth connected assistant sees fewer time entries than expected
An OAuth connected assistant sees fewer time entries than expected
That is the scoping working as intended. An OAuth connection acts as the person who approved it, so lists and searches come back filtered to your permissions, and asking for a specific client or project you cannot open is refused rather than answered.If the assistant genuinely needs to reach everything in the workspace, that is what an API key connection is for. See Authentication.
A tool is refused because a permission was not granted
A tool is refused because a permission was not granted
The approval screen has two optional permissions, Create and update and Delete, and a tool that needs one you left unticked is refused with a message naming it. Nothing is broken and nothing half happened.To grant it, remove the connector and add it again, ticking the permission this time. See Authentication. An API key connection carries every permission, so this cannot happen on one.
The assistant reaches the wrong workspace
The assistant reaches the wrong workspace
An OAuth connection covers the workspaces you ticked while approving it. Name the workspace in your prompt, or ask the assistant to list the workspaces it can reach. To add another one, run the sign in again and tick it.An API key belongs to exactly one workspace, so a key connection reaching the wrong one 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
VS Code never offers the tools
MCP needs VS Code 1.99 or later with GitHub Copilot running in Agent mode. It is not available in Ask or Edit mode. Check the version, switch Copilot to Agent mode, and confirm that
.vscode/mcp.json is in the workspace you have open. On an API key connection, VS Code prompts for the key the first time the server is used, so answer that prompt.Windsurf or Antigravity connects but the tools are missing
Windsurf or Antigravity connects but the tools are missing
Enable the server after saving the config: Settings → Cascade → MCP Servers in Windsurf, Settings → Customizations in Antigravity. Windsurf also caps the total number of tools at 100 across every connected server, so turn off servers you are not using and reload.
Check that the server is reachable
Check that the server is reachable
The server publishes its OAuth metadata without any credential, so one request tells you whether the problem is on the server or in your client:A JSON document whose
issuer is https://connect.neetoinvoice.com means the host is reachable and answering, so look at the client’s setup next. It does not prove that every tool call succeeds. 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.