JACS: JSON Agent Communication Standard
JACS is an open source provenance layer for agent systems. Use it when an output, tool call, file, image, email, or agent handoff crosses a trust boundary and logs alone are not enough.
Start With The Boundary
Most deployments start in one of four places:
- Core signing: sign JSON, files, Markdown/text, images, or Rust email payloads directly.
- MCP: run
jacs mcpas a local tool server, or add signing around an existing MCP transport. - Frameworks: add provenance at LangChain, LangGraph, FastAPI, Express, Koa, or Vercel AI SDK boundaries.
- A2A and agreements: exchange signed artifacts or require multiple agents to sign off.
What JACS Gives You
- Persistent agent identity with encrypted private keys
- Tamper-evident signed JSON and file envelopes
- Inline Markdown/text signatures that stay readable in place
- Embedded PNG/JPEG/WebP signatures for media provenance
- Rust email signing and verification with field-level content hashes
- Trust policies and local trust-store workflows
- Cross-language verification across Rust, Python, Node.js, and Go
For platform workflows around verified documents, agent behavior, benchmarks, and hosted JACS identity flows, see HumanAssisted/haiai.
Best Entry Points
- Which Integration?
- Quick Start
- Use Cases
- MCP Overview
- Inline Text Signatures
- Image and Media Signatures
- Email Signing and Verification
Install
Rust CLI and MCP server
cargo install jacs-cli
jacs quickstart --name my-agent --domain my-agent.example.com
jacs mcp
Python
pip install jacs
Node.js
npm install @hai.ai/jacs
Go
go get github.com/HumanAssisted/JACS/jacsgo
What This Book Does Not Claim
- MCP and A2A are different boundaries: MCP is model-to-tool; A2A is agent-to-agent discovery and exchange.
- JACS does not require a registry, blockchain, or central server.
- Email signing is currently documented as a Rust core API, not a CLI or Python/Node/Go binding surface.