The MCP catalog on the MCP page, editable gateway instructions, and a usage explorer backed by exact meter readings
The MCP catalog is now a tab on the MCP page next to MCP Servers, Sources, and Deployments, and catalog entries show up in the command palette as you type, in their own group so a server you could add is never mistaken for one the project already runs. Gateway instructions, the guidance every connected client receives, are editable from the gateway's settings. The billing explorer reads exact daily meter totals for stored-message tokens, MCP ingress and egress bytes, and risk-scanning volume, separate from invoice estimates. Remote sessions also become more self-healing: expired dynamic client registrations are re-registered in place, idle credentials are re-checked on a keepalive sweep, and drifted issuer metadata is refreshed as soon as an upstream answer reveals it.Features
- MCP catalog on the MCP page and in the command palette #6411 - The catalog lives at
/mcp/catalogas a tab beside MCP Servers, Sources, and Deployments, with the same add-from-catalog flow. The old/catalog,/sources/add-from-catalog, and/mcp/add/catalogroutes redirect there, and "From the catalog" on the Add MCP server page still leads to it. Typing in the command palette surfaces catalog entries in an "MCP Catalog" group kept separate from "MCP Servers". (Author: @simplesagar) - Usage explorer backed by exact meter readings #6370 - The billing explorer reports stored-message tokens, MCP ingress and egress bytes, and risk-scanning volume from the additive
usage.getMeterUsageAPI, which returns exact integer daily totals and bounded facet breakdowns for UTC-midnight windows up to three calendar months, ordinary usage only. Totals, daily averages, chart axes, and breakdowns use compact KTok, MTok, and BTok or binary KiB, MiB, and GiB units with full values on hover, project breakdowns show slugs where available, and contract-position and invoice estimates stay independent. Self-hosted API deployments must configure the dedicatedCLICKHOUSE_READ_*connection with a SELECT-only reader before rolling this out; meter reporting never falls back to the writer connection. Existing readings are not backfilled. (Author: @disintegrator) - Editable gateway instructions #6410 - The gateway settings tab gains an Instructions section pre-filled with the built-in drill-down guidance. Custom text replaces those defaults, saving it blank restores them, and the
metaMcpupdate endpoint accepts the sameinstructionsfield. Connected clients pick up the new text after reconnecting. (Author: @daviddanialy) - Expired dynamic client registrations recover on their own #6341 - Remote session clients record the expiry the identity provider reported at registration. When a provider stops recognizing a client, the platform confirms it against the token endpoint and re-registers the client in place before the next login, revoking sessions bound to the old client. Organization admins can also rotate a client on demand from its settings page. (Author: @bflad)
- Idle remote sessions re-checked on a keepalive sweep #6348 - A grant with no refresh token or refresh expiry is re-verified once its last verdict, or its connection when it has none, is older than the re-check interval, so a revoked credential reads rejected or inactive without anyone opening the consent page. The sweep is paced per issuer host, skips tunneled members whose tunnel is down, and reports under the
keepalivetrigger ongram.remote_session.validation.--remote-session-recheck-interval(GRAM_REMOTE_SESSION_RECHECK_INTERVAL) defaults to 24h; zero or negative disables it. A partial index on the re-check population keeps the claim query off a sequential scan (#6418). (Author: @daviddanialy) - Identity from verified JWT access tokens #6288 - When neither the exchange nor userinfo names an identity, an RFC 9068 JWT access token signed by the issuer's published keys supplies the subject, email, and scopes. JWKS consumers now honor an explicit
key_ops, keeping a key only when it namesverify. (Author: @daviddanialy) - Issuer metadata refreshed when upstream endpoints drift #6337 - A token endpoint answering 404 or 410 on refresh or code exchange, or an ID token signed under a key the issuer's published set lacks, triggers a metadata refresh outside the daily cadence, at most once per issuer every ten minutes. The same applies when a stored userinfo or introspection endpoint answers 404 or 410 without an OAuth error body (#6419). A 404 or 410 carrying an OAuth error body is the endpoint answering, not drift, and an issuer whose last refresh failed definitively waits for the hourly retry. The
gram.remote_session_issuer.metadata_refreshmetric carries the trigger reason. (Author: @daviddanialy)
