MCP server for Acumatica ERP integration, providing tools for schema discovery, data retrieval, documentation search, and write operations against Acumatica instances via OData
MCP4Acumatica demonstrates good tool naming, comprehensive descriptions, and well-structured schemas across 12 tools. All tools follow verb_noun patterns (search_, get_, list_, describe_, run_, explain_, clear_). Descriptions are concise and actionable (100-300 chars typical), explaining WHAT each tool does and WHEN to call it. Input schemas use proper JSON Schema with type declarations and parameter descriptions. However, output schemas are not explicitly documented in the tool definitions, the descriptions reference what is returned, but formal output schema declarations are absent. Error handling is implicit rather than explicit (no structured error recovery guidance in descriptions). Tool composition is excellent, tools chain naturally (search → get/describe → run/explain pattern) and support discovery workflows. Security appears solid (read-only operations documented, no exposed credentials visible). Parameter validation rules are described in descriptions but not formally declared as JSON Schema constraints (e.g., topN limits, formId format). Minor gap: descriptions occasionally reference external context (e.g., 'Form ID like AP301000') that could be more formally specified as regex patterns in schema.
Clear the server's internal caches (Generic Inquiry registry, schema metadata). Use if you've made configuration changes in Acumatica (added a new GI, modified entity schema, etc.) and need the server to re-read the latest metadata.
Retrieve the schema (fields, field types, validation, subCollections) for an Acumatica entity. Use acumatica_list_entities to find available entity names.
Retrieve the field schema for a Generic Inquiry (GI). Returns the result columns, their types, and metadata. Use acumatica_list_generic_inquiries to discover available GI names and acumatica_run_inquiry to execute the GI.
Explain a Generic Inquiry's XML definition in human-readable terms. Pass the GI's raw XML (from Acumatica's GI editor or exported file) to understand its structure, filters, calculated columns, and report parameters.
Retrieve the full text of a documentation section by its chunkId (from acumatica_search_docs, e.g. 'projects:214') or by Form ID (e.g. AP301000). Returns section text, breadcrumb path, and links to adjacent sections.
Output schemas are not formally documented. Tool descriptions reference returned fields (e.g., 'Returns matching section headings and their chunk IDs') but no JSON Schema output structures are declared in the tool definitions. LLMs must infer output structure from descriptions alone, increasing error risk during response parsing and chaining.
Error handling descriptions are minimal. Tools like acumatica_search_docs reference 'error' responses but do not explain recovery paths. Descriptions state what can fail (e.g., 'Documentation index not available') but not what the LLM should do next (retry, call alternative tool, ask user). This violates recovery-guide pattern.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 73 | <=2025-11-25 | v2 |
Retrieve the schema (fields, types, actions, subCollections) for an Acumatica entity. This is the primary tool for understanding entity structure. Similar to acumatica_describe_entity but backed by a pre-built index for speed.
List entities available for read/write in Acumatica. Each result is a single entity endpoint (e.g., Vendor, SalesOrder). Use to discover what you can query with acumatica_describe_entity.
List all Generic Inquiries (GIs) exposed via OData in your Acumatica instance. Use acumatica_describe_inquiry to learn a GI's field schema and acumatica_run_inquiry to execute it.
List all entities in the Acumatica OData schema. Optionally filter by module tag (e.g., 'Accounts Payable'). Use acumatica_get_schema_entity to see full details of any entity.
Execute a Generic Inquiry (GI) exposed via OData in Acumatica and return filtered results. Use this for custom reports and cross-entity queries. Use acumatica_list_generic_inquiries to discover GI names and acumatica_describe_inquiry to get field schema before calling this tool.
Search the official Acumatica documentation by feature/section terms and/or Form ID. Returns matching section headings and their chunk IDs. Pass a result's chunkId to acumatica_get_doc_section to read the section text.
Search the Acumatica OData schema by keyword. Finds entities, fields, and actions matching your search terms. Use acumatica_get_schema_entity to see full details of a matched entity.
Parameter constraints are described informally in text but not formally declared in JSON Schema. Example: acumatica_search_docs 'topN' parameter description says 'Optional, default varies' but does not specify minimum, maximum, or default value in the schema. acumatica_run_inquiry 'filterExpression' warns about OData dialect differences but does not provide a pattern constraint or reference documentation.
acumatica_clear_cache tool lacks a confirmation or dry-run mechanism. This is a reversible but potentially disruptive operation (clears all cached metadata). The description does not warn about the consequence of calling it mid-operation or explain when it is safe to invoke. Should provide explicit guidance on when and why to call this tool.
Discovery tools (list_entities, list_generic_inquiries, list_schema_entities) have minimal descriptions (70 chars). Descriptions like 'List entities available for read/write in Acumatica' do not explain when to call them relative to other discovery tools or what their output enables. acumatica_list_entities vs acumatica_list_schema_entities distinction is unclear, descriptions do not explain why both exist or which to prefer.