A server's server/discover result declares the tools capability. What does this declaration commit the server to?
Select an answer to reveal the explanation.
Short Explanation
Declaring a capability is like hanging an 'open' sign: you're promising to serve anyone who asks about that feature. Advertise tools and you must answer tools/list. Notifications are a separate, opt-in deal the client has to ask for.
Full Explanation
Capabilities tell each party which features the other supports. The tools specification states that servers supporting tools MUST declare the tools capability, and that servers which declare it MUST respond to tools/list requests with the set of tools currently available to the requesting client. The set may be empty and may change over time, but it must not vary per connection or as a side effect of other requests, although it may vary with the authorization presented. Pushing change notifications to every client misstates the model: listChanged only indicates that the server can deliver tool list change notifications, and they reach only clients that open subscriptions/listen with toolsListChanged. No rule requires a read-only tool; annotations are optional hints and say nothing about what the capability obliges. Clients do not declare a tools capability, because tools are a server feature; client capabilities cover features such as elicitation. Exam caveat: declaring tools with an empty list is legal, which surprises candidates who assume a capability implies at least one item. Operational check: call server/discover, note every declared server capability, and confirm the matching list method for each one returns a valid result rather than a method-not-found error.