A host aggregates tools from two connected servers, and each server exposes a tool named search. What disambiguation approach does the specification recommend?
Select an answer to reveal the explanation.
Short Explanation
Two tools named search is like two coworkers named Sam: you add a last name. The client picks its own server tag for that, because serverInfo names aren't guaranteed unique. That's the trap here.
Full Explanation
Tool name uniqueness is scoped to a single server. The tools specification notes that clients or proxies aggregating tools from multiple servers may encounter naming collisions, for example two servers each exposing a search tool, and SHOULD implement a disambiguation strategy such as prefixing tool names with a server identifier. The client or host chooses that identifier, for instance from its own configuration for each connection. Using the serverInfo name is specifically discouraged: the specification says the server name from serverInfo is not guaranteed to be unique across servers and SHOULD NOT be relied upon for disambiguation, and it is self-reported in any case. Rejecting the second server misreads the rule, because names SHOULD be unique only within a server and a collision across servers is expected and legitimate. Asking a server to rename its tool assumes a global registration step that the protocol does not have; there is no central authority that enforces tool name uniqueness. Exam caveat: tool names SHOULD be 1 to 128 characters using letters, digits, underscore, hyphen and dot, so a chosen prefix and separator should keep the combined name within those rules. Operational check: list the tools the host presents to the model and confirm both search tools appear under distinct prefixed names that map back to the correct client.