5d3ec1b439
When the MCP server returns a list where one entry cannot be deserialized (e.g. a tool missing the required `name` field), the previous code called `.unwrap_or_default()` on the whole-list deserialization, silently discarding every valid entry in the page. Switch all four discovery functions (tools, resources, resource-templates, prompts) to iterate over the JSON array and deserialize each item individually, skipping only those that fail. This ensures a single non-conformant entry never hides the rest of the list. Related: #1250