{"version":"2.1.221","anchor":"tools-list-uses-the-new-client-listtools-path-with-retry-bac","canonical_anchor":"tools-list-uses-the-new-client-listtools-path-with-retry-bac","heading":"tools\/list uses the new client listTools path with retry backoff on modern servers","tier":"internal","area":"MCP","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221\/e\/tools-list-uses-the-new-client-listtools-path-with-retry-bac","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.221","markdown":"### tools\/list uses the new client listTools path with retry backoff on modern servers\n\nTool discovery uses a newer path with retries on servers that negotiate the modern protocol; older servers are unchanged.\n\n**What**\n\nTool discovery has a second code path for servers that negotiated the modern protocol era.\n\n**Details**\n\n- When the connected client reports `getProtocolEra?.() === \"modern\"`, discovery calls `listTools` with `cacheMode: \"refresh\"` and retries retryable failures with a 250\/500\/1000ms backoff, logging each retry.\n- Pagination overruns on that path are recorded as `capped`.\n- Legacy servers keep the previous paginated `tools\/list` walk, which is what everyone gets by default.\n- The large tool-conversion body was factored out of the cached discovery function into a shared helper that both live and cached results go through.\n\n**Evidence**\n\n`tools\/list failed (${de(n)}); retrying in ${o}ms`\n\n- Area: MCP\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 0\/5"}