Matrix logo

Agent Manifests

The JSON-on-disk agent manifest format — schema_version, agent DID, allowed_side_effects, the servers array with transport/command/args/env/package_digest/version/tools, and the locked design rules.

An agent manifest is a JSON-on-disk description of what tools a Matrix agent has access to. It is loaded by executor/tool at boot; the canonical Go types live in executor/tool/manifest.go (AgentManifest, ServerEntry, ToolEntry, NativeToolEntry).

Files

FilePurpose
agents/default.jsonThe per-user baseline agent for v1. Starting point for fork-and-customize.
agents/neo.jsonNeo's conversational-agent manifest.
agents/forge.jsonForge agent manifest.

Schema

{
  "schema_version": 1,
  "agent": "matrix://agent/default",
  "description": "…",
  "allowed_side_effects": ["read", "write", "network", "shell"],
  "servers": [
    {
      "alias": "fs",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
      "env": [],
      "package_digest": "sha256:0000…",
      "version": "2026.1.14",
      "tools": [
        {"name": "read_text_file", "description": "Read the contents of a text file", "side_effect_class": "read"},
        {"name": "write_file", "description": "Write content to a file", "side_effect_class": "write"}
      ]
    }
  ]
}

Fields

FieldMeaning
schema_versionManifest schema version (currently 1).
agentThe agent's matrix://agent/<name> DID.
allowed_side_effectsThe side-effect classes this agent may perform (read, write, network, shell).
servers[].aliasShort name used in tool URIs (matrix://tool/mcp/<alias>/…).
servers[].transportstdio or http.
servers[].command / argsHow to spawn a stdio server.
servers[].env / headersCredential refs ($env:NAME).
servers[].versionServer version (forms the tool URI pin).
servers[].package_digestsha256 of the published package (sha256:<64-hex>).
servers[].tools[]The exhaustive list of tools the server advertises, each with a side_effect_class.

Locked design rules

#Rule
Q15Transports = stdio + http (streamable HTTP); SSE-only deferred.
Q17Tool URI scheme: matrix://tool/mcp/<server-alias>/<tool-name>@<version>.
Q18Credentials via $env:NAME refs in env/headers; never journaled.
Q19native_tools is the placeholder slot for chain tools (v1.1).
Q21tools MUST exhaustively enumerate what the server advertises; the manager rejects drift at boot.
Q22package_digest MUST be the sha256 of the published package.

The placeholder digests in default.json are zero-filled (sha256:0000…) for bootstrap testing only. Before any production or chain-anchoring deployment, install the pinned package, compute its real sha256, and replace the placeholder.

Verify a manifest

mcl-tools verify checks the declared/discovered tool bijection.