APC Defines the Project Contract. MCP Defines the Tool Protocol. A developer clarifies the distinction between APC (Agent Project Contract) and MCP (Model Context Protocol), explaining that APC defines the project contract while MCP defines the tool protocol. The developer introduces APX as a local runtime layer that bridges the two, keeping repositories small and portable while enabling external tool integration. This separation prevents project files from becoming cluttered with runtime-specific data. A lot of confusion around agent tooling comes from mixing two different layers. APC is about the project. MCP is about external tools. APX sits in the middle and makes both useful on a daily machine. That split matters because it keeps the repository small, reviewable, and portable while still letting the runtime reach real tools when the work starts. Think of APC as the portable context layer. It tells compatible tools what a repository means: Think of MCP as the tool protocol. It tells an AI app how to talk to external capabilities: APC does not replace MCP. MCP does not replace APC. They solve different problems. If you put everything into one bucket, the bucket gets dirty fast. A repo should not have to store: Those belong with the runtime or the user machine, not with the shared project contract. That is why .apc/mcps.json is a hint file, not a secret store and not a server by itself. It can say that a filesystem MCP matters here. It should not try to become the filesystem MCP. Example: project-root/ └── .apc/ └── mcps.json That file can declare expectations. A compatible runtime still has to resolve, start, and connect the actual MCP server. APC works best when it stays narrow and stable. Good APC content: AGENTS.md .apc/agents/