| Internet-Draft | Structured Data Schema Interaction | June 2026 |
| Zhou & Peng | Expires 24 December 2026 | [Page] |
This document defines a structured data schema interaction protocol for multi-agent collaboration. As AI agents increasingly interoperate across heterogeneous platforms, natural-language-based communication suffers from semantic drift, high inference overhead, and ambiguous data flow. This protocol introduces a standardized key-value schema with semantic annotations, enabling deterministic, efficient, and interoperable agent-to-agent communication. A lightweight schema negotiation mechanism is provided for initial alignment at the beginning of communication, while an optional key-value update mechanism allows agents to reflect evolving requirements without breaking existing structured data schema interaction protocol.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 24 December 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Recent advances in large language models (LLMs) enable AI agents to plan and execute multi-step workflows for complex tasks. Through agent communication protocols, AI agents can call third-party tools and delegate tasks to other AI agents. When an AI agent acts on behalf of a human user, these interoperations require structured, deterministic, and efficient information exchange.¶
Today's agent ecosystems are characterized by rich, heterogeneous interaction information. Agents communicate through natural language text, structured data, and platform-specific documents. While natural language is expressive and flexible, it introduces three critical problems in multi-agent collaboration:¶
This document introduces a structured data schema protocol, providing explicit semantic definitions with fixed data keys. The benefits of this approach are:¶
This protocol is designed to complement existing agent protocols (e.g., A2A [A2A], MCP [MCP]) by defining the data-mode contract. It does not mandate transport and authorization mechanisms; those may be provided by underlying protocols. Existing structured data exchange protocols such as JMAP Sharing [RFC9670] demonstrate that standardized key-value data models with explicit sharing semantics can enable scalable cross-system interoperability, providing a design precedent for agent-to-agent schema negotiation.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The Structured Data Schema Interaction Protocol operates in three phases: Schema Negotiation, Structured Data Schema Exchange, and (optionally) Schema Update. The protocol assumes that transport-level connectivity (e.g., HTTP, JSON-RPC, or protocol-specific channels) has already been established by underlying agent communication frameworks.¶
The protocol adopts a client-server interaction model between two cooperating agents:¶
The interaction is stateless from the protocol perspective; any session state MUST be managed by the application layer or underlying transport protocol.¶
Figure 1 illustrates the complete message flow of a structured key-value interaction.¶
+--------+ +--------+ +----------------+
|End User| | Client | | Server |
| | | Agent | | Agent |
+---+----+ +---+----+ +-------+--------+
| | | |
| (1) Natural | | |
| language | | |
| request | | |
| - - - - - - - >| | |
| | | |
| |----\ | |
| | | (2) Agent | |
| | | discovery | |
| | | + scenario| |
| | | id | |
| |<---/ | |
| | | |
| | (3) Get schema | |
| | for scenario | |
| |------------------->| |
| | | |
| | (3) Schema + | |
| | semantic desc. | |
| |< - - - - - - - - - | |
| | | |
| |----\ | |
| | | (4) LLM-based | |
| | | parsing | |
| | | + mapping | |
| |<---/ | |
| | | |
| | (5) Structured | |
| | payload | |
| |------------------->| |
| | | |
| | (6) Execution | |
| | result | |
| |< - - - - - - - - - | |
| | | |
| | (7) Optional | |
| | schema update | |
| |< - - - - - - - - - | |
| | | |
+---+----+ +---+----+ +-------+--------+
|End User| | Client | | Server |
| | | Agent | | Agent |
+--------+ +--------+ +----------------+
¶
Step (1) User Request: The end user provides a natural language request to the client agent (e.g., "Help me order a large iced latte" or "Retouch this photo with a vintage filter"). This request is unconstrained free-form text that expresses the user's intent but does not yet identify the target service or data structure.¶
Step (2) Agent Discovery and Scenario Identification: The client agent analyzes the user's request using its internal LLM or intent-classification component to determine:¶
This step MAY leverage an agent registry, capability directory, or historical context to disambiguate between multiple candidate server agents. If no suitable server agent is found, the client agent SHOULD report the failure to the end user.¶
Step (3) Schema Negotiation: The client agent requests the server agent's schema template and semantic descriptions for a given interaction scenario (e.g., flight booking, photo editing). The server agent returns a JSON object containing the schema keys, value types, and semantic annotations.¶
Step (4) Structured Exchange: The client agent transmits the populated key-value payload to the server agent. All REQUIRED keys MUST be present; OPTIONAL keys MAY be omitted if not applicable.¶
Step (5) Execution Result: The server agent validates the payload, executes the requested capability, and returns a result. The result itself SHOULD be structured according to a pre-negotiated response schema when applicable.¶
Step (6) Optional Schema Update: If the server agent observes recurring patterns in the "other" key or receives explicit capability extension requests, it MAY return a schema update suggestion containing new keys or refined semantic descriptions. This step is OPTIONAL and serves as a lightweight feedback loop for long-term protocol refinement.¶
Structured data formats such as JSContact [RFC9610] demonstrate that explicitly typed keys with semantic annotations enable reliable machine parsing. This protocol applies the same principle to agent-to-agent communication: every key in the schema template carries a declared type and a semantic description that constrains the client agent's generation space.¶
This section defines the syntax and semantics of the structured key-value interaction format.¶
A schema template is a JSON object that declares the expected structure of an interaction payload. It MUST contain the following top-level members:¶
Each key definition object MUST contain:¶
Figure 2 shows an example schema template for a flight booking purchase scenario.¶
{
"schema_id": "flight_booking_v1",
"scenario": "flight_booking",
"keys": [
{
"key_name": "origin",
"key_type": "string",
"required": true,
"default_value": null,
"semantic_description": "Departure city or airport code. Acceptable values: IATA airport codes (e.g., PEK, SHA, JFK) or city names in English or local language. Example mapping: 'from Beijing' -> 'PEK'."
},
{
"key_name": "destination",
"key_type": "string",
"required": true,
"default_value": null,
"semantic_description": "Arrival city or airport code. Acceptable values: IATA airport codes or city names. Example mapping: 'to Shanghai' -> 'SHA'."
},
{
"key_name": "departure_date",
"key_type": "string",
"required": true,
"default_value": null,
"semantic_description": "Date of departure in ISO 8601 format (YYYY-MM-DD). Example mapping: 'next Monday' -> '2026-05-04'."
},
{
"key_name": "cabin_class",
"key_type": "string",
"required": false,
"default_value": "economy",
"semantic_description": "Cabin class preference. Acceptable values: economy, premium_economy, business, first. Example mapping: 'business class' -> 'business'."
},
{
"key_name": "passenger_count",
"key_type": "integer",
"required": false,
"default_value": 1,
"semantic_description": "Number of passengers. Range: 1-9. Example mapping: 'two people' -> 2."
},
{
"key_name": "other",
"key_type": "string",
"required": false,
"default_value": null,
"semantic_description": "Escape valve for unstructured semantic fragments that cannot be mapped to existing keys. Example mapping: 'window seat please' -> 'window seat'."
}
]
}
Semantic annotations provide the contextual anchor that enables client agent LLMs to perform accurate intent-to-key mapping. Each key definition in the schema template MUST be augmented with a "semantic_description" field, as required in Section 4.1.¶
The semantic description serves as a prompt-level anchor for the client agent's LLM, constraining the generation space and reducing hallucinated key mappings. Figure 3 extends the flight booking example with a focused semantic annotation.¶
{
"key_name": "cabin_class",
"key_type": "string",
"required": false,
"default_value": "economy",
"semantic_description": "Cabin class preference. Acceptable values: economy, premium_economy, business, first. Example mapping: 'business class' -> 'business'."
}
Server agents SHOULD maintain semantic descriptions in the same language as the expected end-user queries, or provide multilingual annotations when serving cross-lingual client agents.¶
The key named "other" is reserved within every schema template as an escape valve for unstructured semantic fragments that cannot be mapped to existing keys. Its usage is subject to the following rules:¶
The presence of meaningful content in the "other" key signals a potential schema coverage gap. Server agents MAY use this signal as input to the OPTIONAL schema update mechanism described in Section 6.2.¶
This section illustrates the application of the structured key-value interaction protocol.¶
Scenario: An end user asks a personal AI assistant (client agent) to book a flight through an airline service agent (server agent).¶
User utterance: "Book me a flight from Beijing to Shanghai next Monday, business class, and I prefer a window seat."¶
Schema negotiation: The client agent requests the flight booking schema from the server agent. The server agent returns the schema template shown in Figure 2, augmented with semantic annotations.¶
Intent parsing and mapping:¶
Structured payload:¶
{
"schema_id": "flight_booking_v1",
"payload": {
"origin": "PEK",
"destination": "SHA",
"departure_date": "2026-05-04",
"cabin_class": "business",
"passenger_count": 1,
"other": "window seat"
}
}
Execution: The server agent validates the payload, queries the flight inventory, and returns a booking confirmation with flight number, departure time, and seat assignment.¶
Optional schema update: If the server agent observes frequent "other" entries mentioning seat preferences, it MAY return a schema update suggestion adding a "seat_preference" key with acceptable values "window", "aisle", or "none".¶
Scenario: An end user asks a personal AI assistant to retouch a photo through a cloud-based image editing agent.¶
User utterance: "Please retouch this photo: smooth the skin, whiten teeth, make the background blurry, and add a vintage filter. Also, I want my eyes to look bigger."¶
Schema negotiation: The client agent discovers the photo editing schema from the server agent. Example keys include: skin_smoothing (integer 0-10), teeth_whitening (boolean), background_blur (boolean), filter_style (string), eye_enlargement (boolean).¶
Intent parsing and mapping:¶
Structured payload:¶
{
"schema_id": "photo_retouch_v2",
"payload": {
"skin_smoothing": 7,
"teeth_whitening": true,
"background_blur": true,
"filter_style": "vintage",
"eye_enlargement": false,
"other": "increase eye size proportionally"
}
}
Note: The client agent mapped "eyes to look bigger" to the "other" key because the current schema does not define a granular eye_size adjustment key (only a boolean eye_enlargement). The server agent MAY later propose a schema update introducing "eye_size_scale" (float, 1.0-1.5) based on aggregated "other" patterns.¶
This section describes OPTIONAL mechanisms that enhance the core structured interaction protocol. Implementations MAY support none, some, or all of these capabilities. They are designed to be transparent to agents that do not implement them.¶
The protocol assumes that client agents employ an internal LLM to perform natural language understanding (NLU) and map user intent to schema keys. The quality of this mapping directly affects the correctness of the structured payload.¶
Recommended practices for LLM-based semantic parsing include:¶
Server agents are NOT REQUIRED to perform NLU; their role is to validate and execute structured payloads. This separation of concerns reduces server-side inference costs and ensures deterministic execution.¶
The schema self-evolution mechanism provides a dynamic, backward-compatible path for server agents to refine their published schemas based on operational feedback and differential semantics extracted from the "other" key. It is OPTIONAL and does not alter the core structured exchange semantics.¶
The mechanism consists of three coordinated components: (1) a trigger mechanism based on a differential semantic pool, (2) a schema self-evolution algorithm that generates dynamic patches, and (3) a long-term evaluation framework that ensures convergence and prevents schema bloat.¶
To avoid erroneous evolution caused by sporadic anomalies and to ensure that genuine common or personalized needs are not missed, server agents MAY maintain a Differential Semantic Pool (DSP).¶
The DSP collects natural-language fragments from the "other" key that could not be mapped to existing schema keys. Its operation follows three stages:¶
Server agents MAY maintain separate DSP instances per scenario or per client-agent cohort, enabling both global schema evolution and personalized schema branching.¶
Once the trigger mechanism identifies a mature semantic cluster, the server agent executes a self-evolution algorithm to synthesize a schema patch from the cluster's natural-language content.¶
To prevent schema bloat and the accumulation of erroneous keys, server agents that implement self-evolution MUST employ a long-term evaluation mechanism that continuously assesses the quality and necessity of every patch key.¶
Evaluation Metrics: For each key introduced through a dynamic patch, the server agent SHOULD track at minimum the following metrics over a configurable observation window (default 30 days):¶
Two-Phase Lifecycle: All new keys introduced via dynamic patches MUST begin in an experimental state and transition through two phases.¶
Structured key-value payloads may contain sensitive personal information (e.g., dietary preferences, biometric retouching parameters, location data). Implementations MUST protect this data in transit and at rest using mechanisms appropriate to their threat model.¶
Schema negotiation and update messages MUST be integrity-protected to prevent man-in-the-middle attacks that could inject malicious keys or semantic descriptions designed to exfiltrate data or trigger unauthorized actions.¶
When the "other" key contains free-form natural language, server agents MUST apply the same input validation and sanitization practices as they would for any natural language input, preventing prompt injection or command injection attacks.¶
The OPTIONAL schema update mechanism MUST require authentication and authorization if it exposes new capabilities or modifies security-relevant keys (e.g., keys related to payment, identity, or access control).¶
This document has no IANA actions.¶
This appendix provides complete, non-normative examples of schema negotiation, structured payload exchange, and optional schema update messages.¶
Client agent request:¶
{
"method": "get_schema_template",
"params": {
"scenario": "flight_booking",
"preferred_language": "en-US"
}
}
Server agent response:¶
{
"schema_id": "flight_booking_v1",
"scenario": "flight_booking",
"keys": [
{"key_name": "origin", "key_type": "string", "required": true, "semantic_description": "Departure city or airport code. Acceptable values: IATA airport codes (e.g., PEK, SHA, JFK) or city names. Example: 'from Beijing' -> 'PEK'."},
{"key_name": "destination", "key_type": "string", "required": true, "semantic_description": "Arrival city or airport code. Example: 'to Shanghai' -> 'SHA'."},
{"key_name": "departure_date", "key_type": "string", "required": true, "semantic_description": "Departure date in ISO 8601 format (YYYY-MM-DD). Example: 'next Monday' -> '2026-05-04'."},
{"key_name": "cabin_class", "key_type": "string", "required": false, "default_value": "economy", "semantic_description": "Cabin class. Acceptable values: economy, premium_economy, business, first. Example: 'business class' -> 'business'."},
{"key_name": "passenger_count", "key_type": "integer", "required": false, "default_value": 1, "semantic_description": "Number of passengers. Range: 1-9. Example: 'two people' -> 2."},
{"key_name": "other", "key_type": "string", "required": false, "semantic_description": "Natural-language descriptions that cannot be mapped to existing keys. Example: 'window seat' -> 'window seat'."}
]
}
Client agent request payload:¶
{
"schema_id": "flight_booking_v1",
"payload": {
"origin": "PEK",
"destination": "SHA",
"departure_date": "2026-05-04",
"cabin_class": "business",
"passenger_count": 1,
"other": "window seat"
}
}
Server agent response:¶
{
"booking_id": "BK-20260430-001",
"status": "confirmed",
"flight_number": "CA1234",
"departure_time": "2026-05-04T09:00:00+08:00",
"arrival_time": "2026-05-04T11:20:00+08:00",
"seat": "12A",
"total_amount": "CNY 2,450.00",
"schema_update_suggestion": {
"new_keys": [
{
"key_name": "seat_preference",
"key_type": "string",
"required": false,
"default_value": "none",
"semantic_description": "Seat preference. Acceptable values: window, aisle, none."
}
]
}
}
{
"schema_id": "photo_retouch_v2",
"scenario": "photo_retouch",
"keys": [
{"key_name": "skin_smoothing", "key_type": "integer", "required": false, "default_value": 0, "semantic_description": "Skin smoothing intensity. Range: 0-10, where 0 means off. Example: 'light skin smoothing' -> 3."},
{"key_name": "teeth_whitening", "key_type": "boolean", "required": false, "default_value": false, "semantic_description": "Whether teeth whitening is enabled. Example: 'make the teeth whiter' -> true."},
{"key_name": "background_blur", "key_type": "boolean", "required": false, "default_value": false, "semantic_description": "Whether background blur is enabled. Example: 'blur the background' -> true."},
{"key_name": "filter_style", "key_type": "string", "required": false, "default_value": "none", "semantic_description": "Filter style. Acceptable values: none, vintage, cinematic, warm, cool. Example: 'vintage style' -> 'vintage'."},
{"key_name": "eye_enlargement", "key_type": "boolean", "required": false, "default_value": false, "semantic_description": "Whether eye enlargement is enabled. Note: this key is a boolean switch; use other for fine-grained adjustment requests."},
{"key_name": "other", "key_type": "string", "required": false, "semantic_description": "Photo-editing requirements that cannot be mapped to existing keys. Example: 'make the eyes a little bigger' -> 'increase eye size proportionally'."}
]
}