Zum Inhalt springen

Groups & Skills

Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.

Groups let you create named collections of specific tools, resources, and skills from across multiple schemas. Skills attach reusable AI agent workflows to groups, guiding AI agents through multi-step tasks.

A typical FlowMCP installation has hundreds of schemas with thousands of tools. Most projects only need a handful of specific tools. Groups solve this by letting you:

  1. Select specific tools and resources from any schema
  2. Name the collection for reuse
  3. Verify integrity with cryptographic hashes
  4. Share collections across projects and teams

Groups are defined in .flowmcp/groups.json:

{
"specVersion": "3.0.0",
"groups": {
"my-crypto-monitor": {
"description": "Crypto price and TVL monitoring tools",
"tools": [
"etherscan/contracts.mjs::tool::getContractAbi",
"coingecko/coins.mjs::tool::getSimplePrice",
"coingecko/coins.mjs::tool::getCoinMarkets",
"defillama/protocols.mjs::tool::getTvlProtocol",
"etherscan/contracts.mjs::resource::verifiedContracts"
],
"hash": "sha256:a1b2c3d4e5f6...",
"includeSchemaSkills": true
}
}
}

In v3.0.0, tool references use type discriminators to distinguish between tools, resources, and skills:

DiscriminatorFormatExample
::tool::namespace/file.mjs::tool::nameetherscan/contracts.mjs::tool::getContractAbi
::resource::namespace/file.mjs::resource::nameetherscan/contracts.mjs::resource::verifiedContracts
::skill::namespace/file.mjs::skill::nameetherscan/contracts.mjs::skill::contract-audit

For backward compatibility, the v2 format namespace/file.mjs::routeName (without type discriminator) is still accepted and is treated as ::tool::.

When includeSchemaSkills is set to true, the group automatically includes all skills from schemas whose tools are already in the group.

Integrity hashes ensure group definitions haven’t changed unexpectedly.

Per-tool hash — calculated from the main block only (no handler code):

toolHash = SHA-256( JSON.stringify( {
namespace, version, tool: { 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 ) }) )
) )
Terminal window
flowmcp group verify my-crypto-monitor
Terminal window
# Success
Group "my-crypto-monitor": 4 tools, all hashes valid
# Hash Mismatch
Group "my-crypto-monitor": HASH MISMATCH
- etherscan/contracts.mjs::tool::getContractAbi: expected sha256:abc... got sha256:def...
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)
ConstraintValue
Name pattern^[a-z][a-z0-9-]*$ (lowercase, hyphens allowed)
Max tools per group50
All tools must be resolvableSchema + tool must exist
No duplicate tool referencesWithin a group

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

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

Group-level skills are stored as .md files in .flowmcp/skills/:

.flowmcp/
├── groups.json
├── skills/
│ ├── token-analysis.md
│ └── portfolio-snapshot.md
└── tools/
SectionHeadingRequiredDescription
Title# <title>YesFirst line of the file
Description## DescriptionNo1-3 sentences about the skill
Input## InputNoParameters the user provides
Workflow## WorkflowYesStep-by-step instructions referencing tools
Output## OutputNoFinal artifact description
# Standard Token Analysis
## Description
Generate a comprehensive technical analysis report for any financial instrument.
## Input
- `tokenName` (string, required): Name or ticker symbol of the instrument
## Workflow
### Step 1: Symbol Resolution
Search for `{tokenName}` using `searchSymbol`.
### Step 2: Fetch Price Data
Call `getOhlcv` with interval: 1d, period1: 200 days ago.
### Step 3: Compute Indicators
Compute `getRelativeStrengthIndex`, `getSimpleMovingAverage`, `getMovingAverageConvergenceDivergence`.
### Step 4: Generate Charts
Call `generateCandlestickChart` and `generateLineChart`.
### 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
CommandDescription
flowmcp skill listList all skills across all groups
flowmcp skill search <query>Search skills by title or description
flowmcp skill show <group>/<name>Display full skill content
flowmcp skill add <group> <name> --file <path>Add skill to a group
flowmcp skill remove <group> <name>Remove skill from group
CodeRule
PRM001Skill 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 skill names within a group
PRM008Filename must match skill name