Connect Accounter’s MCP server to Claude, Cursor, Codex, Gemini, Grok Bot & ChatGPT
Last reviewed: 2026-11-06
Get an API key
The MCP server uses the same Bearer keys as the Accounter Agent API. There is no separate sign-up or OAuth step for this release.
- 1
Create a key
Sign in and open Account > API Keys. Copy the raw key when it is shown; Accounter cannot show it again. - 2
Store it as ACCOUNTER_AGENT_API_KEY
Keep the key in your operating system keychain, the client’s secret store, or an environment variable. Never commit it to a repository or paste it into chat. - 3
Confirm an active paid plan
Uploads need an active paid extraction plan. A key can be created without one, but extraction then returns 403 NO_ACTIVE_PLAN.
The handshake URL for every client below is:
Transport endpoint
https://accounter.co.za/api/agent/v1/mcpSend Authorization: Bearer <api_key> on every request. The server is stateless Streamable HTTP, so each request is authenticated on its own. Availability follows your Agent API access, plan and the current rollout.
Claude Code
Add Accounter as an HTTP MCP server from your shell, with the key read from the environment:
Shell
export ACCOUNTER_AGENT_API_KEY="acct_agent_live_..."
claude mcp add --transport http accounter https://accounter.co.za/api/agent/v1/mcp \
--header "Authorization: Bearer $ACCOUNTER_AGENT_API_KEY"Or commit a project-scoped .mcp.json that references the variable instead of the key:
.mcp.json
{
"mcpServers": {
"accounter": {
"type": "http",
"url": "https://accounter.co.za/api/agent/v1/mcp",
"headers": { "Authorization": "Bearer ${ACCOUNTER_AGENT_API_KEY}" }
}
}
}Cursor / Muse
Add the server to your Cursor MCP settings (project .cursor/mcp.json or the global equivalent):
.cursor/mcp.json
{
"mcpServers": {
"accounter": {
"url": "https://accounter.co.za/api/agent/v1/mcp",
"headers": { "Authorization": "Bearer ${env:ACCOUNTER_AGENT_API_KEY}" }
}
}
}If your Cursor build does not expand ${env:...}, use the client’s secret input for the header value rather than committing a raw key.
Codex
Codex reads MCP servers from its config file. Add an HTTP server and point it at the environment variable that holds your key:
~/.codex/config.toml
[mcp_servers.accounter]
url = "https://accounter.co.za/api/agent/v1/mcp"
bearer_token_env_var = "ACCOUNTER_AGENT_API_KEY"Set ACCOUNTER_AGENT_API_KEY in the shell or environment that launches Codex. If your Codex version uses a different key name for HTTP headers, keep the URL and send the same Bearer header.
Gemini CLI
Add Accounter to the Gemini CLI MCP settings:
~/.gemini/settings.json
{
"mcpServers": {
"accounter": {
"httpUrl": "https://accounter.co.za/api/agent/v1/mcp",
"headers": { "Authorization": "Bearer ${ACCOUNTER_AGENT_API_KEY}" }
}
}
}Start a new Gemini CLI session after changing the file so the tools are discovered.
Grok Bot
In Grok Bot’s custom MCP connector settings, add this MCP server:
MCP server URL
https://accounter.co.za/api/agent/v1/mcpSet the Authorization header to Bearer <your Agent API key> in the connector’s secret field. Do not paste the key into a Grok conversation, and revoke it in Account > API Keys if it is ever exposed.
ChatGPT
Accounter’s ChatGPT app is in private pilot testing, and directory publication is still pending. Use the Accounter for ChatGPT page for the current pilot status rather than assuming a public directory listing. ChatGPT’s support for custom remote MCP servers depends on your plan and rollout.
Tools reference
The server exposes only the customer bank statement workflow. Each extraction costs the same page credits and enforces the same plan limits as the Agent API.
| Tool | What it does | Inputs | Credits |
|---|---|---|---|
start_bank_statement_extraction | Queues a PDF and returns a jobId. | pdfBase64 (required); fileName, bankSlug, pdfPassword (optional). | 1 credit per page |
get_extraction_status | Returns progress, or the statement summary and transactions when complete. | jobId. | None |
download_extraction_csv | Returns the CSV for a completed extraction. | jobId. | None |
Limits, errors and security
One extraction may run at a time per account. File size, page caps, credit allowances and concurrency follow your plan and the Agent API. Credits are reserved when a job is queued, so a rejected upload does not quietly spend pages.
| Status | Code | Meaning |
|---|---|---|
| 401 | INVALID_AGENT_API_KEY | Missing, malformed, unknown or revoked key, or an inactive user. |
| 403 | NO_ACTIVE_PLAN | No active paid extraction plan. |
| 403 | EMAIL_NOT_VERIFIED | Verify the account email before uploading. |
| 403 | FILE_SIZE_LIMIT | PDF is over the per-file limit. |
| 422 | PDF_PASSWORD_REQUIRED | Encrypted PDF; retry with pdfPassword. |
| 422 | PDF_PASSWORD_INCORRECT | Wrong pdfPassword. |
| 404 | JOB_NOT_FOUND | Unknown jobId, or the job belongs to another account. |
| 409 | EXTRACTION_NOT_COMPLETE | CSV requested before the job finished. |
| 429 | CONCURRENT_LIMIT | Another extraction is already running. |
| 429 | CREDIT_LIMIT | Not enough page credits for this statement. |
Security: treat the API key like a password. Keep it in an environment variable or your client’s secret store, never in a public repository. Each MCP request is authenticated independently; an unauthenticated request receives 401 before any tool runs. Revoke a key from Account > API Keys if it leaks.
Frequently asked questions
Is the Accounter MCP server free?
Does Accounter store my PDF?
Which South African banks are supported?
What is the difference between the MCP server and the website converter?
How is Accounter different from TimAI?
Does the MCP server use OAuth?
Can I use ChatGPT with the MCP server?
Related Accounter pages
- Agent API documentationRaw HTTP endpoints, quickstart, error codes and limits.
- Accounter for ChatGPTPrivate pilot status for the ChatGPT app.
- Bank statement PDF to CSV converterUpload and review a statement in the browser.
- Integrations and CSV importsImport Accounter CSV files into Xero, QuickBooks or Sage.