From 64e454e35c23c473e1fcf1e1c3a6f623260ca773 Mon Sep 17 00:00:00 2001 From: "Tony Dzi (Anton Dziatkovskii)" Date: Thu, 13 Aug 2026 10:49:56 +0200 Subject: [PATCH] docs: fix four dead links to the Multi Round-Trip Requests section (#1159) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What was broken Four links in `docs/client.md` point at a section that does not exist. Three of them sit right where a reader needs them — at the end of the **Roots**, **Sampling** and **Elicitation** sections, on the sentence explaining that from protocol version `2026-07-28` these requests are delivered via the Multi Round-Trip Requests pattern: ``` [Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) ``` `protocol.md` has no MRTR section. Following the link drops you at the top of a page that never mentions the pattern — while the explanation you were promised is one screen further down the *same* page you were already on (`client.md` → *Multi Round-Trip Requests*). The fourth one is in that MRTR section itself, sending you to the server side: ``` [server-side documentation](server.md#multi-round-trip-requests-mrtr). ``` `server.md` does have the section, but its heading is `## Multi Round-Trip Requests`, so the slug is `#multi-round-trip-requests` — the trailing `-mrtr` is stale. ### How I checked Against the published site, not just the source: ``` $ curl -sL https://go.sdk.modelcontextprotocol.io/protocol | grep -o 'id="[^"]*round[^"]*"' # (no output) $ curl -sL https://go.sdk.modelcontextprotocol.io/client | grep -o 'id="[^"]*round[^"]*"' id="multi-round-trip-requests" $ curl -sL https://go.sdk.modelcontextprotocol.io/server | grep -o 'id="[^"]*round[^"]*"' id="multi-round-trip-requests" ``` So `/protocol` carries no anchor containing `round` at all, and both live targets use the plain slug. `git log -S` says the links arrived with b9e6fc5 ("mcp: add documentation for new protocol version", #1019, 2026-06-23) and that `protocol.src.md` has never contained a `Multi Round-Trip Requests` heading — the section landed in `client.src.md` and `server.src.md` instead, and these four references were never repointed. I also ran a small link/anchor checker over `docs/`: 4 bad anchors before, 0 after. (Two "broken links" it also reports in `server.md` are its own false positives — Go generics inside a fence, `jsonschema.For[WeatherInput](opts)`, read as markdown link syntax. Not touched.) ### What it is now The three per-feature links become same-page references, matching how `client.md` already links its own sections (`(see [Capabilities](#capabilities))`): ``` [Multi Round-Trip Requests](#multi-round-trip-requests) ``` and the cross-page one drops the stale suffix: ``` [server-side documentation](server.md#multi-round-trip-requests). ``` Change is in `internal/docs/client.src.md`; `docs/client.md` regenerated with `go generate ./...`, both committed together. Locally `go generate ./...` leaves the tree clean afterwards, which is what `docs-check` asserts. Docs-only, four link targets, no prose and no code paths touched. --- Assisted-by: Claude Opus 5 — this PR was drafted and verified by Anton's AI cofounder running on his account; every command and output above is from a real run on this machine, not a reconstruction. Co-authored-by: tonydzi --- docs/client.md | 8 ++++---- internal/docs/client.src.md | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/client.md b/docs/client.md index 13169d6..fe9a963 100644 --- a/docs/client.md +++ b/docs/client.md @@ -38,7 +38,7 @@ method. To receive notifications about root changes, set [`ServerOptions.RootsListChangedHandler`](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk/mcp#ServerOptions.RootsListChangedHandler). For protocol versions `2026-07-28` and later, `ListRoots` requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. ```go @@ -113,7 +113,7 @@ This function is invoked whenever the server requests sampling. For protocol versions `2026-07-28` and later, sampling requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. ```go @@ -183,7 +183,7 @@ you must declare that capability explicitly (see [Capabilities](#capabilities)) For protocol versions `2026-07-28` and later, elicitation requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. ```go @@ -268,7 +268,7 @@ For legacy (`<= 2025-11-25`) servers, the SDK transparently sends server requests on the legacy server-initiated channel; the MRTR machinery is a no-op in that direction. For legacy clients talking to MRTR-style servers, the server SDK applies the inverse compatibility shim — see the -[server-side documentation](server.md#multi-round-trip-requests-mrtr). +[server-side documentation](server.md#multi-round-trip-requests). ## Capabilities diff --git a/internal/docs/client.src.md b/internal/docs/client.src.md index 6d14ee9..5c4b8f9 100644 --- a/internal/docs/client.src.md +++ b/internal/docs/client.src.md @@ -30,7 +30,7 @@ method. To receive notifications about root changes, set [`ServerOptions.RootsListChangedHandler`](https://pkg.go.dev/github.com/modelcontextprotocol/go-sdk/mcp#ServerOptions.RootsListChangedHandler). For protocol versions `2026-07-28` and later, `ListRoots` requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. %include ../../mcp/client_example_test.go roots - @@ -57,7 +57,7 @@ This function is invoked whenever the server requests sampling. For protocol versions `2026-07-28` and later, sampling requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. %include ../../mcp/client_example_test.go sampling - @@ -79,7 +79,7 @@ you must declare that capability explicitly (see [Capabilities](#capabilities)) For protocol versions `2026-07-28` and later, elicitation requests are delivered via the -[Multi Round-Trip Requests](protocol.md#multi-round-trip-requests-mrtr) +[Multi Round-Trip Requests](#multi-round-trip-requests) pattern. %include ../../mcp/client_example_test.go elicitation - @@ -117,7 +117,7 @@ For legacy (`<= 2025-11-25`) servers, the SDK transparently sends server requests on the legacy server-initiated channel; the MRTR machinery is a no-op in that direction. For legacy clients talking to MRTR-style servers, the server SDK applies the inverse compatibility shim — see the -[server-side documentation](server.md#multi-round-trip-requests-mrtr). +[server-side documentation](server.md#multi-round-trip-requests). ## Capabilities