A client sends tools/call with _meta io.modelcontextprotocol/logLevel set to "verbose", hoping to see detailed server logs for that request. The server declares the logging capability. How should the server handle the request?
Select an answer to reveal the explanation.
Short Explanation
MCP's log levels come from syslog — debug through emergency — and "verbose" isn't on that menu. An unrecognized level gets -32602. The trap is a server guessing what you meant; and remember, logging itself is deprecated now.
Full Explanation
In 2026-07-28 the client sets the log level per request with io.modelcontextprotocol/logLevel in _meta, replacing the removed logging/setLevel method. Valid levels are the RFC 5424 syslog severities: debug, info, notice, warning, error, critical, alert and emergency. If the value is not a recognized level, the logging specification says the server should reject the request with -32602, Invalid params, so the caller learns that its configuration is wrong. Mapping "verbose" to debug invents behavior the specification does not define and hides a client bug. Ignoring the field and carrying on silently also hides the error, even though a server must emit no notifications/message for a request that omits the field entirely. Delivering logs on a subscriptions/listen stream is prohibited: notifications/message is request-scoped and may only flow on the response stream of the request that set the level. Exam caveat: the Logging feature is deprecated in this revision; it still works during the deprecation window, but new implementations should log to stderr on stdio or use OpenTelemetry. Operational check: send a request with an invalid logLevel and confirm a -32602 error, then send one with "debug" and confirm log notifications arrive only on that request's response stream.