Summary
This repository has grown into a large multi-agent catalog:
232 specialized agents
16 divisions
multiple host exports
multiple install targets
multiple generated integration formats
The current Markdown-based agent files are useful and should remain the human-editable source.
However, at this scale, the project also needs a machine-readable contract for:
agent identity
division metadata
routing metadata
host-specific export behavior
install path behavior
agent overlap detection
generated artifact validation
benchmark/evaluation metadata
I propose adding an optional standard AISP V1.0.0 agency index package.
AISP protocol reference:
https://github.com/AIXP-Labs/AISP
This would not replace the existing .md agent files.
This would not require every runtime to support AISP.
This would provide a structured companion contract that convert/install/validation tooling can use.
Problem
The repository already supports many hosts and install targets:
Claude Code
GitHub Copilot
Antigravity
Gemini CLI
OpenCode
OpenClaw
Cursor
Aider
Windsurf
Qwen Code
Kimi Code
Codex
Osaurus
Hermes
The current conversion and installation flow works, but important semantics are distributed across:
agent Markdown files
frontmatter
division directories
divisions.json
tools.json
convert.sh
install.sh
host-specific integration folders
README instructions
CONTRIBUTING conventions
This makes it harder to answer questions like:
Which agents belong to which division?
Which agents overlap?
Which agent should a router pick for a task?
Which fields are preserved in each host export?
Which fields are dropped?
Which hosts require generated files?
Which hosts have capacity or format limits?
Which installation paths are config roots vs agent directories?
Which agents are risky or dual-use?
Which generated integrations are stale?
Which agent files violate the contribution template?
The project already has a strong contribution template and cross-host scripts. The missing piece is a single machine-readable contract that ties together source agents, routing metadata, host exports, install behavior, and validation.
Proposed solution
Add an optional AISP package that defines an agency-level index and validation workflow.
Possible layout:
aisp/
└── agency_index_contract_aisp/
├── aisp.aisop.json
├── README.md
├── resources/
│ ├── host-export-profiles.json
│ ├── agent-quality-rules.json
│ ├── install-path-rules.json
│ └── overlap-groups.json
└── evals/
└── traces/
This package would define:
1. canonical agent identity rules;
2. division mapping rules;
3. routing metadata requirements;
4. host export preservation rules;
5. host install path rules;
6. duplicate / overlap detection;
7. quality validation rules;
8. generated integration trace fields.
The existing Markdown agent files remain the human-editable source.
The AISP package acts as a contract layer for tooling, validation, and future host integrations.
Standard AISP V1.0.0 package sketch
[
{
"role": "system",
"content": {
"protocol": "AISP V1.0.0",
"axiom_0": "Human_Sovereignty_and_Wellbeing",
"id": "agency_index_contract_aisp",
"name": "Agency Agents Index Contract",
"version": "1.0.0",
"license": "MIT",
"summary": "A machine-checkable AISP package for agency-agents routing, validation, and host-specific exports.",
"description": "Defines a structured contract for the agency-agents catalog: agent identity, division membership, routing metadata, host export profiles, install paths, generated artifact validation, overlap detection, and quality checks.",
"flow_format": "mermaid",
"loading_mode": "node",
"tools": [
"filesystem",
"shell"
],
"params": {
"repo_root": "string",
"source_agents_root": "string",
"target_host": "string?",
"output_root": "string?"
},
"system_prompt": ""
}
},
{
"role": "user",
"content": {
"instruction": "STRICTLY OBEY aisp_contract; its non_negotiable rules are inviolable; then RUN aisop.main",
"user_input": "{user_input}",
"aisp_contract": {
"profile": "aisp.skill.v1",
"invocation": {
"mode": "catalog_validation_or_host_export",
"when_to_use": [
"before converting agency agents to host-specific integration formats",
"before installing agents into a supported host",
"before validating the full agent catalog",
"before adding a new agent to the catalog",
"before generating integrations for Claude Code, OpenClaw, Cursor, Codex, Hermes, Aider, Windsurf, OpenCode, Qwen, Kimi, Osaurus, Gemini CLI, or Antigravity"
],
"when_not_to_use": [
"one-off manual copy of a single agent with no claim of generated integration support",
"external forks that do not claim compatibility with upstream conversion scripts",
"runtime execution of a single already-installed agent"
]
},
"non_negotiable": [
{
"rule": "Every source agent must have a stable canonical identity.",
"enforced_by": "scan_agents.step2:sys.assert"
},
{
"rule": "Every source agent must map to exactly one valid division unless explicitly marked as shared or special.",
"enforced_by": "division_map.step2:sys.assert"
},
{
"rule": "Host-specific exports must report which source fields were preserved and which were dropped.",
"enforced_by": "export_host.step3:sys.assert"
},
{
"rule": "Generated integrations must be reproducible from source agents and host export profiles.",
"enforced_by": "validate_export.step2:sys.assert"
},
{
"rule": "Install path resolution must distinguish config roots from agent directories.",
"enforced_by": "install_path.step2:sys.assert"
},
{
"rule": "Agent overlap must be detected before adding a new agent with similar role, description, or deliverables.",
"enforced_by": "overlap.step2:sys.assert"
},
{
"rule": "Agent quality validation must check required sections, deliverables, workflow process, and success metrics.",
"enforced_by": "quality.step2:sys.assert"
},
{
"rule": "Single-file host exports must not silently exceed host context or size assumptions.",
"enforced_by": "host_limits.step2:sys.assert"
},
{
"rule": "Every conversion or install run must emit a trace with source count, selected divisions, target host, output files, warnings, and dropped fields.",
"enforced_by": "trace.step2:sys.assert"
}
],
"discovery": {
"category": "agent_catalog_governance",
"tags": [
"agency-agents",
"agent-index",
"routing",
"host-export",
"install-validation",
"agent-quality",
"overlap-detection",
"aisp"
]
},
"risk_level": "medium",
"resources": [
{
"id": "host_export_profiles",
"path": "resources/host-export-profiles.json",
"kind": "config",
"mode": "read_only",
"when": "Read before converting agents to a host-specific format.",
"scope": "skill"
},
{
"id": "agent_quality_rules",
"path": "resources/agent-quality-rules.json",
"kind": "config",
"mode": "read_only",
"when": "Read before validating source agent files.",
"scope": "skill"
},
{
"id": "install_path_rules",
"path": "resources/install-path-rules.json",
"kind": "config",
"mode": "read_only",
"when": "Read before resolving install destinations.",
"scope": "skill"
},
{
"id": "overlap_groups",
"path": "resources/overlap-groups.json",
"kind": "index",
"mode": "read_only",
"when": "Read before checking duplicate or overlapping agents.",
"scope": "skill"
}
]
},
"aisop": {
"main": "graph TD\n scan_agents[Scan source agents] --> division_map[Validate division mapping]\n division_map --> quality[Validate agent quality]\n quality --> overlap[Detect overlap and duplicates]\n overlap --> host_profile[Load host export profile]\n host_profile --> export_host[Generate host-specific export]\n export_host --> host_limits[Check host limits]\n host_limits --> install_path[Resolve install path]\n install_path --> validate_export[Validate generated export]\n validate_export --> trace[Write conversion/install trace]\n trace --> end_node((End))"
},
"functions": {
"scan_agents": {
"step1": "Scan source_agents_root for source agent Markdown files.",
"step2": "sys.assert('each source agent has canonical identity fields', 'Every source agent requires canonical identity')",
"output_mapping": "agent_inventory",
"constraints": [
"Canonical identity should include file path, slug, display name, division, description, and source hash.",
"Generated integration files should not be treated as source agents."
]
},
"division_map": {
"step1": "Validate every source agent against the division list and special directories.",
"step2": "sys.assert('each source agent maps to exactly one valid division or declared special bucket', 'Invalid or ambiguous division mapping')",
"output_mapping": "division_mapping_status",
"constraints": [
"Integration output directories are not source divisions.",
"Special directories should be explicitly excluded or classified."
]
},
"quality": {
"step1": "Validate required frontmatter and required semantic sections.",
"step2": "sys.assert('agent file includes deliverables workflow and success metrics', 'Agent quality requirements missing')",
"output_mapping": "agent_quality_report",
"constraints": [
"Quality validation should check name, description, color, emoji, vibe, services if required by project conventions.",
"Quality validation should check Core Mission, Technical Deliverables, Workflow Process, and Success Metrics.",
"Warnings should be emitted before becoming hard failures."
]
},
"overlap": {
"step1": "Compare new or changed agents against existing agents by name, description, division, services, deliverables, and embeddings or lexical similarity.",
"step2": "sys.assert('overlap status recorded for similar agents', 'Potential duplicate or overlapping agent must be reported')",
"output_mapping": "overlap_report",
"constraints": [
"Near duplicates should be reported for maintainer review.",
"Overlap does not automatically block a new agent if specialization is clear."
]
},
"host_profile": {
"step1": "Load host export profile for target_host.",
"output_mapping": "host_export_profile",
"constraints": [
"Host profile should define output format, path rules, preserved fields, dropped fields, size constraints, and install destination logic."
]
},
"export_host": {
"step1": "Generate host-specific output from agent_inventory and host_export_profile.",
"step2": "Record preserved fields and dropped fields for each exported agent.",
"step3": "sys.assert('field preservation/dropping recorded for host export', 'Host export must report preserved and dropped fields')",
"output_mapping": "generated_host_export",
"constraints": [
"Export should not silently drop routing-critical metadata.",
"Export should preserve agent identity and description.",
"Hosts with only name/description routing should receive compact routing-relevant descriptions."
]
},
"host_limits": {
"step1": "Check generated_host_export against target host capacity, file size, count, description length, and format limits.",
"step2": "sys.assert('host limits are checked before install', 'Generated export must be checked against host limits')",
"output_mapping": "host_limit_report",
"constraints": [
"Single-file hosts should receive compact output or warnings.",
"Hosts with agent count caps should warn before install.",
"Description length should be checked where hosts route by description."
]
},
"install_path": {
"step1": "Resolve install destination using install_path_rules and environment variables.",
"step2": "sys.assert('config root and agent directory are distinguished', 'Install path resolution must distinguish config root from agent directory')",
"output_mapping": "install_path_resolution",
"constraints": [
"Environment variables that point to config roots should not be treated as final agent directories unless documented.",
"Dry-run should print resolved install path."
]
},
"validate_export": {
"step1": "Validate generated files exist and correspond to source agents.",
"step2": "sys.assert('generated integration reproducible from source and profile', 'Generated integration validation failed')",
"output_mapping": "export_validation_report",
"constraints": [
"Generated integration files should be reproducible from source agents.",
"Validation should report missing files, stale files, and orphaned files."
]
},
"trace": {
"step1": "Write conversion/install trace with source agent count, selected divisions, selected agents, target host, output files, install paths, warnings, dropped fields, and validation status.",
"step2": "sys.assert('conversion/install trace contains required fields', 'Trace missing required conversion/install evidence')",
"output_mapping": "agency_index_trace",
"constraints": [
"Trace is evidence, not a trust certificate.",
"Trace should make host export and install decisions debuggable."
]
},
"end_node": {
"step1": "Return agent_quality_report, overlap_report, host_limit_report, export_validation_report, and agency_index_trace."
}
}
}
}
]
Why AISP helps
AISP is useful here because this repository already behaves like a multi-host agent package.
The current source is Markdown, but the project also needs:
agent identity contract
division contract
routing contract
host export contract
install path contract
quality validation contract
overlap detection contract
conversion/install trace
AISP provides a standard way to express:
invocation
non-negotiable rules
resources
workflow graph
validation steps
trace outputs
The existing Markdown agents can remain unchanged.
The AISP package would be a companion contract for scripts and validation.
Alternatives considered
1. Keep only Markdown + shell scripts
This works today, but the project is large enough that rules are distributed across many files and scripts.
A machine-readable contract would make validation easier.
2. Add more README documentation
Documentation helps users, but it does not make host exports or install paths testable.
3. Add ad hoc JSON config only
A project-specific JSON file would help, but AISP provides a richer shape:
contract
non-negotiable rules
resources
workflow
trace
4. Require all agents to be rewritten in AISP
Not proposed.
The Markdown agents should remain the source authoring format.
AISP should be a companion contract for catalog governance and host export.
Impact
Affected areas:
scripts/convert.sh
scripts/install.sh
divisions.json
tools.json
integrations/
agent contribution validation
host-specific install docs
future agent routing / selector tooling
Expected benefits:
1. fewer host export regressions;
2. better install path diagnostics;
3. better duplicate / overlap detection;
4. better agent quality checks;
5. easier routing for large catalogs;
6. better support for hosts with limits;
7. clearer trace of what convert/install generated;
8. safer future marketplace or agency selector tooling.
Risk:
This can start as docs + optional generated artifact + validation script.
It does not need to block current workflows.
Evidence / examples
The repository already states that it has:
232 specialized agents across 16 divisions
multi-tool integrations
convert.sh
install.sh
tool-specific export formats
There are already issues showing why a contract would help:
#578
install.sh does not correctly honor CLAUDE_CONFIG_DIR.
This is an install-path contract bug.
#179
Cursor skills not following the newer .agents/skills structure.
This is a host-export contract issue.
#494
agents-workspace proposes a workflow layer that routes and orchestrates Agency agents.
This needs an agent index / routing contract.
#626
AI Code Reviewer proposal overlaps with existing Code Reviewer.
This needs overlap / specialization governance.
#229
Linux/Bash command examples need Windows/PowerShell alternatives.
This needs host/OS export rules.
These issues are different symptoms of the same underlying need:
large agent catalog
+ many host exports
+ many install paths
+ many overlapping specialists
=> needs a machine-readable agency index contract
Non-goals
This proposal does not require:
- replacing the existing Markdown agent files;
- making AISP mandatory for every contributor;
- adding a runtime dependency;
- removing convert.sh or install.sh;
- changing every host integration immediately;
- blocking all current installs until the index is complete.
Minimal rollout
Phase 1:
Add a documented agency-index contract.
Phase 2:
Generate an agency-index.json from source agents:
- slug
- name
- division
- description
- services
- source path
- source hash
Phase 3:
Add host-export-profiles.json:
- host name
- output format
- install path
- preserved fields
- dropped fields
- host limits
Phase 4:
Add validation:
- required sections
- duplicate/overlap warnings
- host limits
- install path resolution
- generated files correspond to source
Phase 5:
Add optional AISP package:
aisp/agency_index_contract_aisp/aisp.aisop.json
Phase 6:
Let convert.sh / install.sh optionally emit a trace:
- selected agents
- selected divisions
- target host
- files generated
- fields dropped
- install path
- warnings
The value is not adopting a protocol globally.
The value is giving this large agent catalog a single contract for routing, validation, and host-specific exports.
Summary
This repository has grown into a large multi-agent catalog:
The current Markdown-based agent files are useful and should remain the human-editable source.
However, at this scale, the project also needs a machine-readable contract for:
I propose adding an optional standard AISP V1.0.0 agency index package.
AISP protocol reference:
https://github.com/AIXP-Labs/AISP
This would not replace the existing
.mdagent files.This would not require every runtime to support AISP.
This would provide a structured companion contract that convert/install/validation tooling can use.
Problem
The repository already supports many hosts and install targets:
The current conversion and installation flow works, but important semantics are distributed across:
This makes it harder to answer questions like:
The project already has a strong contribution template and cross-host scripts. The missing piece is a single machine-readable contract that ties together source agents, routing metadata, host exports, install behavior, and validation.
Proposed solution
Add an optional AISP package that defines an agency-level index and validation workflow.
Possible layout:
This package would define:
The existing Markdown agent files remain the human-editable source.
The AISP package acts as a contract layer for tooling, validation, and future host integrations.
Standard AISP V1.0.0 package sketch
[ { "role": "system", "content": { "protocol": "AISP V1.0.0", "axiom_0": "Human_Sovereignty_and_Wellbeing", "id": "agency_index_contract_aisp", "name": "Agency Agents Index Contract", "version": "1.0.0", "license": "MIT", "summary": "A machine-checkable AISP package for agency-agents routing, validation, and host-specific exports.", "description": "Defines a structured contract for the agency-agents catalog: agent identity, division membership, routing metadata, host export profiles, install paths, generated artifact validation, overlap detection, and quality checks.", "flow_format": "mermaid", "loading_mode": "node", "tools": [ "filesystem", "shell" ], "params": { "repo_root": "string", "source_agents_root": "string", "target_host": "string?", "output_root": "string?" }, "system_prompt": "" } }, { "role": "user", "content": { "instruction": "STRICTLY OBEY aisp_contract; its non_negotiable rules are inviolable; then RUN aisop.main", "user_input": "{user_input}", "aisp_contract": { "profile": "aisp.skill.v1", "invocation": { "mode": "catalog_validation_or_host_export", "when_to_use": [ "before converting agency agents to host-specific integration formats", "before installing agents into a supported host", "before validating the full agent catalog", "before adding a new agent to the catalog", "before generating integrations for Claude Code, OpenClaw, Cursor, Codex, Hermes, Aider, Windsurf, OpenCode, Qwen, Kimi, Osaurus, Gemini CLI, or Antigravity" ], "when_not_to_use": [ "one-off manual copy of a single agent with no claim of generated integration support", "external forks that do not claim compatibility with upstream conversion scripts", "runtime execution of a single already-installed agent" ] }, "non_negotiable": [ { "rule": "Every source agent must have a stable canonical identity.", "enforced_by": "scan_agents.step2:sys.assert" }, { "rule": "Every source agent must map to exactly one valid division unless explicitly marked as shared or special.", "enforced_by": "division_map.step2:sys.assert" }, { "rule": "Host-specific exports must report which source fields were preserved and which were dropped.", "enforced_by": "export_host.step3:sys.assert" }, { "rule": "Generated integrations must be reproducible from source agents and host export profiles.", "enforced_by": "validate_export.step2:sys.assert" }, { "rule": "Install path resolution must distinguish config roots from agent directories.", "enforced_by": "install_path.step2:sys.assert" }, { "rule": "Agent overlap must be detected before adding a new agent with similar role, description, or deliverables.", "enforced_by": "overlap.step2:sys.assert" }, { "rule": "Agent quality validation must check required sections, deliverables, workflow process, and success metrics.", "enforced_by": "quality.step2:sys.assert" }, { "rule": "Single-file host exports must not silently exceed host context or size assumptions.", "enforced_by": "host_limits.step2:sys.assert" }, { "rule": "Every conversion or install run must emit a trace with source count, selected divisions, target host, output files, warnings, and dropped fields.", "enforced_by": "trace.step2:sys.assert" } ], "discovery": { "category": "agent_catalog_governance", "tags": [ "agency-agents", "agent-index", "routing", "host-export", "install-validation", "agent-quality", "overlap-detection", "aisp" ] }, "risk_level": "medium", "resources": [ { "id": "host_export_profiles", "path": "resources/host-export-profiles.json", "kind": "config", "mode": "read_only", "when": "Read before converting agents to a host-specific format.", "scope": "skill" }, { "id": "agent_quality_rules", "path": "resources/agent-quality-rules.json", "kind": "config", "mode": "read_only", "when": "Read before validating source agent files.", "scope": "skill" }, { "id": "install_path_rules", "path": "resources/install-path-rules.json", "kind": "config", "mode": "read_only", "when": "Read before resolving install destinations.", "scope": "skill" }, { "id": "overlap_groups", "path": "resources/overlap-groups.json", "kind": "index", "mode": "read_only", "when": "Read before checking duplicate or overlapping agents.", "scope": "skill" } ] }, "aisop": { "main": "graph TD\n scan_agents[Scan source agents] --> division_map[Validate division mapping]\n division_map --> quality[Validate agent quality]\n quality --> overlap[Detect overlap and duplicates]\n overlap --> host_profile[Load host export profile]\n host_profile --> export_host[Generate host-specific export]\n export_host --> host_limits[Check host limits]\n host_limits --> install_path[Resolve install path]\n install_path --> validate_export[Validate generated export]\n validate_export --> trace[Write conversion/install trace]\n trace --> end_node((End))" }, "functions": { "scan_agents": { "step1": "Scan source_agents_root for source agent Markdown files.", "step2": "sys.assert('each source agent has canonical identity fields', 'Every source agent requires canonical identity')", "output_mapping": "agent_inventory", "constraints": [ "Canonical identity should include file path, slug, display name, division, description, and source hash.", "Generated integration files should not be treated as source agents." ] }, "division_map": { "step1": "Validate every source agent against the division list and special directories.", "step2": "sys.assert('each source agent maps to exactly one valid division or declared special bucket', 'Invalid or ambiguous division mapping')", "output_mapping": "division_mapping_status", "constraints": [ "Integration output directories are not source divisions.", "Special directories should be explicitly excluded or classified." ] }, "quality": { "step1": "Validate required frontmatter and required semantic sections.", "step2": "sys.assert('agent file includes deliverables workflow and success metrics', 'Agent quality requirements missing')", "output_mapping": "agent_quality_report", "constraints": [ "Quality validation should check name, description, color, emoji, vibe, services if required by project conventions.", "Quality validation should check Core Mission, Technical Deliverables, Workflow Process, and Success Metrics.", "Warnings should be emitted before becoming hard failures." ] }, "overlap": { "step1": "Compare new or changed agents against existing agents by name, description, division, services, deliverables, and embeddings or lexical similarity.", "step2": "sys.assert('overlap status recorded for similar agents', 'Potential duplicate or overlapping agent must be reported')", "output_mapping": "overlap_report", "constraints": [ "Near duplicates should be reported for maintainer review.", "Overlap does not automatically block a new agent if specialization is clear." ] }, "host_profile": { "step1": "Load host export profile for target_host.", "output_mapping": "host_export_profile", "constraints": [ "Host profile should define output format, path rules, preserved fields, dropped fields, size constraints, and install destination logic." ] }, "export_host": { "step1": "Generate host-specific output from agent_inventory and host_export_profile.", "step2": "Record preserved fields and dropped fields for each exported agent.", "step3": "sys.assert('field preservation/dropping recorded for host export', 'Host export must report preserved and dropped fields')", "output_mapping": "generated_host_export", "constraints": [ "Export should not silently drop routing-critical metadata.", "Export should preserve agent identity and description.", "Hosts with only name/description routing should receive compact routing-relevant descriptions." ] }, "host_limits": { "step1": "Check generated_host_export against target host capacity, file size, count, description length, and format limits.", "step2": "sys.assert('host limits are checked before install', 'Generated export must be checked against host limits')", "output_mapping": "host_limit_report", "constraints": [ "Single-file hosts should receive compact output or warnings.", "Hosts with agent count caps should warn before install.", "Description length should be checked where hosts route by description." ] }, "install_path": { "step1": "Resolve install destination using install_path_rules and environment variables.", "step2": "sys.assert('config root and agent directory are distinguished', 'Install path resolution must distinguish config root from agent directory')", "output_mapping": "install_path_resolution", "constraints": [ "Environment variables that point to config roots should not be treated as final agent directories unless documented.", "Dry-run should print resolved install path." ] }, "validate_export": { "step1": "Validate generated files exist and correspond to source agents.", "step2": "sys.assert('generated integration reproducible from source and profile', 'Generated integration validation failed')", "output_mapping": "export_validation_report", "constraints": [ "Generated integration files should be reproducible from source agents.", "Validation should report missing files, stale files, and orphaned files." ] }, "trace": { "step1": "Write conversion/install trace with source agent count, selected divisions, selected agents, target host, output files, install paths, warnings, dropped fields, and validation status.", "step2": "sys.assert('conversion/install trace contains required fields', 'Trace missing required conversion/install evidence')", "output_mapping": "agency_index_trace", "constraints": [ "Trace is evidence, not a trust certificate.", "Trace should make host export and install decisions debuggable." ] }, "end_node": { "step1": "Return agent_quality_report, overlap_report, host_limit_report, export_validation_report, and agency_index_trace." } } } } ]Why AISP helps
AISP is useful here because this repository already behaves like a multi-host agent package.
The current source is Markdown, but the project also needs:
AISP provides a standard way to express:
The existing Markdown agents can remain unchanged.
The AISP package would be a companion contract for scripts and validation.
Alternatives considered
1. Keep only Markdown + shell scripts
This works today, but the project is large enough that rules are distributed across many files and scripts.
A machine-readable contract would make validation easier.
2. Add more README documentation
Documentation helps users, but it does not make host exports or install paths testable.
3. Add ad hoc JSON config only
A project-specific JSON file would help, but AISP provides a richer shape:
4. Require all agents to be rewritten in AISP
Not proposed.
The Markdown agents should remain the source authoring format.
AISP should be a companion contract for catalog governance and host export.
Impact
Affected areas:
Expected benefits:
Risk:
This can start as docs + optional generated artifact + validation script.
It does not need to block current workflows.
Evidence / examples
The repository already states that it has:
There are already issues showing why a contract would help:
These issues are different symptoms of the same underlying need:
Non-goals
This proposal does not require:
Minimal rollout
The value is not adopting a protocol globally.
The value is giving this large agent catalog a single contract for routing, validation, and host-specific exports.