A server developer reads that servers SHOULD return tools in a deterministic order. Their server occasionally reorders its tool list for an internal reason. How should this requirement be interpreted?
Select an answer to reveal the explanation.
Short Explanation
SHOULD is the spec saying 'do this unless you've got a really good reason not to.' You're allowed to deviate, but you'd better understand what breaks — here, client caching and prompt cache hits. Don't confuse it with MUST, and don't shrug it off as MAY.
Full Explanation
The MCP specification interprets its key words as described in BCP 14, that is RFC 2119 and RFC 8174, when they appear in capitals. SHOULD means there may be valid reasons in particular circumstances to ignore an item, but the full implications must be understood and weighed before choosing a different course. For tool ordering, the tools specification explains the implication: a deterministic order lets clients reliably cache the tool list and improves LLM prompt cache hit rates when tools are included in model context. Reading the rule as absolute treats it as MUST, which would make any reordering non-conformant; that is not what the keyword says. Reading it as purely optional collapses it into MAY, discarding the stated expectation and its rationale. Tying it to a client capability invents a condition; no capability toggles ordering, and the recommendation applies to every tools/list response. Exam caveat: these keywords carry their RFC meaning only in capitals, so lowercase 'should' in explanatory text is ordinary English. Operational check: if the server must reorder, document why, keep the order stable whenever the underlying tool set has not changed, and confirm that repeated tools/list calls on an unchanged server return identical ordering.