Overview
This changelog tracks all notable changes to MCPJam Inspector. We follow Semantic Versioning and keep our changelog in the spirit of Keep a Changelog.Latest Releases
2026-09-26
Changed
-
Swarms now say when a session never ran, and why — a swarm session whose attempt ended before it recorded a single message tested nothing about the server under test. Every surface that shows such a session now says so explicitly instead of inferring something from the absence of a transcript.
- Sessions detail: the pane says This session didn’t run with the refusal the attempt recorded, worded the way the Run tab words it. The judge request and the promote affordance are not shown — there is no conversation to grade or turn into a test case.
- Sessions list and Findings drawer: a Didn’t run tag appears in place of an empty preview, so a refused session no longer reads like an ordinary session that said nothing.
- Findings summary: a Why sessions didn’t run block names the most common refusal reason beside the existing session count. A goal whose sessions never ran no longer reads “No session evidence available” — it reads “No session launched for this goal, so nothing about the server was tested.”
- Insights: when every session in a wave never ran, the flow reads These sessions didn’t run instead of waiting on or analyzing sessions that have nothing to read. When only some sessions ran, a note beside the drawn flow counts the ones that didn’t.
2026-09-25
Fixed
- Swarm run session metrics now reflect the run, not the whole project — the session metrics strip on a run’s Sessions tab was aggregating every swarm session in the project instead of the sessions belonging to that run. Session count, tool error rate, latency, and token tiles now describe the run you are looking at. The top-level Sessions tab is unchanged and continues to show project-wide or persona-scoped metrics.
2026-09-24
Changed
- Swarm Findings tab ends at the persona cards — the “Fix in your MCP server” and “Agent and prompt” actionable-findings list that previously appeared below the persona cards is no longer shown on a swarm’s Findings tab. The summary card and the persona cards are unchanged. The same list continues to appear on individual eval run detail pages.
-
Each session chip on the goal card now shows one status — the chip previously printed an execution state and a goal result side by side (for example, “Broke” next to “Goal result: Failed”), which read as two verdicts on one session. It now shows exactly one of three statuses:
- Goal passed (green) — the judge or rubric passed this session.
- Goal failed (red) — the judge or rubric failed this session. A session that broke after the judge failed it reads “Goal failed”, not “Broke”.
- Did not run (yellow) — the session never produced a conversation: it was rate-limited, withdrawn before any messages were exchanged, or broke with no transcript. A session that broke partway through a conversation is never “Did not run” — it ran, and the judge may still grade its transcript.
-
Session chip no longer shows an evaluator fraction — the chip previously printed
N/M evaluators passed. With no rubric configured, this printed0/0 evaluators passedon most cells, implying the session was graded against an empty rubric. With a rubric it duplicated information already in the card header. The fraction is removed; the card header still names how many evaluators the goal has. -
Run status chip says “grading” while grades are pending — the
latest:chip on a goal card previously read “running” even after all sessions had finished executing and were only waiting on grades. It now reads grading in that state, matching the label the run detail panel already used. - Results matrix heading renamed — the section heading above the session chips reads Results instead of Sessions.
- Target name omitted from chips inside a filtered matrix — when the goal card is filtered to one target, the session chips no longer repeat the target name (the column header above them already names it). The name is still present in each chip’s accessible label. In the run detail view, which shows multiple targets side by side, the name continues to appear in each chip.
2026-09-22 (2)
Changed
-
The API calls things what the product calls them — three nouns the API never carried over from the UI are renamed:
scenariois now study,journeyis goal, andwaveis swarm run. The operation names, the routes, the SDK types and the noun-bearing response fields all move with them, andsessionsPerTargetbecomesiterationson the same terms. The API is still in preview, which is what makes a rename free; after general availability it would have cost a/v2. Nothing is removed. Every operation is still exported and still executable under its old name, with its old input and its old response shape, calling its own old route — they are simply absent from the advertised catalogs, so no surface offers one. Every old route still answers, with its original field spellings and aDeprecation: trueheader naming its successor. A request that mixes the two vocabularies is refused rather than guessed at. Both go at general availability, with a changelog entry of their own before they do.Two reads became one:get_scenarioserved a study’s execution settings andget_user_testing_scenarioserved its environment id and insights envelope.get_studyreturns both, and the two caller-dependent fields are absent rather than null when you may not have them. One behaviour change rides with it:get_studyis no longer offered to the in-app assistant, because the merged read carries an envelope that quotes real visitors. A few operations kept their names and so have no deprecated twin to hold the old field spellings.get_swarms_overview,create_swarmandupdate_swarmemit both and accept either — never both in one request — until general availability. -
Renamed VALUES negotiate, behind
x-mcpjam-api-vocabulary— a name can move behind an alias; a value cannot.sourceTypeis one field with one string in it, and a client switching on"scenario"has no second name to fall back to. Sendx-mcpjam-api-vocabulary: 2and a session’ssourceTypereadsstudy, itsparentRef.kindreadsstudyorgoalRunwith its id fields re-keyed to match, a share’sresourceTypereadsstudy(as a path segment too), and a trace destination’ssourceTypesreadsstudy. No header means vocabulary 1, byte-for-byte today’s values; any other value is a400; a response that varies sendsVary. ReadGET /projects/{id}/capabilities— the newapiVocabularyblock — before sending it. In the SDK:new PlatformApiClient({ apiVocabulary: 2 })orclient.withApiVocabulary(2). This is a separate header fromx-mcpjam-eval-vocabulary, which is eval-scoped by name and moves on its own schedule; a deployment may speak one and not the other. -
mcpjam cloud studiesandcloud goals— the CLI groups follow the nouns.cloud scenariosandcloud user-testingmerge intocloud studies, andcloud journeysbecomescloud goals; all three old names still work as aliases.--study,--goal-id,--swarm-runand--iterationsare the flags, with--scenario,--journey,--waveand--sessions-per-targetkept beside them. Passing both spellings of one flag is refused rather than resolved by precedence — they configure spend.
2026-09-22
Changed
- Swarm Confirm now names the target for every swarm, including reuse-only ones — the Runs on … line previously appeared only when a swarm had newly authored goals. A swarm built entirely from existing personas now shows the same line, so the launch target is visible before you approve the spend.
- Swarm Confirm shows a move notice when reused goals will run somewhere new — if a persona’s goals were authored against one target and this launch will run them against a different one, Confirm lists how many goals are affected and what they were written for. The notice adds a Different client. or Different server group. callout when the move crosses those boundaries, and a note that the goals were written for another server’s tools when the server group changes.
-
Duplicate environment names are disambiguated with a
#nsuffix — when a project has two environments with the same name, both the environment picker and the Confirm screen append#1,#2, and so on. The suffix is stable and keyed to the environment’s identity, not its position in a list, so the same number appears on every screen that names the environment. - Session flow columns can now be reordered and hidden — drag any column header in the Session flow Sankey to move it next to a different neighbor. Click the × on a column header to hide it, and use the + menu at the end of the header row to restore hidden columns or add a new yes/no question. Column order and visibility are saved per surface in the browser so the layout persists across page loads.
- Adding a yes/no question opens a modal — clicking Add question in the Session flow now opens a dialog instead of an inline form in the column header. The dialog has labeled fields for the column label and the yes/no question text.
- Session flow chart scrolls under sticky column headers — the column headers are now a sticky HTML row above the chart rather than text inside the SVG. The chart scrolls horizontally under them, so headers stay readable while you pan through a wide diagram with many columns.
- Each question column gets its own color — yes/no question columns each use a distinct hue instead of sharing the foreground color. The hue is pinned to the question’s identity, not its position, so dragging a column does not change its color.
- Freshness chip removed from the Session flow header — the analysis-freshness indicator is no longer shown in the Session flow panel header.
- User Testing says “study” everywhere — the rename was half-applied: the create flow, share dialog, overview empty state and task editor already said study, while the list header, detail page, share section, preview pane and every not-found, sign-in and loading state still said scenario. All of it now reads study, including the tester-facing screens a visitor sees before they ever reach the chat. Nothing else moved: URLs, share links, API fields and error codes are untouched, so no link anyone holds and no integration anyone wrote is affected.
- Swarms copy finishes its own rename — the few remaining places that said journey or wave in prose now say goal and swarm run, matching what the rest of the surface has called them for months.
2026-09-18
Changed
- Swarms can now pick models — the Describe step’s environment composer now includes a Models slot, matching the Evals composer. Selecting clients × models creates one target per pair (unnamed and deduplicated), and the existing target cap still applies.
- Targets are validated before persona generation — clicking Continue in the swarm wizard now checks each resolved target against the same launch rules used at run time, before any persona generation or durable writes. If a client has no model configured, the wizard blocks with an Edit client link that opens the client inside the project so the draft is preserved. Other launch-blocking conditions (unavailable plugins, stale configs) are caught the same way.
-
Run failure banner shows one line per cause — when a swarm run ends with multiple failure causes, the banner now lists each cause once with a session count (
10 sessions: Protocol mismatch). The banner’s tone (amber for rate-limited or retriable, red for hard failures) is set by the most serious cause. Account-limit sessions continue to appear in the existing limit callout rather than the banner, so each cause is stated exactly once. -
Protocol tab warns on unadvertised stateless pins — pinning a client to
2026-07-28when none of its servers advertise that version now shows a warning noting that the pin requires servers that offer this revision and has no legacy fallback. Previously, this pin was silently accepted with no warning. The warning for unadvertised stateful pins (which fail at save) is unchanged. -
Per-server protocol override shows unknown stored pins correctly — if a server has a stored protocol override that is not one of the named dropdown options, the picker now shows it as
Pinned (…)instead of displaying it as Client default.
2026-09-17 (2)
Added
- Sign-in gate for account-required User Testing links — User Testing share links that require an account no longer show “Link Unavailable” for signed-out visitors. Instead, a sign-in screen appears with Sign in and Create an account buttons. After signing in, you are returned to the original scenario link automatically. Previewing a scenario from this gate does not start a test. Signed-in visitors still need the audience permission the scenario owner configured. Guest-permitted scenarios remain accessible without signing in.
- “Anyone with the link who is signed in” sharing label — the sharing dialog now distinguishes between guest-permitted and account-required links. When a scenario requires sign-in, the access option reads Anyone with the link who is signed in and the note below the link reads “Testers must sign in or create an account to preview and test this scenario.” Guest-permitted scenarios continue to show the existing “Anyone with the link (guests included)” label.
- Switch accounts button on access-denied screens — when a signed-in user opens a scenario they don’t have access to, an additional Switch accounts button appears alongside the existing Sign in button. Clicking it signs out and returns to the scenario link so you can sign in with a different account.
2026-09-17
Changed
- Ask MCPJam is now on MCPJam — turns in the Ask MCPJam panel, and the web searches the agent runs, no longer consume your organization’s credits or its free daily allowance. You do not need credits or a paid plan to use the agent; signing in is enough. Playground chat, evals, and swarms are unchanged and still spend your credits or your own API key. The out-of-credits dialog no longer opens from the agent panel, because there is no balance involved to top up. The same applies to the agent in Slack and Discord.
- The agent runs on a fixed model — Ask MCPJam no longer follows the model selected in the Playground. It runs on a model MCPJam chooses, so switching the Playground to a frontier or BYOK model no longer changes what the agent uses. There is no agent model picker; the Playground picker is unaffected.
- Two new agent limits, neither of which credits can lift — after a large number of turns in one UTC day, or when MCPJam’s own daily budget for the feature is spent, the panel shows one line: “Ask MCPJam has reached today’s limit. It resets at 00:00 UTC.” An infrastructure problem on our side shows “Ask MCPJam is temporarily unavailable.” Neither offers to sell credits, and nothing is charged in either case.
- Swarm Run tab session rows are now colored by goal result — each session chip in the live persona × client matrix is filled by the graded goal result rather than the execution outcome. A passed goal is green even if execution broke; a failed goal is red even if the run completed normally; an inconclusive grade is yellow. A session whose grading is still in progress stays the primary accent color. (The chip’s single-status display was further refined in the 2026-09-24 release.)
-
Live pane no longer shows goal result, value chain, or advisory copy — while a run is in progress, the session detail pane no longer displays a
Goal result:line, aUser value chaindisclosure, or advisory check rows. Chat and Trace sit directly under the session header. The Sessions tab still shows the fullSwarmSessionReportdetails for a selected completed thread. - “Rebuild clusters” and cluster tuning controls are temporarily hidden — the voluntary Rebuild button and the Balanced cluster tuning control are no longer shown in the Session flow and Topic map panels. Analysis still runs automatically for User Testing scenarios, and error recovery (Retry) remains available when a run has failed or is stuck. The controls will return in a future release.
- Shared session threads now render MCP App widgets live — when viewing a shared usage thread, MCP App tool calls now render as full interactive widgets instead of static placeholders, matching the experience in the Playground and swarm session viewer.
- Swarm run Sessions tab no longer shows project-wide session metrics — the session metrics strip (session count, tool error rate, latency, tokens) was hidden when the Sessions tab was scoped to a specific run. The strip continues to appear on the top-level Sessions tab where it reflects the full project or persona scope. (This was a temporary workaround; the strip was restored with correct run-scoped metrics in the 2026-09-25 release.)
2026-09-16
Changed
-
Swarm run detail now has a Run tab with the live persona × client matrix — opening a swarm run at
/swarms/:idwhile a wave is in progress lands on a new Run tab that shows the same persona × client matrix and session stream previously only visible in the create wizard. The tab stays reachable via?tab=runafter the wave settles, so you can always return to the matrix. A still-running wave with no explicit?tab=opens Run automatically; a finished wave still defaults to Findings. -
Settled outcome moved to the header; the separate Complete strip is gone — once a wave finishes, the outcome chip (Complete / Stopped / Failed) and the session tally (
N of N) appear in the header row before the Share button instead of on a second status bar below the tabs. The tab strip is no longer obscured by the strip on narrow viewports. -
?tab=is always present in the URL — navigating to any tab, including Findings, now writes?tab=findings(or?tab=run,?tab=insights,?tab=sessions) to the URL. Share links copied from the run detail page include the active tab.
2026-09-15
Changed
- Session transcripts now match the Playground’s visual style — session transcripts (User Testing, Swarm, Scenarios) no longer show a generic chat-bubble icon in front of every assistant response, matching the Playground renderer which has never drawn one. JSON payloads in session transcripts are now syntax-highlighted with the same colors the Playground uses — keys, strings, numbers, booleans, and null each get a distinct color. Plain text, stack traces, and payloads over 100 KB render as uncolored monospace. Both changes apply wherever a session transcript appears; no configuration is required.
- Sessions now shows tool payloads in the Playground’s collapsible JSON tree — tool input and output in session transcripts (User Testing, Swarm, cross-surface Sessions) are now displayed in the same interactive tree the Playground uses, instead of a plain preformatted block. Objects and arrays collapse, deep payloads open two levels and stop, long strings truncate with a control to see the rest, and every node has its own copy button — so pulling one id out of a tool result is a click rather than a select-and-trim.
-
Session tool cards now match the Playground’s card shell — a session transcript was showing tool calls differently from the Playground tab. The card in sessions now has the same header row (MCP mark, mono tool name, call state, chevron), and the same
INPUT/RESULTheadings over capped payload boxes. The whole card collapses and starts collapsed, so a transcript reads as a conversation rather than a wall of JSON. A failed call opens itself automatically — an error is the reason you opened the session, not something to put behind a disclosure. - Raw tab scroll edges fade like the Chat tab in User Testing — the Raw pane in a User Testing session detail now softens its top and bottom edges as you scroll, matching the Chat tab’s behavior. A hard edge that cuts a line mid-token no longer reads as a rendering glitch.
-
Detail-page back button is a raised control — the back link on User Testing study detail and Swarm run detail pages is now a raised pill button (
h-8,rounded-lg) matching the Edit and Open preview controls on the same row. On hover the arrow glides toward the left and the label darkens.
2026-09-14
Changed
- Selecting a stage in Findings now opens that stage’s sessions — on the Findings tab, clicking a stage in the user value chain (Connection → Discovery → Selection → Call → Response → Value) narrows the session list to the sessions that stage is actually about. A passing stage shows the sessions that passed there; a failing or warning stage shows the sessions that failed there. A stage with no verdict leaves the full goal list in place — narrowing there would show an empty list under a header that says the stage was never graded, which would read as “no sessions” rather than “not measured”. The persona’s sentiment filter and the hide-synthetic policy remain active alongside the stage filter, so the narrowed list stays consistent with the count that opened it.
2026-09-11
Added
- “Back to study” exit on the scenario preview surface — when you open a User Testing scenario preview via Open preview, the chat header now shows a Back to study button beside Copy link. Clicking it returns you to the study detail page. The consent dialog’s Leave button on the preview surface also navigates back to the study instead of showing the “You left this session” panel. Share-link visitors are unaffected: they see no Back to study button, and Leave still shows the terminal panel with Rejoin.
2026-09-09
Added
- Findings tab on User Testing scenario detail — opening a User Testing scenario now lands on a Findings tab instead of Insights. The tab groups sessions by how users came across — Gave up, Frustrated, Neutral, Satisfied, or Uncategorized — and lists the goal clusters each group engaged with, ordered worst-first. Expanding a goal shows the per-goal user-value chain (Connection → Discovery → Selection → Call → Response → Value) once stage data is available. Click any goal’s session count to jump to Sessions with the matching transcript pre-selected. Insights and Sessions remain reachable from the tab strip.
Changed
- User Testing scenarios analyze themselves — opening a User Testing scenario’s Findings or Insights tab when sessions exist but no analysis has run now starts the analysis automatically. The “Analyze sessions” button and the “These sessions haven’t been analyzed yet” state are gone; the tab shows an analyzing banner instead and fills in once the run completes. Swarm and Benchmark scopes are unchanged — Swarm already queues analysis when a run settles, and Benchmark flow analysis remains explicitly requested.
2026-09-02
Added
- GPT-5.6 models available with your own OpenAI key —
gpt-5.6-luna,gpt-5.6-sol, andgpt-5.6-terraare now selectable in the model picker under Your providers → OpenAI when you have an OpenAI API key configured. Each model has a 1,050,000-token context window. These models were already available in the free hosted catalog; this change makes them reachable for BYOK users as well.
2026-08-31
Changed
- Public score runner redesign — the score runner landing page has been rebuilt with a new design. After you paste a public MCP server URL and click Score this server, you are now prompted for an email address before the scan starts. The scorecard is delivered to that address once the run completes. The email is preserved across OAuth redirects, so servers that require authorization before scanning still collect it. Legacy OAuth resume records that predate the email step are kept on the email prompt rather than bypassing it. The featured scores section on the landing page now shows real MCP endpoints (Linear, GitHub Copilot, Notion), and each row populates the URL field when clicked. URL examples default to Streamable HTTP at
/mcp.
2026-06-26
Added
- Compatibility destination — a new Inspector page that evaluates your connected MCP server against a catalog of AI hosts (Claude, ChatGPT, Cursor, Copilot, Codex, and others). Shows conformance gates, per-host findings split into Apps and Server lanes, and live widget rendering. Accessible from the left sidebar when a server is connected.
- OTLP/OpenInference trace export — export eval run traces as OTLP JSON from the run detail page. Compatible with Arize Phoenix, Datadog, and any OTLP-compatible observability backend. Supports exporting a single run or the whole project, with an opt-in to include content and artifacts.
-
@mcpjam/sdk/host-compatsubpackage — the shared host-compatibility engine is now importable directly. UsederiveServerRequirements,evaluateHostCompat,evaluateAllHosts,scanWidgetSource, anddetectHostCompatBridgeFromMetato build your own compatibility checks in CI or custom tooling.
Version 1.1.0
Improved
- Code Quality
- Improved code consistency and maintainability
Recent Updates
Added
-
VS Code and Notion market hosts (
@mcpjam/sdkminor)- VS Code (GitHub Copilot chat panel) is now a market host in the SDK’s host-compat catalog. It renders MCP UI inline and supports all display modes (
inline,fullscreen,pip). Capabilities mirror the VS Code client template;updateModelContextandmessageare not advertised. Provenance: probe. - Notion is now a market host. It is a tools-only/headless client (no widget rendering) that supports protocol version
2025-11-25. Provenance: probe. - Both hosts are available via
buildMarketHostProfiles()/evaluateMarketHosts()and carry logos in the inspector’s host-compat UI.
- VS Code (GitHub Copilot chat panel) is now a market host in the SDK’s host-compat catalog. It renders MCP UI inline and supports all display modes (
-
imageSupportdimension on all market hosts (@mcpjam/sdkminor)- Every market host now carries an
imageSupportfield on itsHostCompatProfiledescribing how it handles MCP tool-result images. - Three image sources are tracked per host:
toolImageContent(direct MCP image blocks),embeddedResourceImages(image blobs inside MCP resources), andresourceLinkImages(image links resolved viaresources/read). - Each source records
model(whether the image is passed to the model) andui(whether the host UI renders it). - A single
placementvalue ("inline"|"collapsed"|"none") describes where rendered previews appear in the host UI. - New exported types:
HostImageSupport,ImageSourceSupport,ImagePlacementfrom@mcpjam/sdk/host-compat. - New capability matrix:
MCP_APPS_VSCODEexported from@mcpjam/sdk/host-compat.
- Every market host now carries an
Changed
- Stateless MCP protocol version updated to
2026-07-28RC- The stateless transport protocol version has been updated from the retired
DRAFT-2026-v1placeholder to the upstream RC literal2026-07-28, matching the canonical pin inmodelcontextprotocol/main. - The protocol version picker in the inspector UI now shows Latest (2025-11-25) and 2026 RC (2026-07-28) instead of “Latest” and “Draft”.
- The SDK constant
STATELESS_DRAFT_2026_V1has been renamed toLATEST_STATELESS_PROTOCOL_VERSIONand now equals"2026-07-28". - Migration required: If you had servers pinned to
DRAFT-2026-v1, you must re-select the protocol version in the inspector UI. StoredDRAFT-2026-v1pins are rejected by spec-conforming servers with a-32004 UnsupportedProtocolVersionError.
- The stateless transport protocol version has been updated from the retired
Added
-
OAuth Protocol 2025-03-26 Support
- Added support for original MCP OAuth specification (2025-03-26)
- Direct RFC8414 discovery from MCP server base URL with fallback endpoints
- PKCE required for all clients
- DCR and pre-registered client registration strategies
-
OAuth Debugger Enhancements
- Edit Config button to modify server settings without reconnecting
- Copy logs feature with guide and raw formats for debugging
- Deprecated transport detection with migration guidance for HTTP+SSE servers
- RFC 8707 compliant resource URL canonicalization
-
GPT-5 Model Support
- Added support for GPT-5 model variants:
gpt-5,gpt-5-mini,gpt-5-nano,gpt-5-chat-latest,gpt-5-pro,gpt-5-codex - Organization verification notice for GPT-5 access
- Added support for GPT-5 model variants:
Improved
-
OAuth Flow
- Refined diagram focusing and zoom behavior for better step visualization
- Improved error handling for expected 4xx responses during transport detection
- Enhanced header merging in OAuth state machines across all protocol versions
-
Error Handling
- Enhanced streaming error handling in chat interface
- Errors now display as inline alerts instead of failing silently
- Better error messages from AI providers
Version 1.0.0
Added
-
MCP Server Connection Management
- Support for STDIO, SSE, and Streamable HTTP transports
- Multi-server connection support
- Real-time connection status monitoring
-
LLM Playground
- OpenAI integration (GPT-3.5/4)
- Anthropic Claude integration (Claude 2/3)
- DeepSeek AI support (DeepSeek R1)
- Ollama local model compatibility
- Interactive chat interface with streaming responses
-
Tools & Resources Testing
- Tool execution and validation
- Resource schema verification
- Prompt testing interface
- Real-time parameter validation
-
OAuth 2.0 Testing
- Guided OAuth flow setup
- Token management
- Scope verification
- Refresh token handling
-
MCP Evals
- Automated compliance testing
- Custom evaluation framework
- Test result reporting
- Performance benchmarking
-
Developer Tools
- Comprehensive logging system
- Request/response tracing
- Error reporting and analysis
- Performance monitoring
Improved
- Enhanced UI/UX with modern design
- Better error messages and debugging support
- Optimized performance for large MCP responses
- Improved documentation and examples
Fixed
- Various bug fixes and stability improvements
- Memory leak fixes in long-running sessions
- Edge cases in MCP protocol handling
Coming Soon
We’re working on:- Enhanced evaluation templates
- More LLM provider integrations
- Advanced debugging tools
- Performance analytics dashboard
Stay Updated
- Follow our GitHub repository for the latest updates
- Join our Discord community for announcements
- Check our website for release notes

