In my experience, the problem often isn't that the model isn't smart enough. The failure is in the scaffolding, not the brain.
Four layers. Four different failure modes.
1 Prompt — the instruction
Shapes a response. Can't supply facts the model never received. Good prompts help, but they can't overcome missing information.
2 Context — what the model sees
Retrieval, memory, tool results, context-window management. Better context helps the model decide; it doesn't enforce what the model is allowed to do.
3 Harness — the runtime controls
Tool permissions. Execution boundaries. Retries. Budgets. Human approval gates. Audit trails. This is where runtime governance is enforced — not by hoping the prompt is strong enough. It matters the moment your agent stops answering and starts acting.
4 Loop — what happens across turns
Task decomposition, state, verification, stop conditions, and what carries forward. The difference between a demo that works once and a system that can recover when something goes wrong.
Know the layer → know the fix. Sometimes what looks like a model failure is actually a missing control, missing context, or missing evaluation.
Then comes the connectivity stack
MCP — the USB-C moment
An open protocol for connecting compatible AI clients to tools, data, and capabilities through a common interface. Less integration glue — not zero integration work.
xMCP — the on-ramp
Frameworks such as xmcp make it easier to build and ship MCP servers, turning existing APIs into agent-accessible capabilities with less boilerplate.
Agent-to-agent — the next frontier
Delegation and verification between systems. But trust doesn't automatically transfer with the task: recent research and reporting highlight how injected instructions can propagate across agents that trust one another. The harness problem, at protocol scale.
And the interface? It becomes less visible.
The chat window was the demo. Increasingly, the product is the workflow — exposed through APIs, CLIs, CI pipelines, and scheduled jobs. The same interfaces your scripts use today, except now an agent can reason about the next step.
Prompt → Context → Harness → Loop → Protocol → Invisible infrastructure. That's the stack. Too many teams are still debugging layer one when the failure lives somewhere else.
Which layer is breaking your agents right now?
Notes: "harness" and "loop" are practitioner terms whose usage is still evolving. This framing is inspired by Jothi Moorthy and Hany Tadros.