The "Agent" node is terrible.

I've been experimenting with "Agents" lately to better understand tool calling in all of it's majesty. I built a small little tool calling agent in javascript and got it working with other frameworks as well.

I've spent the last hour or so in n8n experimenting with their agent node, and boy is it terrible. Am I missing something?

My use case is to take in a user request, then read .md file summaries from a json file, and then select the appropriate file and read the file from disk. I have two custom javascript code tools, one that lists the files from the filesystem, and the other that will read and parse a specific file and send it back.

Using the Ollama skd and some javascript this is really pretty easy. the agent will call the tools until it has all the information it needs. But in n8n, the tool agent is really really bad at it.

Surely I'm missing something. Does anybody have any insights on how to handle custom agents like this in n8n?