Skip to main content

How Tool Generation Works

Overview

Flowon Logic Conductor does not ship a fixed list of tools. Instead, at startup it reads your Flowon artifacts and emits a tool for each one into a dynamic in-memory assembly. Each generated tool is a normal MCP tool - it has a name, a title, a description, typed parameters, and a structured return value - but every part of it is derived from the Flowon artifact it represents.


Which Artifacts Become Tools

Conductor only generates tools for Logic Flows and Logic Blocks that are marked as actions in the configured projects.

RequirementDetail
TypeLogic Flow or Logic Block
Action flagThe artifact must be an action (isAction). Non-action artifacts are ignored.
ProjectThe artifact must belong to a project listed in the FLOWON_PROJECTS setting

Artifacts are enumerated in pages of 50 across all configured projects, so every action artifact is included regardless of how many you have.

Tip: Marking an artifact as an action is the opt-in switch that exposes it as a tool. Keep internal helper blocks and flows as non-actions to keep them off the agentic surface.


Anatomy of a Generated Tool

Tool aspectSource in Flowon
NameDerived from the artifact name (see Naming below)
TitleThe artifact's metadata Title
DescriptionThe artifact's metadata Description - this is what the agent reads to decide when to call the tool
ParametersOne parameter per Input argument, using the argument's name and description
Return valueOne field per Output argument; Logic Flow tools also return a run status

Because the description and parameter descriptions come straight from the artifact, the quality of your tool is the quality of your Flowon metadata. See Best Practices.

Tool Naming

The tool name depends on how many projects are exposed. Names are lower-cased and spaces are replaced with underscores.

ConfigurationTool nameExample
Single project (FLOWON_PROJECTS has one entry){action_name}Approve Credit Limitapprove_credit_limit
Multiple projects{project_name}_{action_name}Project Sales, action Approve Credit Limitsales_approve_credit_limit

Prefixing with the project name when multiple projects are exposed keeps tool names unique across projects.


Input Type Mapping

Each Input argument becomes a typed tool parameter. Flowon argument types map to the parameter types the agent sees as follows:

Flowon typeTool parameter typeNotes
String, Unique Identifierstring
Integerint
Decimal, Double, Float, MoneydecimalNumeric
Booleanbool
Option Setint, or bool for two-option setsPass the option's integer value
Date/TimeDateTime
Entity ReferenceGuidThe record ID; the target entity is fixed by the argument definition
ImagestringBase64-encoded
Entitystructured objectA typed view of the entity's properties
ListarrayAn array of the item type above

Inputs are normalized before execution - for example, an Entity Reference Guid is expanded to a Dataverse EntityReference against the argument's target entity, and images are decoded from Base64.


Output Type Mapping

Each Output argument becomes a field on the tool's structured result. Most types are returned as-is, with two conversions applied for AI-friendliness:

Flowon output typeReturned as
Entity ReferenceAn object with Id and Name
ImageBase64-encoded string
All other typesTheir natural JSON value

Execution Semantics

Logic Flow tools

A Logic Flow tool runs the flow with the supplied parameters and returns its Output arguments plus a run status:

RunFlowStatusResultMeaning
SuccessThe flow completed successfully
SuccessWithErrorThe flow completed, but reported an application error; the available output is still returned

If a flow faults (an unhandled execution error), the tool call fails with an MCP error describing the flow, project, and underlying exception - so the agent can read the message and react.

Logic Block tools

A Logic Block tool evaluates the block with the supplied parameters and returns its Output arguments. Blocks are pure evaluations - they compute and return a result rather than orchestrating a multi-step workflow.

┌────────────────────────────────────────────────────────────────────────┐
│ A TOOL CALL, END TO END │
├────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. Agent calls approve_credit_limit(customerId, requestedLimit) │
│ │
│ 2. Conductor normalizes inputs │
│ customerId (Guid) → EntityReference(account, <id>) │
│ │
│ 3. Runs the Logic Flow under the caller's Dynamics identity │
│ │
│ 4. Returns Output arguments + RunFlowStatusResult │
│ { approved: true, approvedLimit: 50000, │
│ runFlowStatusResult: "Success" } │
│ │
└────────────────────────────────────────────────────────────────────────┘

Refreshing the Tool Catalogue

Tools are generated at startup. When you add, remove, or change action artifacts in the exposed projects - including their titles, descriptions, inputs, or outputs - restart the server to regenerate the catalogue so MCP clients pick up the changes.