- 474tools behind one authenticated FAFOHive endpoint, under one trust model
- 12steps in the frozen pipeline every Agent Swarm call passes
- ~180gateway actions compiled from YAML schemas into dispatch
An agent is only as capable as the tools it can reach and only as safe as the path those tools take. I decided that the path would be built once, that it would be the only path, and that adding capability would be a matter of declaring a tool rather than writing a service. Validation, authorisation, limits, sanitisation, audit and observation happen in one pipeline for every call. A tool contributes its core behaviour and nothing else. An agent class is a composition of a tool subset, a policy, a workspace and a profile.
The shape
One frozen pipeline in a fixed order. Tools declared as data. Composition is declarative: a persona is a document, a function is a generated unit, a tool estate is a registry.
One hash-pinned catalog: a host cannot run a tool the others do not.
Where it appears
In Agent Swarm, the pipeline's order cannot change without sign-off: Tools are the platform.
In FAFO Core and Function Forge, one function definition becomes an orchestrated, budgeted, agent-callable tool, and agents can author new tools inside a sandbox that becomes callable only after a human restart: Tools that build tools, under governance.
In FAFOHive, the endpoint has three dispatch paths, and the business providers' APIs are rebuilt as tools under stable namespaces so agents see a steady surface: Agents with real tools and no keys.
The Capabilities model is where the size of the estate was answered: A hundred tokens instead of forty-two thousand.
One discovery tool, backed by a model that cannot name a tool outside the registry.
What it buys and what it costs
It buys a security posture that does not erode as the estate grows, because the hundredth tool gets exactly the scrutiny the first one got. It buys speed of extension, because declaring is cheaper than coding. It buys a catalog large enough that it needed its own routing model.
It costs flexibility: a frozen pipeline cannot be special-cased, and a tool that needs something the pipeline does not offer waits for the pipeline to grow. I pay that, because the alternative is a hole per tool.
The judgment in it
The hard discipline is refusing the exception. The trivial tool still needs fixtures, the unfinished tool kind stays unrunnable, and the generator that could hot-load a function rebuilds and waits for a human instead.
Exceptions are where the holes are.