Earendil, the company behind the Pi AI assistant, has reversed a publicly stated position against the Model Context Protocol (MCP). Where pi.dev once carried an explicit declaration that Pi did not support MCP — reinforced by dismissive podcast comments and a blog post from co-founder Mario — the latest version ships MCP as core functionality. The company frames this as principled adaptation, not a flip-flop. The actual engineering rationale is more interesting than the PR framing. Pi needed a sandboxed interpreter for its own tool orchestration — something the team calls "Codemode" — and the architectural requirements for that sandbox turned out to overlap substantially with what MCP needs. The changes required for MCP support were, in the team's words, "generally useful," enabling better integration with their own Jev classification system. This is a case where internal product needs aligned with an external protocol, not a sudden conversion to MCP enthusiasm. Codemode itself is the substantive addition. It's a JavaScript sandbox running on the harness side (where the agent loop lives, not where untrusted tools execute) that allows an LLM to orchestrate and compose multiple tool calls using JavaScript logic. The state persists in the session transcript rather than the filesystem. The team chose JavaScript because small JS runtimes can ship as WASM binaries with reasonable sandboxing guarantees. The demo — pulling 167 Linear issues, classifying commenter frustration via a Jev model running on Cloudflare Workers AI, parallelizing with four async workers — shows genuine compositional capability. Pi's critique of MCP remains partially intact even as they adopt it. The team notes that MCP's core weakness — difficulty of composition — persists. Most MCP servers are still built for harnesses that dump tools into context and return text rather than structured data. Earendil's preferred model treats MCP more like OpenAPI with intelligent tool discovery: tools should return structured data, and tools should be discoverable via documentation and description metadata. The CLI analogy is apt — agents compose bash tools efficiently because of pipeable text streams, and there's no structural reason MCP tools can't work the same way. The technical details around tool loading reveal how modern LLM harness architecture is evolving. Pi now supports deferred tool loading, mid-conversation system messages, and reasoning level changes. In a Codemode world, the harness needs metadata to decide whether a tool is available to the LLM directly or only to the Codemode sandbox. This metadata layer didn't exist in Pi's previous tool loadout, and building it for MCP simultaneously solved their own internal needs. The strategic calculation is transparent: Earendil believes the best way to shape MCP's evolution toward small-harness compatibility is to participate from inside rather than criticize from outside. Whether this is genuine conviction or post-hoc rationalization for a market-driven decision is unknowable, but the engineering artifacts — Codemode, the metadata layer, the Jev integration — suggest real architectural work rather than a checkbox feature.