Internet-Draft AACP June 2026
Mackay Expires 8 December 2026 [Page]
Workgroup:
Independent Submission
Internet-Draft:
draft-mackay-aacp-02
Updates:
draft-mackay-aacp-01 (if approved)
Published:
Intended Status:
Informational
Expires:
Author:
A. Mackay
Independent

Agent Action Compression Protocol (AACP) Version 1.4

Abstract

This document defines the Agent Action Compression Protocol (AACP), a typed coordination format for agent-to-agent communication in multi-agent large language model (LLM) systems. AACP transforms natural language coordination instructions into deterministic, machine-parseable packets that can be validated before transmission, logged as structured audit records, and replayed consistently across workflow runs.

AACP addresses a coordination content layer that existing agent protocols do not cover. The Model Context Protocol (MCP) and Agent-to-Agent Protocol (A2A) operate at the tool access and routing layers respectively. Neither specifies what agents say to each other inside coordination messages. AACP fills this gap with a shared, typed vocabulary for agent coordination intent.

For known workflow types, a rule-based encoder produces AACP packets deterministically at zero LLM cost. A four-tier fallback extends this to novel instructions: community registry lookup at zero cost; local cache lookup at zero cost; pattern matching at zero cost; LLM encoding for genuinely novel instructions, logged to registry for permanent reuse. An amortisation benchmark across 240 encoding operations demonstrated 91.6 percent cost saving versus per-call LLM encoding, with 6 LLM calls required across the full run.

As a secondary benefit, AACP reduces coordination token usage by approximately 23 percent versus equivalent natural language instructions. Framework integration benchmarks demonstrate 18 percent total workflow cost reduction in LangChain (59 coordination hops) and 30 percent in CrewAI (59 coordination hops), with all coordination LLM calls eliminated in both cases.

This document updates draft-mackay-aacp-01 with: an expanded encoder library (8 workflow encoders across 6 domains); a community rule library (241 validated rules at registry.aacp.dev); framework integration results for LangChain and CrewAI; amortisation benchmark data; and a five-workflow multi-model department day validation.

Status of This Memo

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 8 December 2026.

Table of Contents

1. Introduction

Multi-agent LLM systems coordinate by exchanging instructions between autonomous agents. In current implementations, these coordination messages are typically written in natural language -- verbose, ambiguous, and non-deterministic. The same intent expressed differently across runs makes coordination messages difficult to validate, audit, or replay reliably.

AACP replaces natural language coordination with a compact, typed, pipe-delimited packet format that is deterministic, schema-validated, and machine-parseable. The primary value is not token reduction -- it is auditability, determinism, and the elimination of LLM calls from the coordination layer for known workflow types.

Consider a payroll workflow where an orchestrator instructs an HR agent to retrieve salary records. A typical English instruction:

"Please retrieve the employee salary records for the period
ending March 2026. I need all active employees, their
departments, cost centres, base salary, any changes made this
month, and pension contribution rates. Return as JSON array."

This instruction varies in wording across runs, provides no machine-readable structure, and cannot be reliably audited without natural language processing. The equivalent AACP packet:

FETCH|HR|return:HR-Agent|p:1|aacp:1.1|res:emp_salary|
period:2026-03|filter:status=active|fmt:json

is produced identically on every run by the rule-based encoder, validates against the v1.1 schema before transmission, and constitutes a complete machine-readable audit record. The rule-based encoder produces this packet at zero LLM cost.

This document specifies AACP version 1.4 and updates draft-mackay-aacp-01 with expanded encoder coverage, community rule library, framework integration results, amortisation benchmark, and department day validation.

2. Terminology

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.

Agent:
An autonomous software process that receives coordination packets, performs tasks using one or more LLM API calls, and returns structured results.
Coordination message:
An instruction sent from one agent to another describing what action to take, on what resource, with what parameters, and where to return the result. Distinct from task content.
AACP packet:
A pipe-delimited string conforming to the format defined in Section 4, used as a coordination message.
Task tokens:
Tokens consumed by an agent performing its actual work. AACP does not reduce task tokens.
Coordination tokens:
Tokens consumed by the coordination message itself.
Rule-based encoder:
A deterministic encoder producing AACP packets from structured input without an LLM call. Zero API cost per encoding.
Community registry:
A curated set of pre-validated AACP rules for common business workflow patterns, available for zero-cost lookup before LLM fallback is attempted.
Registry:
A local store of previously LLM-encoded instructions and their resulting AACP packets, enabling cache lookup on subsequent identical or similar instructions.

3. Motivation and Problem Statement

Natural language coordination in multi-agent systems creates three distinct operational problems: verbosity, non-determinism, and unstructured audit trails.

Verbosity has been identified independently by multiple research groups. Mou et al. (2025) [ECOLANG] achieved greater than 20 percent token reduction through evolved compression language for social simulation. AACP addresses the same problem with a typed, portable packet schema targeting business workflow coordination.

Non-determinism is the more operationally significant problem. When coordination messages are expressed in free-form natural language, the same intent produces different messages across runs. This makes it impossible to validate messages before transmission, correlate messages across runs for compliance purposes, or replay workflows reliably.

The specific technical gap AACP fills: neither MCP [MCP] nor A2A [A2A] address the semantic content of coordination messages. Both protocols operate at the transport and routing layers. AACP operates at the content layer, defining what agents say to each other rather than how messages are delivered.

Framework integration benchmarks confirm the problem is real and widespread. In standard LangChain and CrewAI implementations, every agent-to-agent coordination hop involves an LLM call to generate the instruction. In a five-workflow department day scenario with 59 coordination hops, this results in 59 LLM calls solely for coordination -- before any task work begins. AACP eliminates all 59 coordination calls for known workflows.

4. Packet Format

An AACP packet is a sequence of pipe-delimited fields. The pipe character (U+007C, "|") is the field separator.

packet = task "|" dom "|" named-fields

TASK and DOM are positional (fields 0 and 1 respectively). All other fields MUST be named key:value pairs. Empty positional slots MUST NOT appear in v1.1 packets.

4.1. Positional Fields

Field 0 -- TASK:
The action verb. REQUIRED. MUST be one of the values defined in Section 5.1.
Field 1 -- DOM:
The business domain context. REQUIRED. MUST be one of the values defined in Section 5.2.

4.2. Named Fields

After the two positional fields, all fields are named using the format key:value. The following named fields MUST appear in every packet:

return:
The agent identifier that receives the result. REQUIRED.
aacp:
The protocol version. REQUIRED. MUST be "1.1" for packets conforming to this specification.

The following named fields are RECOMMENDED where applicable:

p:
Priority. 1=critical, 2=medium (default), 3=low.
res:
The resource identifier the action applies to.
period:
A time period, expressed as YYYY-MM or similar.
filter:
A filter expression applied to the resource.
fmt:
The requested response format (e.g. json, pdf, xlsx).

4.3. Extended Fields

Additional named fields MAY be appended after core fields. Defined extended keys include: src, src_prev, rules, validate, tmpl, data_ptr, amt, ccy, sup, match, terms, type, party, clause, issue, risk, block, flags, req, highlight, status, to, subj, att, flag_msg, tone, sentiment, actor, chain, prog, ltv, loyalty, urgency.

Unknown extended keys MUST generate advisory warnings in validators, not errors. This permits forward compatibility and organisation-private extensions.

4.4. Packet Examples

Fetch active employee salary records:

FETCH|HR|return:HR-Agent|p:1|aacp:1.1|res:emp_salary|
period:2026-03|filter:status=active|fmt:json

Merge datasets and calculate payroll:

MERGE|HR|return:HR-Agent|p:1|aacp:1.1|rules:payroll_v2|
validate:budget_cc

Flag a legal clause for review:

FLAG|LEGAL|return:LEG-Agent|p:1|aacp:1.1|type:NDA|
party:Acme-Ltd|clause:s7|issue:ip_rights_restriction|
risk:high|block:signature

Score a sales lead using BANT:

CALC|SALES|return:SALES-Agent|p:1|aacp:1.1|res:lead_score|
filter:id=L-001|rules:bant

Resolve a customer complaint with goodwill consideration:

RESOLVE|CS|return:CS-Agent|p:1|aacp:1.1|res:complaint|
filter:id=T-001|sentiment:negative|tone:empathetic|
ltv:8500|ccy:GBP|req:resolve,goodwill_consider

Acknowledge receipt and confirm SLA clock started:

ACK|IT|return:IT-Agent|p:1|aacp:1.1|res:incident_ticket|
status:acknowledged

5. Valid Field Values

5.1. TASK Values

The following TASK values are defined in AACP v1.1: FETCH, PROC, FLAG, RESOLVE, LOG, SEND, BUILD, MERGE, CALC, REPORT, ACK, SYNC.

All 12 TASK values are represented in the community rule library [AACP-RULES] with validated usage examples across 7 business domains.

Implementations MUST warn on unrecognised TASK values. Implementations MUST NOT reject packets with unrecognised TASK values, to permit forward compatibility.

5.2. DOM Values

The following DOM values are defined in AACP v1.1: HR, FIN, SALES, LEGAL, IT, CS, MKT.

Implementors MAY define additional domain values. Unrecognised DOM values SHOULD generate advisory warnings.

5.3. Priority Values

The p: field accepts: 1 (critical), 2 (medium, default), 3 (low).

6. Encoding

6.1. Rule-Based Encoding

For known, repetitive workflow types, a rule-based encoder deterministically produces AACP packets from structured input without an LLM API call. This approach has zero API cost and produces identical output for identical input on every run.

The reference implementation [AACP-SDK] provides eight workflow encoders across six domains, each grounded in a documented real-world platform:

6.2. Community Rule Library

A community rule library [AACP-RULES] of 241 pre-validated AACP coordination rules is available covering all 12 TASK types across all 7 DOM values. The library is MIT-licensed and hosted at registry.aacp.dev as a queryable REST API.

Example query:

GET https://registry.aacp.dev/rules?domain=HR&task=FETCH

{
  "total": 10,
  "rules": [
    {
      "id": "hr-fetch-active-employee-salaries",
      "packet": "FETCH|HR|return:HR-Agent|p:1|aacp:1.1|
                 res:emp_salary|filter:status=active|fmt:json",
      "validated": true
    },
    ...
  ]
}

The RuleRegistry class in the SDK provides programmatic access to the community library:

from aacp import RuleRegistry

registry = RuleRegistry.from_community()
rule = registry.find("fetch active employee salaries", domain="HR")
print(rule.packet)
# FETCH|HR|return:HR-Agent|p:1|aacp:1.1|res:emp_salary|
#   filter:status=active|fmt:json
print(rule.cost)  # 0.0

6.3. LLM-Assisted Encoding

For novel instructions outside known workflow patterns, an LLM-assisted encoder produces AACP packets by submitting the English instruction to a language model with the AACP specification as a system prompt.

6.4. Four-Tier Fallback and Registry

The FallbackEncoder routes encoding requests through four tiers in priority order:

Tier 0 -- Community registry: The instruction is matched against the community rule library. A match returns the pre-validated packet at zero cost.

Tier 1 -- Hash cache lookup: The SHA-256 hash of the normalised instruction is looked up in the local registry. An exact match returns the cached packet at zero cost.

Tier 2 -- Pattern match: The instruction is matched against keyword patterns from the registry and built-in pattern set. A match above threshold returns the cached or rule-based packet at zero cost.

Tier 3 -- LLM fallback: Novel instructions with no match are encoded via LLM and logged to the local registry, enabling Tier 1 routing on all subsequent occurrences.

This architecture ensures each novel instruction pattern incurs at most one LLM encoding call. An amortisation benchmark across 240 encoding operations (6 novel instructions, each repeated 30 times, plus rule-based comparisons) demonstrated 91.6 percent cost saving versus per-call LLM encoding, with 6 LLM calls required across the full benchmark run.

7. Validation

AACP validators MUST check:

AACP validators SHOULD warn on:

Validation errors MUST be reported before transmission. Warnings SHOULD be logged but MUST NOT prevent transmission.

8. Tokenisation Benchmark

8.1. Methodology

Coordination token counts were measured using live API usage_metadata. Each message was submitted as a bare user message with no system prompt and max_tokens=1 to isolate coordination token counts. Benchmark date: May 2026.

8.2. Tokenisation Results

Four-hop payroll workflow. Tokens from live API.

+---------------------+-------+------+--------+--------+
| Hop                 |English| AACP |Claude% |GPT-4o% |
+---------------------+-------+------+--------+--------+
| fetch employees     |    56 |   52 |  -7.1% | -12.7% |
| fetch budgets       |    57 |   47 | -17.5% | -16.0% |
| merge and calculate |    65 |   43 | -33.8% | -31.6% |
| generate report     |    62 |   43 | -30.6% | -33.3% |
+---------------------+-------+------+--------+--------+
| TOTAL               |   240 |  185 | -22.9% | -23.7% |
+---------------------+-------+------+--------+--------+

8.3. Amortisation Benchmark

A three-scenario amortisation benchmark validated the "one LLM call per novel pattern" property across 240 encoding operations. June 2026.

+---------------------------+--------+----------+----------+
| Scenario                  | Calls  | LLM Calls| Saving   |
+---------------------------+--------+----------+----------+
| A: 1 instruction x 30     |     30 |         1|    96.7% |
| B: 5 instructions x 30    |    150 |         4|    91.0% |
| C: Rule-based vs novel    |     60 |         1|    94.4% |
+---------------------------+--------+----------+----------+
| TOTAL                     |    240 |         6|    91.6% |
+---------------------------+--------+----------+----------+

In Scenario B, the first instruction had been encoded in Scenario A and was served from cache at zero cost across all 30 repetitions. Four new instructions each required one LLM call and zero cost on all subsequent calls.

8.4. Department Day Multi-Model Validation

A five-workflow department day lab [AACP-LAB] validated AACP packet interpretation across four LLM models. The lab runs payroll, month-end close, sales qualification, customer service resolution, and JML onboarding workflows using real CSV data. June 2026.

+-------------------+---------+-----------+---------+---------+
| Model             | Cost    | Tokens in | Latency | Success |
+-------------------+---------+-----------+---------+---------+
| gpt-4.1-mini      | $0.0190 |    40,585 |   160s  |  5/5    |
| gpt-4.1           | $0.0984 |    41,005 |   124s  |  5/5    |
| claude-sonnet-4-5 | $0.2237 |    53,127 |   423s  |  5/5    |
| gpt-4o            | $0.2408 |    40,459 |   101s  |  5/5    |
+-------------------+---------+-----------+---------+---------+

All four models correctly interpreted AACP v1.1 packets across all five workflows and 76 coordination hops per model run without model-specific prompt tuning. Every packet validated against the v1.1 schema. The deterministic audit agent wrote structured records at zero LLM cost on every run.

8.5. Framework Integration Benchmarks

AACP was integrated into two leading agent frameworks and benchmarked against standard natural language coordination on an equivalent five-workflow, 59-hop department day scenario. June 2026.

+------------+------+----------------+----------+--------------+
| Framework  | Hops | Coord. Calls   | Saving   | Determinism  |
+------------+------+----------------+----------+--------------+
| LangChain  |   59 | 59 -> 0        |     18%  | YES          |
| CrewAI     |   59 | 59 -> 0        |     30%  | YES          |
+------------+------+----------------+----------+--------------+

In both cases, all 59 coordination LLM calls were eliminated. The higher saving in CrewAI reflects its more verbose default natural language task descriptions. In both frameworks, coordination messages became deterministic, schema-validated, and machine-readable audit records. Reference implementations are available as [AACP-LANGCHAIN] and [AACP-CREWAI].

9. Relationship to Existing Protocols

MCP [MCP] defines how agents access external tools and resources. AACP operates inside MCP message payloads, compressing the coordination instructions that describe what to retrieve or action. The two protocols are complementary.

A2A [A2A] defines agent discovery and task routing between agents. AACP compresses the content of messages that A2A routes. The two protocols are complementary.

AACP fills a distinct layer between routing and task execution: deterministic, typed encoding of coordination message content. No existing published protocol addresses this specific layer.

10. Implementation

A reference implementation is available as a Python package [AACP-SDK]:

pip install aacp            # Python SDK v1.4.0
npm install aacp-ts         # TypeScript SDK v1.4.0
pip install aacp-langchain  # LangChain integration v0.1.0
pip install aacp-crewai     # CrewAI integration v0.1.0

Source repositories, the working lab, community rule library, VS Code extension, and registry API are listed in the Informative References section.

11. Extensibility

Unknown named fields generate advisory warnings, not errors. Implementors MAY define organisation-private fields using a namespacing convention (e.g. org_fieldname:) to avoid collision with future AACP fields.

Implementors MAY define domain values beyond the seven defined in Section 5.2. The community registry at registry.aacp.dev provides a shared rule library for common workflow patterns. A commercial registry tier supporting private organisation rules is planned.

12. Version Policy

The aacp: field MUST be included in every packet and MUST specify the protocol version. Breaking changes increment the major version. Additive changes increment the minor version. Implementations SHOULD warn on version mismatch but MUST NOT reject packets on version mismatch alone.

13. Security Considerations

Packet injection: AACP packets MUST be treated as untrusted input. Validators MUST be applied before processing. Implementations MUST NOT execute actions based on unvalidated packets.

Prompt injection: malicious content in AACP field values could be interpreted as instructions by a receiving LLM agent. Implementations SHOULD sanitise field values before including them in LLM prompts.

Replay attacks: AACP v1.1 does not include sequence numbers or timestamps. Security-sensitive environments SHOULD add replay protection at the transport layer.

Sensitive data: PII, financial records, and credentials MUST NOT be embedded in AACP field values. Use authenticated data access layers referenced by pointer instead.

Registry security: the local registry SHOULD be access-controlled and SHOULD NOT be committed to version control when it contains sensitive workflow instructions.

14. IANA Considerations

This document has no IANA actions.

15. References

15.1. Normative References

[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, , <https://www.rfc-editor.org/info/rfc8174>.

15.2. Informative References

[ECOLANG]
Mou, Y., "EcoLANG: Towards Efficient Agent Communication via Evolved Language", arXiv:2505.06904, , <https://arxiv.org/abs/2505.06904>.
[MCP]
Anthropic, "Model Context Protocol", , <https://modelcontextprotocol.io/>.
[A2A]
Google, "Agent-to-Agent Protocol", , <https://google.github.io/A2A/>.
[AACP-SDK]
Mackay, A., "AACP Python SDK v1.4.0", pip install aacp. https://pypi.org/project/aacp/ , , <https://github.com/MackayAndrew/aacp>.
[AACP-TS]
Mackay, A., "AACP TypeScript SDK v1.4.0", npm install aacp-ts. https://www.npmjs.com/package/aacp-ts , , <https://github.com/MackayAndrew/aacp-ts>.
[AACP-LANGCHAIN]
Mackay, A., "AACP LangChain Integration v0.1.0", pip install aacp-langchain. 18% total cost reduction, 59 coordination calls eliminated. , , <https://github.com/MackayAndrew/aacp-langchain>.
[AACP-CREWAI]
Mackay, A., "AACP CrewAI Integration v0.1.0", pip install aacp-crewai. 30% total cost reduction, 59 coordination calls eliminated. , , <https://github.com/MackayAndrew/aacp-crewai>.
[AACP-LAB]
Mackay, A., "AACP Multi-Agent Department Day Lab", Five-workflow department day. Four-model comparison. All 76 coordination hops validated per model run. , , <https://github.com/MackayAndrew/aacp-lab>.
[AACP-RULES]
Mackay, A., "AACP Community Rule Library v1.1", 241 pre-validated rules across 7 domains. MIT licensed. API at https://registry.aacp.dev , , <https://github.com/MackayAndrew/aacp-community-rules>.
[AACP-DISPATCH]
Mackay, A., "Dispatch AACP VS Code Extension", Syntax highlighting, validation, hover decode, autocomplete and token count for AACP packets. Web builder at https://dispatch.aacp.dev , , <https://marketplace.visualstudio.com/items?itemName=dispatch-aacp.dispatch-aacp>.

Author's Address

Andrew Mackay
Independent