Using POP from an AI assistant with no install (remote MCP)
Goal
Connect an AI assistant (Claude, or any MCP-speaking client) to POP’s official remote MCP server
(https://mcp.popapi.io/mcp), without installing Node.js or configuring anything locally — unlike the
local version, all you need here is a URL.
Prerequisites
- A valid POP
license_key(see get-your-license-key) — or, if you don’t have an account yet, you can create one by talking to the assistant itself: see onboard-via-ai-assistant. - A client that supports MCP over HTTP: Claude (remote connector), OpenAI Responses API, n8n, MCP Inspector, or a custom integration.
How it works
-
Endpoint:
https://mcp.popapi.io/mcp— Streamable HTTP transport. -
The server is stateless and multi-tenant: there’s no
license_keyconfigured server-side like in the local version. Every single request must carry your key as a header:Authorization: Bearer your_license_key -
If the header is missing or malformed, the request fails with
401(unauthorized_user) before calling the POP API. If the key is present but invalid, the request reaches POP and returns whatever error POP itself generates (e.g.unauthorized_user,insufficient_level).
Connecting Claude
Add a new remote connector pointed at https://mcp.popapi.io/mcp, with header
Authorization: Bearer your_license_key — the exact steps depend on which version of Claude you’re
using (desktop or web): look for “connector” or “remote MCP” in settings.
Trying it with MCP Inspector
npx @modelcontextprotocol/inspector
Point it at https://mcp.popapi.io/mcp, with the same Authorization: Bearer header.
Trying it with curl
curl -X POST https://mcp.popapi.io/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer your_license_key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Available tools (16)
The same 11 tools from the local version (SdI/PEPPOL/KSeF/ZUGFeRD/PDF creation, Zoho sync,
status, verification, preservation), plus 5 onboarding tools (pop_onboarding_request_otp,
pop_onboarding_verify_otp, pop_onboarding_get_status, pop_onboarding_get_account_setup,
pop_onboarding_save_account_setup) that don’t require the Bearer header: they use their own
temporary onboarding_token, designed specifically for creating a brand-new account. See
onboard-via-ai-assistant for the full flow.
Good to know
- The server runs as a serverless function: it’s stateless, every request is independent — don’t expect it to remember earlier conversations beyond whatever the MCP client itself manages.
https://mcp.popapi.io/healthis a status endpoint meant for monitoring, not for conversational use.
Common errors
- Immediate
401 unauthorized_user— theAuthorizationheader is missing or not in theBearer <key>format: the server rejects it before even contacting POP. - Key present but request rejected by POP — the key is formally valid but POP rejects it (insufficient plan, integration not active): the returned error is POP’s, not the MCP server’s.
- Client can’t find the right tool — check that you connected the client to the
/mcpURL (not thehttps://mcp.popapi.io/home page, which is just the informational landing page).
Related configuration
For the local install (stdio, via npm) see mcp. For the full invoice data contract, see api/overview, api/sdi, api/peppol, api/ksef, api/zugferd, api/pdf, and api/zoho.