Audit v4 docs: fix missing version badges, fill whats-new gaps (#4668)

* Fix missing/wrong 4.0.0 version badges

* Fill v4 badge and whats-new gaps found in docs audit
This commit is contained in:
Jeremiah Lowin 2026-07-27 15:03:18 -04:00 committed by GitHub
commit cc02df94c5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 45 additions and 2 deletions

View file

@ -589,6 +589,8 @@ Check your server logs for "Client registered with redirect_uri" messages to ide
### Application Type (Web vs. Native)
<VersionBadge version="4.0.0" />
During Dynamic Client Registration, a client may declare an `application_type` (per RFC 7591 and SEP-837) that governs which redirect URIs it is allowed to use. The OAuth proxy honors this field both at registration and when authorizing a redirect.
`application_type` defaults to `"native"` because MCP clients typically run locally and register loopback callbacks. Clients that omit the field keep the permissive behavior described above. A client that explicitly registers as `"web"` is held to the stricter browser-app rules.

View file

@ -368,6 +368,8 @@ def read_record(id: str) -> str:
### Signaling Scope Shortfalls
<VersionBadge version="4.0.0" />
A denial is more useful when it says what would fix it. When `AuthMiddleware` blocks a call because the token is missing scopes — rather than because some other policy rejected it — it raises `InsufficientScopeError`, which carries the specific scopes the caller needs in its `required_scopes` attribute. An agent that reads the error knows exactly which scopes to re-authorize for, instead of retrying blindly against an opaque refusal.
`InsufficientScopeError` subclasses `AuthorizationError`, so existing handlers that catch `AuthorizationError` keep catching it and nothing about your error handling has to change to adopt this.

View file

@ -172,6 +172,8 @@ backend = ProxyClient(
### Tool Results Are Relayed, Not Inspected
<VersionBadge version="4.0.0" />
A proxy passes a backend's tool results through untouched, including results that don't match the output schema the backend advertised. Deciding whether a server honored its own contract belongs to the client consuming the result, and that client validates for itself.
This matters when a backend's declared schema is subtly wrong — an enum missing a variant it actually returns, say. A proxy that enforced the schema would replace the backend's working response with an error of its own, and the client would never see what the backend actually said.

View file

@ -6,6 +6,8 @@ icon: chart-line
tag: NEW
---
import { VersionBadge } from "/snippets/version-badge.mdx"
FastMCP includes native OpenTelemetry instrumentation for observability. Traces are automatically generated for tool, prompt, resource, resource template, and task management operations, providing visibility into server behavior, request handling, and provider delegation chains.
## How It Works
@ -21,6 +23,8 @@ Because FastMCP only depends on the OpenTelemetry API, span creation is a no-op
### Turning Telemetry Off
<VersionBadge version="4.0.0" />
To disable FastMCP's instrumentation entirely, set `FASTMCP_ENABLE_TELEMETRY=false` (or `fastmcp.settings.enable_telemetry = False`). When disabled, FastMCP creates no spans even if an SDK is configured.
## Enabling Telemetry