Seeing memory, tools, and reasoning as one loop rather than three features is the right framing, and it changes how you evaluate an agent. Once they interact, a failure is rarely "the model was dumb," it's a bad retrieval feeding good reasoning, or a correct plan calling the wrong tool, so I score each step separately to find where the loop actually broke. I wrote up the four things I check per LangGraph step here if it's useful: kartiknvjk.hashnode.dev/evaluating-langgraph-agen…