Core Concepts
Dependency Tracking
One of the most powerful capabilities of the FlowOn AI MCP Server is its ability to map the complete dependency graph of any artifact. This lets the AI agent understand the full impact of a proposed change before making it—preventing unintended consequences across projects and artifact types.
Dependency tools are available for Logic Blocks, Logic Flows, and Logic Recipes.
┌─────────────────────────────────────────────────────────────────────┐
│ DEPENDENCY GRAPH EXAMPLE │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ Logic Block: "CalculateCreditLimit" │
│ ───────────────────────────────── │
│ │
│ USED BY: │
│ • Logic Flow: "OrderApprovalFlow" (Project: Sales) │
│ • Logic Flow: "QuoteValidationFlow" (Project: Sales) │
│ • Logic Recipe: "OpportunityPreCreate" (Project: Sales) │
│ • BPM Version: "OrderProcess v2.1" (Project: Operations) │
│ │
│ USES: │
│ • Logic Block: "GetCustomerTier" (Project: Sales) │
│ • Configuration: "CreditLimitDefaults" (Project: Sales) │
│ • Localized Resource: "CreditErrorMsg" (Project: Sales) │
│ │
│ IMPACT of modifying "CalculateCreditLimit": │
│ 4 artifacts across 2 projects will be affected │
│ │
└─────────────────────────────────────────────────────────────────────┘
Dependency Tools
| Tool | What it maps |
|---|---|
list_logic_block_dependencies | All artifacts that depend on a Logic Block, and all artifacts it depends on |
list_logic_flow_dependencies | All artifacts that depend on a Logic Flow, and all artifacts it depends on |
list_logic_recipe_dependencies | All artifacts a Logic Recipe depends on |
Dependency Types
The following dependency types are tracked across artifacts:
| Dependency Type | Description |
|---|---|
| Logic Block | A Logic Block referenced by another block, flow, recipe, or BPM version |
| Logic Flow | A Logic Flow referenced by a recipe or BPM version |
| Logic Recipe | A Recipe that invokes a given block or flow |
| Business Process Version | A BPM version that references a given block or flow in a stage or transition |
| Configuration | A Configuration record read at runtime by a block or flow |
| Localized Resource | A localised string used by a block or flow |
| Service Connection | An external service connection called by a Logic Flow |
Managed Solution Protection
The FlowOn AI MCP Server enforces a fundamental rule of Dynamics 365 solution management: artifacts in managed solutions cannot be modified.
This protection exists because managed solutions represent installed, version-controlled packages—typically delivered from a vendor or another environment. Modifying their contents directly would break the upgrade path and create environment drift.
Any attempt to create or update a Logic Block or Logic Flow in a project that is associated with a managed Dynamics 365 solution will be rejected with a clear error message before any change is made.
┌─────────────────────────────────────────────────────────────────────┐
│ MANAGED SOLUTION PROTECTION │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ✓ ALLOWED (any solution) ✗ BLOCKED (managed solutions) │
│ ────────────────────── ────────────────────────────── │
│ │
│ Read any artifact create_formula_logic_block │
│ List any artifact create_decision_table_ │
│ View dependencies logic_block │
│ Inspect BPM versions create_decision_tree_ │
│ Query Dataverse metadata logic_block │
│ create_validation_logic_block │
│ create_validation_set_ │
│ logic_block │
│ update_logic_block_metadata │
│ create_logic_flow │
│ update_logic_flow_metadata │
│ create_project │
│ │
└─────────────────────────────────────────────────────────────────────┘
Resolving a Managed Solution Error
If you receive a managed solution protection error, follow these steps:
1. Call get_project_details(projectName)
→ Check the isManaged flag on the associated solution
2. If isManaged = true:
→ The project is read-only in this environment
→ Changes must be made in the environment where the
solution is unmanaged (typically Development)
→ Use FlowOn CI/CD Tools to deploy changes across environments
3. If isManaged = false:
→ Something else caused the error
→ Review the full error message and retry
Pagination
List tools that may return large result sets support server-side pagination. Results are returned in pages of 25 records to ensure consistent, predictable performance regardless of environment size.
How Pagination Works
FIRST PAGE
──────────
Call: list_all_logic_blocks()
Returns: records 1–25, PagingCookie, NextPageNumber = 2, MoreRecords = true
NEXT PAGE
─────────
Call: list_all_logic_blocks(pageNumber: 2, pagingCookie: "...")
Returns: records 26–50, PagingCookie, NextPageNumber = 3, MoreRecords = true
LAST PAGE
─────────
Call: list_all_logic_blocks(pageNumber: N, pagingCookie: "...")
Returns: final records, MoreRecords = false
Pagination Response Fields
| Field | Type | Description |
|---|---|---|
TotalRecordCount | int | The total number of records across all pages |
MoreRecords | bool | true if additional pages exist beyond the current page |
NextPageNumber | int? | The page number to pass in the next call. null on the last page. |
PagingCookie | string | An opaque token that must be passed alongside NextPageNumber in subsequent calls |
Important: Always pass both
pageNumberandpagingCookietogether when retrieving subsequent pages. The paging cookie is required for Dataverse to return the correct next page.
Tools That Support Pagination
| Tool | Entity |
|---|---|
list_all_logic_blocks | Logic Blocks |
list_all_logic_flows | Logic Flows |
list_all_logic_recipes | Logic Recipes |
list_business_processes | Business Processes |
Agent Pagination Behaviour
When an AI agent is searching for a specific artifact by name, it should continue paginating through results until either the artifact is found or MoreRecords is false. The agent must not stop at the first page and assume an artifact does not exist.