Zum Inhalt springen

Agents-Uebersicht

Agents sind zweckgerichtete Kompositionen, die Tools mehrerer Provider in einer einzigen, testbaren Einheit buendeln. Waehrend einzelne Schemas eine einzelne API wrappen, kombinieren Agents die richtigen Tools fuer eine bestimmte Aufgabe — zum Beispiel koennte ein Crypto-Research-Agent gleichzeitig von CoinGecko, Etherscan und DeFi Llama abrufen.

Ein Agent-Manifest (agent.mjs) deklariert alles, was der Agent braucht: welche Tools verwendet werden, welches Modell angesteuert wird, wie sich der Agent verhalten soll und wie seine Funktion verifiziert wird.

Jeder Agent wird durch eine agent.mjs-Datei mit export const agent definiert:

export const agent = {
name: 'crypto-research',
version: 'flowmcp/3.0.0',
description: 'Cross-provider crypto analysis agent',
model: 'anthropic/claude-sonnet-4-5-20250929',
systemPrompt: 'You are a crypto research agent...',
tools: {
'coingecko-com/tool/simplePrice': null,
'coingecko-com/tool/coinMarkets': null,
'etherscan-io/tool/getContractAbi': null,
'defillama-com/tool/getProtocolTvl': null
},
prompts: {
'research-guide': { file: './prompts/research-guide.mjs' }
},
skills: {
'token-analysis': { file: './skills/token-analysis.mjs' }
},
resources: {},
tests: [
{
_description: 'Token price lookup',
input: 'What is the current price of Bitcoin?',
expectedTools: ['coingecko-com/tool/simplePrice'],
expectedContent: ['bitcoin', 'price', 'USD']
},
{
_description: 'Contract analysis',
input: 'Analyze the USDC contract on Ethereum',
expectedTools: ['etherscan-io/tool/getContractAbi'],
expectedContent: ['USDC', 'contract']
},
{
_description: 'DeFi protocol TVL',
input: 'What is the TVL of Aave?',
expectedTools: ['defillama-com/tool/getProtocolTvl'],
expectedContent: ['Aave', 'TVL']
}
],
sharedLists: ['evmChains']
}

Tools, Prompts und Resources verwenden eine einheitliche Konvention: Keys mit / sind externe Referenzen (Wert null), Keys ohne / sind Inline-Definitionen.

Key-MusterWertBedeutung
Enthaelt /nullExterne Referenz aus einem Provider-Schema
Ohne /objectInline-Definition, die dem Agent gehoert
tools: {
'coingecko-com/tool/simplePrice': null, // extern
'customEndpoint': { method: 'GET', ... } // inline
}

Skills sind die Ausnahme — sie koennen keine Slash-Keys haben, da sie modellspezifisch sind und nicht ueber verschiedene LLMs hinweg geteilt werden koennen.

Agents trennen Zustaendigkeiten in drei verschiedene Ebenen, die bestimmen, wie der Agent denkt, versteht und handelt.

EbeneFeldZweckBeispiel
PersonasystemPromptWer der Agent IST”Du bist ein Crypto-Research-Analyst…”
ErklaerungenpromptsWie Tools funktionieren”CoinGecko gibt Preise zurueck in…”
AnweisungenskillsSchritt-fuer-Schritt-Workflows”Schritt 1: Token suchen. Schritt 2: OHLCV abrufen…”

Tools werden als Objekt-Keys mit dem vollstaendigen ID-Format deklariert: namespace/type/name. Externe Tools haben null als Wert. So kannst du genau die Tools auswaehlen, die ein Agent von jedem Provider braucht.

coingecko-com/tool/simplePrice # Key im tools-Objekt, Wert: null
coingecko-com/tool/coinMarkets # Weiteres Tool vom selben Provider
etherscan-io/tool/getContractAbi # Tool von einem anderen Provider
defillama-com/tool/getProtocolTvl # Noch ein anderer Provider

Nur die Tools auswaehlen, die dem Zweck des Agents dienen. Ein Crypto-Research-Agent braucht nicht jeden CoinGecko-Endpunkt — simplePrice und coinMarkets koennten ausreichen.

Tests validieren Agent-Verhalten auf drei Ebenen:

EbeneFeldWas wird geprueftDeterministisch?
Tool-NutzungexpectedToolsHat der Agent die richtigen Tools aufgerufen?Ja
InhaltexpectedContentEnthaelt die Ausgabe erwartete Stichwoerter?Teilweise
QualitaetManuelle PruefungIst die Ausgabe koherent und nuetzlich?Nein

Jeder Testfall definiert einen Eingabe-Prompt, die Tools, die der Agent nutzen soll, und Stichwoerter, die die Antwort enthalten soll:

{
_description: 'Token price lookup',
input: 'What is the current price of Bitcoin?',
expectedTools: ['coingecko-com/tool/simplePrice'],
expectedContent: ['bitcoin', 'price', 'USD']
}
  • expectedTools ist deterministisch — der Agent muss genau diese Tools fuer die gegebene Eingabe aufrufen.
  • expectedContent ist eine Teilpruefung — die Antwort sollte diese Strings enthalten, zusaetzlicher Inhalt ist ok.
  • Qualitaetspruefung ist manuell — die Ausgabe lesen und pruefen, ob sie als koherente Antwort Sinn ergibt.

Jeder Agent lebt in seinem eigenen Verzeichnis innerhalb des agents/-Ordners des Katalogs:

agents/crypto-research/
├── agent.mjs # Manifest (export const agent)
├── prompts/
│ └── research-guide.mjs
├── skills/
│ └── token-analysis.mjs
└── resources/ # Optionale eigene Datenbanken

Die agent.mjs-Datei ist der Einstiegspunkt. Prompts und Skills werden per relativem Pfad vom Manifest referenziert und folgen dem gleichen Format wie Schema-Level-Skills und Prompt-Architektur.