MACP Discovery Guide
Discovery allows agents and runtimes to identify one another and understand supported capabilities.
Status: Non-normative (explanatory). In case of conflict, the referenced RFC is authoritative. Reference: RFC-MACP-0005
Discovery allows agents and runtimes to identify one another and understand supported capabilities.
Manifest Overview
Each MACP component publishes a manifest describing:
- identity
- capabilities
- supported coordination modes
- transport endpoints
per RFC-MACP-0005 §3 (Manifest Structure). The
manifest JSON Schema is at schemas/json/macp-agent-manifest.schema.json —
see docs/agent-manifest-schema.md for why the schema exists
alongside the RFC. A full example is available at examples/discovery/agent_manifest.json,
validated in CI by make json-validate.
Well-known Discovery
RFC-MACP-0005 §7.1 (Well-known URL) defines this location — the RFC itself says MAY:
https://<host>/.well-known/macp.json
Agents SHOULD publish there regardless: this is this guide's own interoperability recommendation, stronger than the RFC's floor.
Transport Endpoints
Manifests MAY include transport_endpoints to describe how MACP messages can be delivered. Each endpoint MUST include:
- a registered transport identifier (e.g.,
macp.transport.grpc.v1), - a concrete URI,
- one or more supported content types. Content types SHOULD use registered MACP media types from
registries/media-types.md.
per RFC-MACP-0005 §6 (Transport Endpoints).
Transport identifiers are listed in registries/transports.md. Directly connected GetManifest responses may omit transport_endpoints when the serving channel already establishes the relevant delivery coordinates or when deployment policy intentionally withholds them.
GetManifest RPC
For the gRPC binding, manifests can also be retrieved via the GetManifest RPC, per
RFC-MACP-0005 §7.3 (GetManifest RPC Semantics):
- an empty
agent_idrequests the manifest of the serving runtime or agent, - a non-empty
agent_idrequests a locally-known manifest for that identifier, - self-manifests returned over an already-established channel may omit
transport_endpoints.
ListModes vs manifest supported_modes
ListModes returns only standards-track mode descriptors; GetManifest and Initialize may
additionally include extension mode identifiers in supported_modes. See
docs/modes.md and
RFC-MACP-0002 §12 (Extension mode lifecycle) for how extension
modes are declared and discovered.
Registry-based Discovery
Organizations may operate registries that aggregate manifests across services, per RFC-MACP-0005 §7.2 (Registry Services) and §10 (Registries).
Security
Manifests SHOULD include only public discovery information. Transport endpoints MUST use secure transport (TLS). Secrets MUST NOT appear in manifests. See RFC-MACP-0005 §9 (Security Considerations).