Skip to main content
Groups let you create named collections of specific tools from across multiple schemas. Prompts attach reusable workflows to groups, guiding AI agents through multi-step tasks.
This page combines the Groups and Group Prompts sections from the formal specification.

Groups

A typical FlowMCP installation has hundreds of schemas with thousands of routes. Most projects only need a handful of specific tools. Groups solve this by letting you:
  1. Select specific routes from any schema
  2. Name the collection for reuse
  3. Verify integrity with cryptographic hashes
  4. Share collections across projects and teams

Group Definition

Groups are defined in .flowmcp/groups.json:
{
    "specVersion": "2.0.0",
    "groups": {
        "my-crypto-monitor": {
            "description": "Crypto price and TVL monitoring tools",
            "tools": [
                "etherscan/contracts.mjs::getContractAbi",
                "coingecko/coins.mjs::getSimplePrice",
                "coingecko/coins.mjs::getCoinMarkets",
                "defillama/protocols.mjs::getTvlProtocol"
            ],
            "hash": "sha256:a1b2c3d4e5f6..."
        }
    }
}

Tool Reference Format

Tools are referenced as namespace/schemaFile::routeName:
PartDescriptionExample
namespaceProvider namespaceetherscan
schemaFileSchema filenamecontracts.mjs
routeNameRoute name within the schemagetContractAbi
Full reference: etherscan/contracts.mjs::getContractAbi

Hash Verification

Integrity hashes ensure group definitions haven’t changed unexpectedly. When a schema is updated, the hash changes and verification fails. Per-tool hash — calculated from the main block only (no handler code):
toolHash = SHA-256( JSON.stringify( {
    namespace, version, route: { name, method, path, parameters, output },
    sharedListRefs: [ { ref, version } ]
} ) )
Per-group hash — calculated from sorted tool references and their individual hashes:
groupHash = SHA-256( JSON.stringify(
    tools.sort().map( ( toolRef ) => ({ ref: toolRef, hash: getToolHash( toolRef ) }) )
) )
Handler code is excluded from the hash — a handler change does not invalidate the group.

Verification CLI

flowmcp group verify my-crypto-monitor
Group "my-crypto-monitor": 4 tools, all hashes valid

Group Operations

OperationCommandDescription
Createflowmcp group create <name>Create empty group
Add toolflowmcp group add <name> <tool-ref>Add tool and recalculate hash
Remove toolflowmcp group remove <name> <tool-ref>Remove tool and recalculate hash
Verifyflowmcp group verify <name>Check all hashes
Listflowmcp group listShow all groups
Exportflowmcp group export <name>Export as shareable JSON
Importflowmcp group import <file>Import from JSON (verifies hashes)

Group Constraints

ConstraintValue
Name pattern^[a-z][a-z0-9-]*$ (lowercase, hyphens allowed)
Max tools per group50
All tools must be resolvableSchema + route must exist
No duplicate tool referencesWithin a group
Tools can belong to multiple groupsCross-group sharing allowed
Groups are project-localStored in .flowmcp/groups.json

Sharing Groups

# Export
flowmcp group export my-crypto-monitor > my-crypto-monitor.json

# Import (verifies hashes on import)
flowmcp group import my-crypto-monitor.json

# Force import (skip hash verification)
flowmcp group import my-crypto-monitor.json --force

Prompts

Prompts bridge the deterministic tool layer with non-deterministic AI orchestration. Groups define which tools are available; prompts define how to use them together.

Separation of Concerns

LayerNatureResponsibility
SchemaDeterministicDefines individual tool behavior
GroupDeterministicDefines which tools are available
PromptNon-deterministicDefines how tools compose into workflows

Prompt File Format

Prompts are stored as .md files in .flowmcp/prompts/:
.flowmcp/
├── groups.json
├── prompts/
│   ├── token-analysis.md
│   └── portfolio-snapshot.md
└── tools/

Required Sections

SectionHeadingRequiredDescription
Title# <title>YesFirst line of the file
Description## DescriptionNo1-3 sentences about the prompt
Input## InputNoParameters the user provides
Workflow## WorkflowYesStep-by-step instructions referencing tools
Output## OutputNoFinal artifact description

Example Prompt File

# Standard Token Analysis

## Description
Generate a comprehensive technical analysis report for any financial instrument.
Combines price data, technical indicators, and chart generation.

## Input
- `tokenName` (string, required): Name or ticker symbol of the instrument

## Workflow
### Step 1: Symbol Resolution
Search for `{tokenName}` using `searchSymbol`.
Select the first result matching the query.

### Step 2: Fetch Price Data
Using the resolved symbol, call `getOhlcv` with:
- interval: 1d
- period1: 200 days ago from today

### Step 3: Compute Indicators
From OHLCV data, compute:
1. `getRelativeStrengthIndex` with closings, period=14
2. `getSimpleMovingAverage` with closings, period=20
3. `getMovingAverageConvergenceDivergence` with closings

### Step 4: Generate Charts
1. `generateCandlestickChart` with OHLCV data + SMA overlays
2. `generateLineChart` for RSI values

### Step 5: Report
Produce a Markdown document with indicator summary and embedded charts.

## Output
- Markdown document with embedded base64 chart images
- Indicator summary with BUY/SELL/HOLD signals

Group Config Extension

Prompts are declared in the group definition:
{
    "specVersion": "2.0.0",
    "groups": {
        "trading-analysis": {
            "description": "Technical analysis and charting tools",
            "tools": [
                "yahoofinance/market.mjs::searchSymbol",
                "yahoofinance/market.mjs::getOhlcv",
                "indicators/oscillators.mjs::getRelativeStrengthIndex",
                "indicators/averages.mjs::getSimpleMovingAverage"
            ],
            "hash": "sha256:a1b2c3...",
            "prompts": {
                "token-analysis": {
                    "title": "Standard Token Analysis",
                    "description": "Full technical analysis report for a token",
                    "file": ".flowmcp/prompts/token-analysis.md"
                }
            }
        }
    }
}

Prompt CLI Commands

CommandDescription
flowmcp prompt listList all prompts across all groups
flowmcp prompt search <query>Search prompts by title or description
flowmcp prompt show <group>/<name>Display full prompt content
flowmcp prompt add <group> <name> --file <path>Add prompt to a group
flowmcp prompt remove <group> <name>Remove prompt from group

Naming Conventions

ElementConventionExample
Prompt name (key)Lowercase with hyphenstoken-analysis
Prompt filenameMatches name + .mdtoken-analysis.md
Prompt titleHuman-readable, title caseStandard Token Analysis
Prompt directoryFixed path.flowmcp/prompts/

Tool Reference Detection

The validator scans the ## Workflow section for backtick-enclosed tool names. A word in backticks is a tool reference if it matches a route name in the group’s tools array.
Workflow text: "Search using `searchSymbol`."
Detected: searchSymbol
Resolved: yahoofinance/market.mjs::searchSymbol -> valid

Prompt Validation Rules

CodeRule
PRM001Prompt name must match ^[a-z][a-z0-9-]*$
PRM002File must exist at declared path
PRM003File must have # Title (first line)
PRM004File must have ## Workflow section
PRM005Tool references must resolve in group (warning)
PRM006Group must have at least one tool
PRM007No duplicate prompt names within a group
PRM008Filename must match prompt name