---
title: "Data tools, form tools or action tools — which does your ERP agent need?"
canonical_url: "https://cognilium.ai/blogs/mcp-data-tools-vs-form-tools-vs-action-tools"
slug: "mcp-data-tools-vs-form-tools-vs-action-tools"
section: "blogs"
date_published: "2026-09-09"
date_modified: "2026-09-16"
word_count: 1339
reading_time_minutes: 6
author: "Mudassir Marwat"
author_identifier: "0009-0008-1927-2598"
person_same_as:
  - "https://www.linkedin.com/in/mudassir-marwat/"
  - "https://orcid.org/0009-0008-1927-2598"
  - "https://github.com/mudassirmarwat"
  - "https://medium.com/@mudassir-marwat"
  - "https://www.youtube.com/@mudassir-marwat"
  - "https://dev.to/mudassirmarwat"
  - "https://hashnode.com/@mudassirmarwat"
  - "https://huggingface.co/mudassirmarwat"
  - "https://bsky.app/profile/mudassir-marwat.bsky.social"
  - "https://substack.com/@mudassirmarwat"
  - "https://topmate.io/mudassirmarwat"
  - "https://fueler.io/mudassirmarwat"
  - "https://www.instagram.com/mudassirmarwat/"
  - "https://www.facebook.com/mudassir.marwat"
  - "https://www.reddit.com/user/mudassirmarwat/"
  - "https://www.f6s.com/member/mudassir-marwat"
  - "https://cognilium.ai/founder"
entities: []
related:
  - "https://cognilium.ai/blogs/which-environments-run-the-erp-mcp-server"
  - "https://cognilium.ai/blogs/does-the-erp-mcp-server-truncate-results"
  - "https://cognilium.ai/blogs/which-model-should-an-erp-agent-run-on"
---
# Data tools, form tools or action tools — which does your ERP agent need?

Three tool families on the Dynamics 365 ERP MCP server, in the priority order Microsoft publishes: data tools for CRUD, form tools for what the app decides.

## Key takeaways

- The three tool families are layers, not alternatives, and Microsoft publishes a priority order — data tools first for anything CRUD-shaped.
- Microsoft's instruction block says you MUST prefer data tools for create, read, update and delete, because they need fewer tool calls and perform better.
- Form tools exist for what the application calculates at runtime or decides through code — values that are not columns and buttons that are not records.
- Form tools are not screen automation. Microsoft compares them to Computer Use Agents and says they work through server APIs against the application view model.
- Action tools are two tools over an unlimited surface — any X++ class implementing ICustomAPI with security on its menu item.
- An agent using the wrong family is usually an instructions problem, and Microsoft names adding guidance as the fix.

**Most likely all three, and Microsoft publishes the order to try them in.** The Dynamics 365 ERP MCP server exposes three families, and they are not alternatives — they are layers, with a documented preference between them.

Getting the order wrong is the most common way an agent ends up slow and expensive while still technically working.

## What are the three families?

Microsoft names them plainly:

> *"**Data tools:** These tools enable the agent to perform standard data operations to create, read, update, and delete data in your finance and operations apps environment. **Form tools:** These tools enable the agent to perform operations that are available on pages in the application. **Action tools:** Enable the agent to find and directly invoke classes in finance and operations apps code."*

The counts matter for scoping: **seven data tools, thirteen form tools, two action tools.** All twenty-two are published with names and descriptions, so you can read the whole surface before you build against it.

**The important structural point is what they have in common.** All three are generic primitives, not named business functions. Microsoft is explicit that this replaced the older approach: rather than *"having static tools for specific actions, like Find approved vendors or Release purchase requisition lines, the agent uses the tools to open forms, set field values, and select actions available on the form."*

That is why [migrating from the static server is a rewrite rather than a port](/blogs/static-erp-mcp-server-retirement).

## Which family should the agent reach for first?

Data tools — and this is not a preference we invented. It is in the instruction block Microsoft ships:

> *"For create/read/update/delete operations - you MUST prefer using data tools before using form tools."*  *"When explicitly instructed, or if proved impossible to complete the task using data tools, use the form or API tools."*

Microsoft explains the reason in engineering terms: working through data entities *"is more efficient for standard CRUD operations. It provides better performance and requires fewer tool calls to perform the operations than using the form tools."*

**Fewer tool calls is not only a latency argument.** Outside Copilot Studio each call is billed, so tool selection is a cost decision as much as a design one — which is [the running-cost question](/blogs/dynamics-365-ai-agent-running-costs) in a different form.

Microsoft even names the failure and its fix: *"If you find that your agent is using form tools for operations that the agent could perform more optimally through data tools, you can improve performance by adding guidance in your agent instructions on which tools the agent should use for your scenarios."*

**So a slow agent is often an instruction problem, not a platform problem.**

## What are data tools actually good for?

Reading and writing records where the record is the whole job. The seven cover entity discovery, metadata, and then create, read, update and delete over OData.

Two of them exist purely to make the others usable: `data_find_entity_type` finds the entity, and `data_get_entity_metadata` returns the schema *"needed for calling the `data_find_entities`, `data_create_entities`, `data_update_entities`, and `data_delete_entities` tools."*

**Three constraints decide whether this path works for your operation**, all published:

And one change is coming that affects reads: `data_find_entities_sql` *"replaces the `data_find_entities` tool that uses OData in version 10.0.48 of finance and operations apps."* Microsoft documents the dependency; it does not publish a date for 10.0.48, so **do not build a plan around that version yet.**

## What are form tools for, if data tools are faster?

Everything the application *calculates* or *decides* rather than stores. Microsoft draws the line precisely:

> *"Form tools are optimal for enabling agents to perform operations that are available in the application that aren't standard Create, Read, Update, Delete (CRUD) operations. For example, actions in the application performed by clicking buttons that execute business logic through code are available to agents through these tools, or retrieving record values that the application calculates at runtime."*

**"Calculates at runtime" is the phrase to hold on to.** A price after discount rules, an availability figure, a promise date — these are not columns you can read. They exist because the application computed them, so reaching them means going where the computation happens.

And the mechanism is server-side, not screen-driven:

> *"Although form tools are conceptually similar to Computer Use Agents (CUA), the tools don't work directly with the application client. Rather than opening a client session for the agent interaction, the tools work through server APIs that provide the agent with the application view model as context."*

Microsoft's comparison is to a **Computer Use Agent**, and the answer is no — which is [the question that deserves its own article](/blogs/erp-form-tools-are-not-rpa).

## What are action tools for?

The residue: business logic that neither entities nor pages expose. Microsoft frames it as a genuine minority case — entities and forms make *"millions of actions available to agents"*, but

> *"there might be scenarios where the action or business logic isn't available through the entities or application client, or the agent needs direct access to the logic through code."*

Then a developer writes it. The route is specific: a class *"using the AI tool framework"* that implements the **`ICustomAPI`** interface, with security defined for the associated menu action item, and correctly configured classes *"appear in the list on the **Synchronize Dataverse Custom APIs** (CustomApiTable) form."* The agent finds and calls them with `api_find_actions` and `api_invoke_action`.

**Two tools, unlimited surface** — which is why this family looks small and is not. [Exposing your own X++ logic](/blogs/expose-x-plus-plus-logic-as-agent-tool) is the deep version of this.

## How do you actually choose, per operation?

Ask what kind of thing the answer is. That routes it in one step:

**Write the routing into the agent's instructions rather than hoping orchestration finds it.** That is Microsoft's own remedy for the wrong-family problem, and it is the cheapest lever in the whole build.

**About Cognilium** Cognilium builds AI optimization apps for Microsoft Dynamics 365 — companion apps that optimize the pricing, inventory, warehouse and planning decisions your ERP manages but can't optimize. Dynamics is your system of record. Cognilium is your system of intelligence. https://cognilium.ai · https://www.linkedin.com/company/37180269/

**Agentic ERP.** We build turnkey AI optimization apps for Dynamics 365 — sidecar applications that run in your own Azure tenancy and solve the calculations a standard ERP is not built to compute. Built on **Azure OpenAI, Microsoft Fabric and Copilot Studio**. We build these on request, against your data and your environment.

**More on the boundary between what Copilot does and what you build:** [Agentic ERP on Dynamics 365](/erp-ai).

If you are mapping a specific operation to a tool family and the answer is not obvious, that is a 15-minute call. Bring the operation.

## Sources

- [Use Model Context Protocol for finance and operations apps](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/copilot/copilot-mcp)
- [Build an agent with Dynamics 365 ERP MCP](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/copilot/build-agent-mcp)
- [Create AI tools with finance and operations business logic](https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/copilot/copilot-ai-plugins)

## Fact-check

**Tier summary:** 16 × T1 (15 verbatim, 1 a recount), 2 × T2 — **0 × T4.**

**One absence claim, bounded.** Claim 13 says Microsoft does not publish a date for 10.0.48. It is bounded in the body to what the MCP pages document, and phrased as the contrast between a documented dependency and an undocumented date — not as an unbounded negative about Microsoft's documentation.

## Frequently asked questions

### What are the three families?

The counts matter for scoping: seven data tools, thirteen form tools, two action tools. All twenty-two are published with names and descriptions, so you can read the whole surface before you build against it.

### Which family should the agent reach for first?

Data tools — and this is not a preference we invented. It is in the instruction block Microsoft ships:

### What are data tools actually good for?

Reading and writing records where the record is the whole job. The seven cover entity discovery, metadata, and then create, read, update and delete over OData.

### What are form tools for, if data tools are faster?

Everything the application calculates or decides rather than stores. Microsoft draws the line precisely:

### What are action tools for?

The residue: business logic that neither entities nor pages expose. Microsoft frames it as a genuine minority case — entities and forms make "millions of actions available to agents", but

### How do you actually choose, per operation?

Ask what kind of thing the answer is. That routes it in one step:

---

Canonical HTML: https://cognilium.ai/blogs/mcp-data-tools-vs-form-tools-vs-action-tools
