Get started

Connect an AI agent

Invx is a remote MCP server. Once connected, your agent can issue invoices, look them up, repeat last month's invoice for a client and keep your client list current, using the same rules as the app.

https://invx.app/api/mcp

There are two ways in.

With a sign-in (custom connectors)#

For apps that add a remote MCP server by URL, such as Claude's custom connectors:

  1. Add a custom connector and paste the server URL above.
  2. Your browser opens Invx. Sign in and choose Allow.
  3. The connector can now read and write your invoices.

Removing the connector in that app stops that app from calling Invx, but Invx is not told: the tokens it was given, including the refresh token that mints new access tokens, stay valid until they expire. Invx has no self-service revoke for connectors yet. For a client you might need to cut off, use an API key instead: revoking a key takes effect on the next call.

No key to copy or store. Invx uses OAuth 2.1 with PKCE and Client ID Metadata Documents; there is no dynamic client registration.

With an API key (CLIs and editors)#

  1. In Invx, open Settings → MCP & API and create a key. Choose Read only if the agent should only look things up. The key is shown once.
  2. Add Invx to your client with the snippet below, replacing invx_YOUR_KEY.

Claude Code#

Run once in a terminal. The user scope makes Invx available in every project.

claude mcp add --transport http --scope user invx https://invx.app/api/mcp \
  --header "Authorization: Bearer invx_YOUR_KEY"

Codex CLI#

Keep the key in an environment variable; Codex reads it on every call.

export INVX_API_KEY=invx_YOUR_KEY
codex mcp add invx --url https://invx.app/api/mcp --bearer-token-env-var INVX_API_KEY

Cursor#

Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project).

{
  "mcpServers": {
    "invx": {
      "url": "https://invx.app/api/mcp",
      "headers": {
        "Authorization": "Bearer invx_YOUR_KEY"
      }
    }
  }
}

Claude Desktop#

Add to claude_desktop_config.json (Settings → Developer → Edit config), then restart Claude. Needs Node.js.

{
  "mcpServers": {
    "invx": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://invx.app/api/mcp",
        "--header",
        "Authorization:${INVX_AUTH}"
      ],
      "env": {
        "INVX_AUTH": "Bearer invx_YOUR_KEY"
      }
    }
  }
}

Any other client that supports remote MCP servers over Streamable HTTP works the same way: the URL above, plus the header Authorization: Bearer invx_YOUR_KEY.

Try it#

Ask your agent, in your own words:

  • "Invoice Acme for 12 hours of design at 80 an hour, due in 30 days."
  • "Duplicate my last invoice to Northwind with today's date."
  • "What did I bill in September, by client?"
  • "Get me the PDF link for invoice INV-0042."

Deleting needs the exact invoice number or client name, so a wrong guess deletes nothing.

Next#