Skip to content

FlowStack Configurations

This document covers configurations for FlowStack server. Schema in the following sections will use Typescript format to define the type.

MCP Server configuration.

MCP servers configuration file defines list of MCP servers available for the FlowStack instance. Here is the structure of configuration file

{
    mcpServers : [ 
        <MCP server configuration>
    ]
}

Each of the MCP server definition follows the following structure

{
    "name": string,
    "category" : "DB" | "System" | "Saas",
    "command" : string,
    "connection": {
        "type": "stdio"
    }
}

Details

Field Name Type Mandatory Description
name String Yes A unique identifier for the server. Agents will use this value to identify the MCP server it needs to use
category String Yes The functional classification. At the moment used for UI rendering. Supported values are DB, System and Saas
command String Yes Command that will be executed by the FlowStack server to start the MCP server. You can use system property mcp.base, as part of the command
connection Object Yes At the moment only stdio mode is available for MCP servers. So, the type attribute will have stdio as the value

Here is a sample for SQLite MCP server

{
    "name": "sqlite",
    "category" : "System",
    "command" : "/usr/bin/java -DdataPath=/tmp -jar ${mcp.base}/sqlite/build/libs/sqlite-1.0.1-all.jar ",
    "connection": {
        "type": "stdio"
    }
}

Agent configuration.

Agent configuration defines agent instances, which are combination of prompts, MCP servers, channels. Agent configuraiton will have similar top level structure as MCP servers.

{
    agents : [ 
        <Agent definition>
    ]
}

Each of the agent definition has the following schema

{
    "name": string,
    "id": string,
    "description": string,
    "context": {file:string} | string,
    "mcpServers": string[],
    "channels": string[],
    "variables": Variable[],
    "hitlConfig" : HITLConfig[]
}

Agent Definition

Field Name Type Mandatory Description
name String Yes A unique display name for the Agent.
id String Yes Unique identifier for the agent. Within FlowStack or for multi-agent configuration, this will be the identifier used. Reccomended characeters are A-Z,a-z,0-9,_.
description String Yes A free form text describing the agent. This information will be used by other agents to determine high level capabilities of this agent.
context Object Yes Domain context for the agent, which provides system context for the LLM for this agent. Value can be a context. If the context is too large, save it in a file and specify the file attribute for context.
mcpServers String[] Yes An array of MCP server identifiers that this agent will use.
agents String[] No An array of agent identifiers this agent can communicate to in a multi-agent scneario.
channels String[] No An array of channels the agent will listen to and respond to. At the moment only slack is supported as channel.
variables Variable[] No List of variables that the agent prompts will use, which will be replaced with values during runtime. See the Variables section
hitlConfig Object No Human in the loop configuration. See HITLConfig Section

Variables

Variables can be included in system context or user prompts for the agent. They are replaced at runtime before sending the prompt to LLM.

{
    "name": string,
    "label": string,
    "description": string,
}
Field Name Type Mandatory Description
name String Yes Name of the variable. Reccomended characeters are A-Z,a-z,0-9,_.
label String Yes A display name for the variable. Used primarily in UI
description String Yes Detailed description of the variable. Used in UI

HITLConfig (Human In The Loop)

Human in the loop configuration provides definitions for setup to handle human in the loop events from the agent. Here is the schema for the definition. Basically HITLConfig provides list of targets.

{
    "targets" : HITLTarget[]
}

HITLTarget

{
    "type" : "webhook" | "event";
    "instance" : string;
}
Field Name Type Mandatory Description
type String Yes Supports the following options.
. event : An event will be triggered on the subscribed channels for this target type
. webhook : A POST request will be triggered on the provided webhook URL.
instance String Only for webhook type URL of the webhook

Here is a sample agent definition for an agent with Human In The Loop configuration

{
    "name": "SQLite",
    "id": "sqlite",
    "description": "SQLite Integration",
    "context": {
        "file": "sqliteContext.txt"
    },
    "hitlConfig" :{
        "targets" : [
            {
                "type" : "webhook",
                "instance" : "http://localhost:8090/hil"
            },
            {
                "type" : "event"
            }
        ]
    },
    "mcpServers": ["sqlite"]
}

Following samle agent configuration uses variables.

{
    "name": "File system and GMail",
    "id": "fs_and_Gmail",
    "description": "File system and Gmail integration",
    "context": {
        "file": "fileSystemAndGmailSystemPrompt.txt"
    },
    "mcpServers": ["filesystem","gmail"]
    "variables": [
        {
            "name": "fullName",
            "label": "Full Name",
            "description": "Full name of the recipient"
        },
        {
            "name": "subject",
            "label": "Email Subject",
            "description": "Subject for the email"
        },
        {
            "name": "email",
            "label": "Email address",
            "description": "Email address recipient"
        }
    ]
}