Unser früherer ArtikelWarum KI-Agenten JSON-Schema, Funktionsaufruf und MCP verwendenerklärtwarum diese drei Schichten existieren. Dieses Stück beobachtet dieBytes, die sich tatsächlich bewegenin einem echten Anruf – fast alle davon JSON.
Benutzer sehen natürliche Sprache. Agenten erledigen ihre Arbeit, indem sie Absichten als JSON-Parameter kodieren, Tool-Ergebnisse als JSON-Nachrichten kodieren und prozessübergreifende Protokolle als JSON-RPC kodieren. JSON ist keine Dekoration; Es ist die einzige gegenseitig validierbare Sprache zwischen dem Modell, dem Host und den MCP-Servern.
Drei Namen, eine JSON-Nutzlast
Dokumente vermischen drei Begriffe. Sie sitzen auf unterschiedlichen Schichten, aber die Form der Nutzlast ist nahezu gleich:
| Name | Zwischen | JSONs Job |
|---|---|---|
| Funktionsaufruf | Modell API ↔ Host | Werkzeugdefinition + tool_calls.arguments |
| Werkzeugaufruf | Gleich (generischer Name) | Die gleichen Nachrichten/Tools JSON |
| MCP | Host ↔ Werkzeugprozess | JSON-RPC Methoden + inputSchema |
One sentence: the model side uses JSON to pick a tool and fill parameters; the MCP side uses JSON to discover and execute tools. The host is the translator: MCP tools/list becomes the model tools array; model tool_calls become tools/call.
Warum es JSON sein muss
Ein „Agent“ muss drei Parteien gleichzeitig zufriedenstellen:
- Das Modell: Trainingsdaten sind voll von JSON; Das Ausgeben eines gültigen Objekts ist weitaus einfacher als das Ausgeben von Protobuf-Bytes
- Das Programm: ausgereifte Analyse, Schemavalidierung, Diff und JSONPath-Tools
- Das Protokoll: OpenAPI, JSON-RPC und MCP inputSchema teilen bereits eine Typbeschreibung
Einfache Sprache kann nicht schnell versagen: Klammern, Anführungszeichen und gemischte Sprachen machen Regex-Parser kaputt. YAML ist einrückungsfragil. Binäre Protokolle sind sowohl für Menschen als auch für LLMs feindlich. JSON wird zum standardmäßigen Wire-Format, das überprüfbar, validierbar und versionierbar ist – weshalb sich alle Tools dieser Website um JSON drehen: Sie debuggen diesen Wire.
Hop 1: Schema in der Tooldefinition
The flow starts by telling the model which tools exist. Whether you use OpenAI-style tools or MCP tools/list, the core is a JSON Schema (or a subset):
{
"name": "get_weather",
"description": "Look up current weather for a city, read-only",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "City name, e.g. Shanghai" },
"unit": { "type": "string", "enum": ["celsius", "fahrenheit"] }
},
"required": ["city"]
}
}
In MCP the same constraint lives in inputSchema. Schema feeds two paths: the validator rejects illegal parameters; model context uses description to decide when to call. The more the field text reads like a product spec, the fewer mistaken calls.
Hop 2: Funktionsaufruf / Tool-Aufruf
Nachdem der Host die Werkzeugliste mit Nachrichten gesendet hat, wird das Modellführt keinen Code aus. Es wird ein strukturierter Aufruf zurückgegeben. Typische Form (Feldnamen variieren je nach Anbieter):
{
"role": "assistant",
"tool_calls": [
{
"id": "call_01",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Shanghai\",\"unit\":\"celsius\"}"
}
}
]
}
Note that arguments is often a stringified JSON object: JSON.parse first, validate against Schema, then execute. Results flow back as a tool-role message:
{
"role": "tool",
"tool_call_id": "call_01",
"content": "{\"city\":\"Shanghai\",\"temp_c\":31,\"condition\":\"sunny\"}"
}
This hop is how the model reaches out. With parallel tools, the array holds multiple tool_calls; the host may run them concurrently and match results by id.
Hop 3: MCP JSON-RPC
Befindet sich das Tool nicht im Host-Prozess, sondern auf einem MCP-Server (Dateisystem, GitHub, interne Aufträge), sprechen Host und Server JSON-RPC 2.0. Eine schreibgeschützte Abfrage besteht ungefähr aus drei Schritten:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"host","version":"1.0"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_weather","arguments":{"city":"Shanghai"}}}
A successful Server response is JSON too: content often has type: "text" whose text is another JSON string. That is JSON wrapping JSON — outer envelope vs inner business payload. When debugging MCP, split those layers, then Schema-validate the inner one.
Der Transport kann stdio oder Streamable HTTP sein;Die Nutzlast besteht immer noch aus JSON-Zeilen oder einem JSON-Körper. Informationen zum Transport im Jahr 2026 und dazu, ob sich der Servercode ändern muss, finden Sie imMCP 2026 Migrationsleitfaden.
End-to-End-Verfolgung eines Anrufs
Der Nutzer fragt: „Wie warm ist es heute in Shanghai?“ Ende bis Ende:
- Host → MCP Server:
tools/listreturns tools withinputSchema(JSON) - Host → model API: mapped to
tools[].parameters(still JSON Schema) - Model → Host:
tool_callswitharguments{"city":"Shanghai"} - Host validiert:gegen Schema; Fehlende Felder oder falsche Typen verweigern die Ausführung und geben den Fehler JSON zurück an das Modell
- Host → MCP:
tools/callwithparams.argumentsas an object (not a string) - MCP → Host:Wetterergebnis JSON
- Host → model:
role: toolcontent string - Modell → Benutzer:natürliche Sprache; Wenn ein Downstream-System nur Struktur benötigt, schränken Sie den endgültigen JSON mit einem Ausgabeschema ein
User natural language
│
▼
Host orchestration ──JSON Schema──► LLM Tool Calling
│ │
│ ▼
│ arguments JSON
│ │
▼ ▼
MCP JSON-RPC ◄──────────── validate, then execute
│
▼
Result JSON ──► tool message ──► model final reply
Ein kleines Skript kann MCP überspringen und lokale Funktionen im Host aufrufen. Unternehmensagenten kombinieren fast immer Tool Calling + MCP. Informationen zu Ökosystem-Picks finden Sie unter2026 MCP Server-Rangliste.
Wie Validierungsfehler zurückfließen
JSON kann als Typsystem des Agent fungieren, da auch Fehler strukturiert werden können. Verwenden Sie mindestens zwei Tore:
| Tor | Was Sie validieren | Wie das Scheitern zurückfließt |
|---|---|---|
| Vor der Ausführung | Modell-Argumente | Nennen Sie nicht das echte Werkzeug; Schreiben Sie Schemafehler als Tool-Ergebnis oder Systemhinweis, damit das Modell neu gefüllt wird |
| Vor dem Zurückschreiben | MCP / Funktionsrückgabe | Fehler abschneiden, redigieren oder markieren; Lege keine rohen Stapel in die nächste Runde |
Behalten Sie in der Entwicklung Schema plus zwei oder drei gültige/ungültige Nutzlasten in Git und validieren Sie sie lokal in der JSON Toolbox – die gleiche Idee wie REST-Vertragstests, außer dass der Verbraucher ein Modell ist.
FAQ
Sind Tool Calling und Function Calling dasselbe?
Für Entwickler handelt es sich fast um den gleichen Datenfluss: Der Host sendet das Tool-Schema an das Modell, das Modell gibt einen Aufruf mit JSON-Argumenten zurück, der Host führt die JSON-Ergebnisse aus und schreibt sie zurück. „Function Calling“ war der frühe Name von OpenAI; Tool Calling / Tools API ist der spätere generische Name.
Warum sind MCP-Nachrichten auch JSON?
MCP ist JSON-RPC 2.0: initialize, tools/list und tools/call Anfragen und Antworten sind JSON-Objekte. Das inputSchema jedes Tools ist ein JSON-Schema, sodass ein Host MCP-Tools eins zu eins dem API-Tools-Array des Modells zuordnen kann.
Sind Modellargumente eine Zeichenfolge oder ein Objekt?
Die meisten APIs im Stil von Chat-Vervollständigungen fügen Argumente in einen JSON-String ein; Der Host muss JSON.parse und dann anhand des Schemas validieren. Einige neuere APIs geben ein Objekt zurück. Validieren Sie in jedem Fall vor der Ausführung mit demselben Schema.
Warum nicht YAML oder Protobuf statt JSON?
Tool-Implementierungen können intern jedes Format verwenden, aber Modellkontext und herstellerübergreifende Protokolle behandeln JSON als De-facto-Standard. YAML ist indent-fragil; Protobuf ist für Modelle unfreundlich. Typisches Muster: JSON an der Grenze, innen konvertieren.
Welche Ebene soll das Schema validieren?
Mindestens zwei Tore: nach tool_calls und vor der Ausführung des echten Tools; und nach der Rückkehr des MCP-Servers, bevor zurück in das Modell geschrieben wird. Die ersten blockieren halluzinierte Parameter; Der zweite blockiert in der nächsten Runde schmutzige Daten.
Wie validiere ich dieses JSON lokal?
Speichern Sie inputSchema, Beispiel-Argumente und Beispiel-Tool-Ergebnisse als JSON-Dateien. Verwenden Sie die JSON Toolbox im Browser, um das Schema mit den Daten zu vergleichen. Es wird nichts hochgeladen.
Zusammenfassung
KI-Agenten können nicht ohne JSON leben, weilJeder Hop muss maschinenlesbar sein: Schema beschreibt Tools, Tool Calling überträgt den Aufruf, MCP versendet ihn aus dem Prozess als JSON-RPC. Natürliche Sprache erscheint nur an den Enden, die dem Benutzer zugewandt sind; Die Mitte besteht aus validierbaren Objekten.
Start with one real tool: write the Schema → print and parse the model's arguments string → if the tool lives on an MCP Server, capture one tools/call. When those three JSON documents line up, the Agent is actually working. For the evolution story see der technische Zeitplan. Validate Schema samples locally in JSON Toolbox before you ship.