# Acumatica MCP connector

Connect Acumatica to Elaichi and Claude, ChatGPT, Cursor or any MCP client can look up customers, invoices, orders and reports, create and update records, and attach files, with each person's own Acumatica access enforced and every call logged.

Source: https://elaichi.ai/connectors/acumatica/

## Facts

| | |
| --- | --- |
| Application | Acumatica |
| Category | Accounting |
| AI tools | 13 |
| Authentication | Connects with an API key |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Acumatica is connected

- Show me open bills for Acme Supply due this month
- Create a sales order for Northwind from yesterday's quote
- Pull the aged receivables report and summarize the biggest balances

## Connect Acumatica in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Acumatica.
2. Optionally set Share with, then press Connect.
3. Supply your own Acumatica app, then approve. Acumatica needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Acumatica tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Acumatica MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Acumatica MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Acumatica MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Acumatica to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Acumatica tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Acumatica through Elaichi

### Catch a bill up after the vendor calls

Finance. Ask for the open bill, update the due date or terms in Acumatica, and attach the corrected PDF to it without opening a second screen.

### Find out what a customer still owes

Accounts receivable. Pull the customer's open invoices and payment history from Acumatica and draft the reminder from live balances rather than last week's export.

### Create the sales order from the signed quote

Sales. Turn the accepted quote into a sales order in Acumatica and attach the signed document to it while the customer is still on the line.

### Chase a purchase order through receipt

Purchasing. Look up the purchase order, check what has been received against it, and run the release action once everything has arrived.

### Run the report before the close meeting

Controller. Pull the aged receivables or trial balance report from Acumatica and ask for a plain summary of what moved since the last close.

### Release the shipment once it is confirmed

Operations. Ask for the shipment record, check the lines, and run the confirm or release action on it, with the action logged under your own name.

## Frequently asked questions

### How do I connect Acumatica to Claude?

Connect Acumatica in Elaichi, then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Acumatica requires a connected application registered inside your own Acumatica instance, so an administrator creates one there and enters its client ID and secret in Elaichi a single time. Nobody else on the team ever handles that client ID or secret; they simply sign in to Elaichi as themselves and Acumatica appears in Claude.

### Does Acumatica work with ChatGPT and Cursor as well as Claude?

Yes. Once Acumatica is connected in Elaichi, Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent all reach it through the same endpoint, https://api.elaichi.ai/mcp. You connect Acumatica once and every client you use picks it up.

### What can an AI agent actually do with my Acumatica data?

It can look up any Acumatica record, whether a customer, an invoice, a bill, a sales order or a journal transaction, create new ones, update fields on existing ones, and run the actions a person would normally click, such as releasing a document. It can also list and add attachments on a record and pull a report. Short, concrete asks work best, such as 'show me the open bills for this vendor', rather than a long paragraph of instructions.

### Does connecting Acumatica give the AI everything in my instance?

No. Every call runs as the person who signed in, so the agent sees only the companies, branches and screens that person's Acumatica role already allows. Elaichi can narrow that further by team or by action, and it can never grant more than Acumatica itself gives that person.

### Can my team share one Acumatica connection?

Yes. One administrator connects Acumatica and shares the connection with a team in Elaichi, and teammates use it without ever seeing the client ID or secret. Each person still signs in to Elaichi as themselves, so the audit log records who looked up a customer or released an invoice, not a shared service account.

### Can I stop an agent from deleting or changing things in Acumatica?

Yes. Restrictions in Elaichi apply per action, so you can allow reading and creating records in Acumatica while blocking updates, deletions or running document actions. A restricted action is never shown to Claude, ChatGPT or any other client at all, so no prompt, however it is worded, can reach it.

### What happens to an Acumatica connection when someone leaves?

Offboarding that person in Elaichi ends their access to Acumatica through every AI client at once. A connection they shared keeps working for everyone else on the team. If you want the Acumatica connection gone entirely, disconnect it once in Elaichi and it disappears from Claude, ChatGPT, Cursor and every other client together.

### Does the Acumatica MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Acumatica is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

## All 13 Acumatica tools

Every tool below is callable through https://api.elaichi.ai/mcp once Acumatica is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Acumatica instance get version** (Get). Get the Acumatica ERP version of the connected instance — one of the three instance-level methods of the contract-based REST API (alongside Sign in and Sign out). Returns: version. Takes no parameters.
- **List all Acumatica records** (List). List records of an Acumatica entity. Returns records with id, rowNumber, note, custom, and entity-specific fields. Required: endpoint_name, endpoint_version, entity. Supports $filter, $select, $expand, and $custom to shape results.
- **Update a Acumatica record by ID** (Update). Update an Acumatica record by id. Returns the updated record with id, rowNumber, note, custom, and entity-specific fields. Required: endpoint_name, endpoint_version, entity, id.
- **Delete a Acumatica record by ID** (Delete). Delete an Acumatica record by id. Returns an empty 204 response on success. Required: endpoint_name, endpoint_version, entity, id.
- **Get single Acumatica record by ID** (Get). Get a single Acumatica record by id. Returns the record with id, rowNumber, note, custom, and entity-specific fields. Required: endpoint_name, endpoint_version, entity, id.
- **Acumatica actions execute action** (Execute). Invoke an action on a top-level entity in Acumatica's contract-based REST API. The request body carries the JSON representation of the entity and the action's parameters. Returns 202 Accepted with a Location header for polling the async status. Required: endpoint_name, endpoint_version, entity, action.
- **List all Acumatica attachments** (List). List the files attached to a specific Acumatica record, addressed by its data view and field. Returns the attachment metadata: id, filename, href, and comment. Required: endpoint_name, endpoint_version, view, field, record_id.
- **Get single Acumatica attachment by ID** (Get). Get the binary content of a file attached to an Acumatica record, addressed by view, field, record id, and filename. Returns the attached file's raw binary content (not a JSON object). Required: endpoint_name, endpoint_version, view, field, record_id, filename.
- **Create a Acumatica attachment** (Create). Attach a file to an Acumatica record by uploading its binary content to the given view, field, and record. Returns the attachment metadata: id, filename, href, and comment. Required: view, field, record_id, filename, content.
- **Acumatica attachments list files** (List). List the files attached to an Acumatica record, addressed by entity and the record's id or key values. Returns the attachment metadata: id, filename, href, and comment. Required: endpoint_name, endpoint_version, entity, id_or_keys.
- **Acumatica instance swagger get swagger** (Get). Get the swagger.json OpenAPI 3.0 specification of the Acumatica ERP instance-level contract-based REST API. Returns the OpenAPI 3.0 document, whose contents are specific to the Acumatica instance and describe its available methods (sign in, sign out, get version).
- **Create a Acumatica entity record** (Create). Create a record for an Acumatica ERP entity by sending its JSON representation to the entity's collection path. Returns the created record, including system fields id, rowNumber, and note, the entity's contract fields in {value: ...} format, and any custom fields. Required: endpoint_name, endpoint_version, entity. Acumatica uses PUT rather than POST for creates; the JSON body needs only the…
- **Acumatica report get report** (Get). Download a generated Acumatica report file by request id, polling the Location URL returned when the report was requested. Returns the report file binary in the requested format (PDF, HTML, or XLSX) once generation is complete — file content, not a JSON object. Required: endpoint_name, endpoint_version, report_entity, format, request_id.
