Multi-agent systems: how to fix AI agent degradation
The growing-agent trap
You build an AI agent. You connect your first MCP server — say, for working with a calendar. Everything works great: the agent understands requests clearly, calls the right functions with the right parameters, answers to the point. You are thrilled.
Then you connect a second server — for email. Still not bad, but sometimes the agent confuses parameters: it tries to send an email using the calendar's date format. Fine, you tweak the prompt.
Third server — CRM. Fourth — knowledge base. Fifth — payment system. And that's where the chaos begins.
What exactly breaks
The problem isn't the number of tools per se. The problem is that every tool brings its own context, its own rules, and its own expectations — and all of it gets dumped into a single system prompt for a single agent.
Here are the concrete symptoms you start to notice:
Format conflicts
One tool requires the response strictly as JSON, untouched — for example, a billing API. Another assumes free interpretation — say, a knowledge base where you need to retell what was found in your own words. The agent starts either "retelling" JSON or dumping raw knowledge-base data without any processing.
Wrong tool selection
The user asks "what's my balance?" — and instead of going to the payment system, the agent reaches into the CRM, because there's also a "balance" field there, except it's a loyalty balance.
Parameter pollution
The agent calls the right tool but fills in parameters from another tool's context. It passes the user's email where an order ID is required, because both look like an "identifier string."
The pattern you're not noticing
Now stop and think: at what moment does the user reach for each of your tools?
A user asking about a payment almost never asks, in the same request, to plan their day. Someone searching the knowledge base isn't simultaneously checking sales analytics.
💡 The key idea
Tools aren't called chaotically. There's always a pattern — specific tools are used together in specific scenarios. Even better, those scenarios cluster naturally.
До: Хаос
После: Порядок
Once you see those clusters, it becomes obvious: your agent is internally performing several business functions. And each of them could run autonomously.
The solution: divide and conquer
Each tool group becomes a separate agent with its own prompt, its own rules, and its own limited set of tools. The billing agent only knows about billing. The planner agent only knows about the calendar and email. No context conflicts, no parameter pollution.
But a logical question arises: if I split one agent into several, how will the user actually talk to them? You can't make them choose which agent to address.
And here the answer is obvious — an orchestrator agent. A separate agent whose only job is to figure out what the user wants and route the request to the right specialist.
✅ Benefits of the architecture
- • Each agent gets a compact, focused prompt — and therefore follows instructions better
- • Each agent only sees its own tools — and therefore doesn't mix up parameters
- • You can change, test, and scale each agent independently
Two types of multi-agent systems
I've come to see two fundamentally different approaches to organizing multi-agent systems. The choice between them depends on how tightly your agents need to be connected to one another.
Linear system (routing)
The simplest variant. Every user request meets a router agent, which determines the category and forwards the entire request to one specific agent. One request — one agent. No overlap.
This works well when your agents have nothing to do with each other. For example, a simple personal assistant: you have a planner agent and a workout-program agent. When you ask for a workout plan, you probably don't care what's on your work calendar. Router classified it — workouts, forwarded the request — got the answer. Done.
Pros
- • Simple to implement
- • Predictable behavior
- • Fast response (a single call)
- • Low cost
Cons
- • Agents live in isolation
- • They can't exchange data
- • No coordination between agents
Recursive system (orchestration)
Things get more interesting here. The orchestrator isn't just a router — it's a full-fledged agent that can call subordinate agents as many times as it deems necessary. It can gather information from one agent, use that to call another, and only then produce the final answer.
Take the same personal-assistant example. The user asks: "Plan my day." In a linear system, the request would go to the planner — and that's it. But in a recursive system, the orchestrator can first ask the workout agent: "What's today's workout?" Get the answer: "Heavy leg day, about 90 minutes." And then, armed with that, ask the planner: "Build a daily plan, accounting for a heavy workout from 6:00 to 7:30 PM — the user will need rest afterwards."
🎯 Outcome
The day's plan now accounts for physical load: a light dinner and rest after the workout, not urgent work tasks. The quality of the answer is on a fundamentally different level.
How to choose?
| Характеристика | 🔀 Линейная (роутинг) | 🔄 Рекурсивная (оркестрация) |
|---|---|---|
| Сложность | Низкая | Средняя-высокая |
| Скорость ответа | Быстро (1 вызов) | Медленнее (N вызовов) |
| Стоимость | Дешевле | Дороже (больше токенов) |
| Связь между агентами | Нет | Да |
| Качество сложных задач | Базовое | Высокое |
| Когда использовать | Агенты независимы | Агенты дополняют друг друга |
Линейная подойдёт для:
- • Бот техподдержки
- • FAQ-помощник
- • Маршрутизация тикетов
- • Простой личный ассистент
Рекурсивная подойдёт для:
- • Планирование с учётом контекста
- • Сложные бизнес-процессы
- • Аналитические задачи
- • Персональные рекомендации
📋 A simple rule
If your agents never need information from each other — go linear. If the result of one agent can affect another's work — go recursive.
In practice, many teams start with a linear system and move to a recursive one as scenarios grow more complex. That's a perfectly normal path.
Try it yourself
Multi-agent systems aren't a buzzword from research papers. They're a practical tool that solves a concrete problem: quality degradation as an agent scales up.
By splitting one overloaded agent into several specialized ones, you gain predictability, quality, and the ability to evolve each component independently.
Build your first multi-agent system on Assemblix — a visual builder with ready-made routing templates.
See the step-by-step guide on building an agent with subagents.
Start for free →📢 Subscribe to the Assemblix Telegram channel — case studies, updates, production insights, and announcements of new articles