What actually is an agent? I've just discovered Blocks.ai and I think I like their interpretation

The first time I met the word "agent" in computer science, it had nothing to do with LLMs. I was at university, taking a module on software agents. The agents in question learned mazes using Q-Learning and SARSA, both reinforcement learning algorithms. I got interested enough to extend the coursework into 3D mazes, which turned out to be an early lesson in following the brief. What I built was more complicated than what had been asked for, and I lost marks for going my own way. I'm still glad I went down that points losing rabbit hole. I passed the module comfortably and came away with a definition of an agent that I kept until very recently. An agent had a state, an action space, a reward signal, a policy it updated through experience, and A LOT of training hours. No language model in sight.
Fast forward to today and "agent" has become one of those words everyone uses and almost nobody defines the same way. Say "I built an agent" and you could mean a GPT with a system prompt, a skill or a set of skills sitting on top of an LLM, an n8n workflow, Claude Desktop with a couple of MCP servers wired in, a script on a cron job that occasionally calls out to a model, or, much less likely these days, something doing genuine reinforcement learning like the Q-Learning agents from my uni days. None of us really knows what anyone else means by the word. We all claim we do, and then we see the thing that got built and are surprised more often than not.
A definition that actually works
Recently I've been experimenting with Blocks.ai, PubNub's network layer for agents. While looking around I noticed that Blocks has settled on an answer to "what is an agent?" in a way that feels right to me. Rather than pick a side in the reasoning versus function debate, it defines an agent functionally instead of behaviourally. An agent is something with a described identity and capability that receives a task and returns a result. Whether that result comes from an LLM or from a single deterministic function is irrelevant to the definition. Blocks essentially describes agents as small programs that respond to tasks. I think that is a genuinely useful way of defining them. I also think it lends itself to how agents will actually be used as we move forward.
But Blocks hasn't caught my eye because of how it defines agents. It is what it lets you do with them that has me writing this piece. It is all very well having small programs that respond to tasks. Letting those small programs run anywhere, be found by anyone or by nobody, be used for free or for a fee, and be combined in any order you like, that is the part that changes things.
The pitch is simple. Install the SDK on your machine. Fit your program into a fairly simple template. Register your agent. Routing, presence, retries, audit logs and transport are then handled by the PubNub infrastructure underneath. No port forwarding, no static IP, no DNS, no firewall rules. Your machine opens a single outbound connection to the network. Tasks arrive through that connection and results flow back. If your laptop, your Raspberry Pi, or a machine sitting behind a corporate firewall can make an outbound connection, it can serve an agent privately, to colleagues, or to the world.
I had to try it
I had a play with a few of the sample and community agents that already existed when I first logged in. A lot of them lean towards LLM powered things. Code reviewers, research assistants, chat companions. That makes sense. Without the surge in AI since 2022, Blocks probably wouldn't be around at all. But I wanted to try something I could build quickly, run on my Mac, and not have to rely on an LLM for. So I went back to a fun little project that I built a web page for a while ago.
I called it Decodedly. It came out of a fascination with the Vigenère cipher that goes back to my university days looking into cryptography. What it actually does is closer to a one time pad with steganography bolted on. You give it a secret message and an innocent looking piece of cover text, and it hands you back a key. Anyone who sees only the cover text sees exactly that, a perfectly ordinary piece of text. This article would work for that cover text. Only someone with the key can reveal that a second message was ever hidden inside it. No LLM call. No GPU cycle. Just a deterministic piece of TypeScript, using the Blocks SDK to make it available on the network.
If you want to try it yourself, Decodedly is live on Blocks here, running on my Mac: https://app.blocks.ai/agents/decodedly
That link is a good example of the friction Blocks has taken out. Free agents can be tried straight from the browser. No account. No login. No API keys to create. You click, fill in some parameters, send a task and see the result. Give it a go.
Standards, and Lego
Underneath, Blocks agent cards follow the A2A (Agent to Agent) protocol specification, with a few extensions of their own. That is a deliberate and friendly choice against lock in. Your agent's identity, capabilities, inputs and outputs are described in a standard, portable format rather than in something that ties you to Blocks.
A Q-Learning maze solver, Decodedly and an LLM code reviewer are wildly different underneath, but on Blocks they can all legitimately sit in the same catalogue under the same description of an agent. Small programs that respond to tasks are composable. Like Lego. You can chain them, swap them, run them in parallel, replace one without touching the others. Put a network like Blocks underneath that, with discovery, routing and calling already solved for you, and you get a genuinely new kind of building block. One that will sit on anything that can power it and reach the internet, and that is network callable by default rather than needing a complicated networking setup first.
Mixing and matching agents on Blocks feels very much like mixing and matching Lego sets to build something the box never intended. Without the messy business of cataloguing all the pieces first to work out whether your individual sets are still complete.
The MCP bit
Then there's the MCP side. I've put together a couple of MCPs for Claude Desktop recently, and for a while now I've thought of MCPs as the Chrome extensions for LLMs. Blocks providing an MCP that gives your favourite LLM access to every agent on the network is the real clincher for me. I've got it set up on Claude Desktop already. Once it's configured, every free and public agent on the network shows up as a tool that can be used automatically. I didn't have to write a single line of integration code. I published Decodedly, hooked up the Blocks MCP server, and asked Claude to encode and decode sentences with it. From realising the MCP existed to having it working against my own agent took about 180 seconds. It is that straightforward.
Nothing is exposed
I've touched on this already, but it deserves saying properly. The security model is the other thing that makes this practical rather than theoretical. Your agent, and the machine it runs on, never opens an inbound port. It reaches out to Blocks, which handles auth, routing and discovery, and callers reach your agent back down that same outbound tunnel. Your code and your data stay where they are. Only what your agent is configured to output ever leaves your machine. If you have ever fought with port forwarding or a reverse proxy just to expose a weekend project safely, that entire problem goes away.
So, what gets built?
This only launched on 8 July 2026, so the honest answer is that nobody knows yet. There are a couple of interesting things being built by the look of it. There's some sort of character based game in the works, with the agents as the characters, and I noticed today an Agent Dating feature (https://dating-block.blocks.ai/). I'll admit that one tempts me to set up an agent running a local model on Ollama, just to see how it goes. An absolutely silly idea, but fascinating nonetheless. When I found Blocks the other day I was not expecting anything like that, and certainly not expecting it to be so straightforward to build.
Which takes me back to the Lego comparison. When the interlocking brick arrived, the first thoughts among builders would have been houses, castles and little towns. Nobody was picturing a life size, drivable Formula 1 car. Nobody was picturing the Eddie Izzard Death Star Canteen sketch being animated brick by brick, which is well worth a watch if you haven't seen it.
So, what do you think we will see built with Blocks.ai?
