Jam Documenation

AI agent debugging a Jam via MCP, with calls to getConsoleLogs, getNetworkErrors, and getUserEvents tools Jam MCP (Model Context Protocol) lets your AI coding tools open a Jam recording and automatically load its full context (video, user events, console logs, errors, and network requests) right where you’re working. Paste a Jam link into any supported MCP client and the context flows directly to your agent. Jam captures console logs, network requests, user events, and your chosen metadata automatically when you record. With MCP, that context flows into Claude Code, Cursor, VS Code, and Windsurf without copy-pasting.

Prerequisites

You need a Jam recording before your agent can use MCP.

1

2

3

Step 1: Configure your MCP client

  • ChatGPT

  • Claude Desktop

  • Claude Code

  • Codex

  • Cursor

  • VS Code

  • Windsurf

  • OpenCode

1

2

3

4

1

2

3

4

  1. Open or create the config file at ~/.codex/config.toml
  2. Add the following to your config file and save:

Add the following to your Cursor MCP configuration:

1

2

3

4

Your mcp.json file should look like this:

1

2

3

4

Your mcp.json file should look like this:

Edit your opencode.json:

Then run the following command to start the OAuth2 authorization flow:

Step 2: Start using Jam MCP

Once your MCP client is configured:

1

2

3

4

Available MCP tools

ToolDescription
getDetailsGet a quick snapshot of the Jam: who made it, what happened, and which other tools to try next.
getConsoleLogsGrab the console logs from the Jam. Supports logLevel and limit filters to reduce noise.
getNetworkRequestsList every web request from the Jam as JSON. Supports statusCode, contentType, host, and limit filters.
getScreenshotGet every screenshot from a screenshot Jam for visual inspection.
getUserEventsRead each click, input, and page navigation change in plain language.
getMetadataRead custom key-value metadata set via the jam.metadata() SDK: user IDs, app versions, feature flags, and more.
getVideoTranscriptGet the spoken transcript from a video Jam where the microphone was enabled, in WebVTT format with timestamps.
analyzeVideoAnalyze a Jam video recording to extract insights, detect issues, and provide structured feedback.
getFramesSee what was on screen in a video Jam. Return frames at specific timestamps, evenly across a window, or one labeled overview grid spanning the whole recording.
listJamsSearch and filter Jams by text, type, folder, author, URL, or date.
listMembersBrowse your team members.
listFoldersBrowse available folders.
createCommentAdd Markdown comments to a Jam, optionally mentioning a teammate to notify them.
editCommentRewrite a comment you left earlier, so an agent can correct its own note instead of stacking a follow-up.
addReactionReact to a comment — handy for acknowledging one you’ve already acted on.
removeReactionTake back a reaction you left on a comment.
updateJamRename a Jam, rewrite its description, or move it between folders using a folder ID or folder name.
createFolderCreate a folder to organize Jams into. Returns the folder’s ID and short ID so a follow-up updateJam can file a Jam into it.
updateFolderRename a folder, addressed by its name, ID, or short ID.
archiveJamArchive a Jam. It leaves your lists and search, but the recording is kept, so you can restore it from the dashboard.
deleteCommentDelete a comment you wrote, along with its attachments.
deleteFolderDelete a folder and archive every Jam inside it. Returns how many Jams were archived.
listRecordingUrlsList the team’s connected recording domains.
getRecordingUrlVerifyLinkStart verifying a connected domain and return a link a human opens to confirm it.
listRecordingLinksList the team’s recording links, newest first, with cursor pagination and an includeRevoked option.
getRecordingLinkGet one recording link by its public ID.
listRecordingLinkJamsList the Jams recorded through a link, by public ID, with cursor pagination.
createRecordingLinkCreate a reusable recording link, optionally targeting a folder, connected domain, or expiration.
updateRecordingLinkEdit a link’s name, folder, reference, Jam title, expiration, or metadata by public ID (revoked links can’t be edited).
revokeRecordingLinkRevoke a link by its public ID (soft-delete, so collected Jams stay).

Seeing what was on screen

getVideoTranscript and analyzeVideo describe a video Jam in text, but sometimes your agent needs the actual pixels. getFrames returns still frames from the recording as images, so your agent can look at the screen at the moments that matter. Call it three ways:

  • Overview grid. Set overview: true to get one image: frames evenly spaced across the whole video, stitched into a labeled grid where each cell shows its timestamp. The frame count scales with the video’s length (6 for short clips up to 16 for long ones). This is the fastest way for an agent to orient itself on a visual bug before drilling in.
  • Specific timestamps. Pass at with one or more times in milliseconds to capture those exact moments.
  • Window. Pass fromMs, toMs, and count to sample evenly-spaced frames across a range.

Use size (small, medium, large; default medium) to trade detail against your agent’s context budget. Each frame comes back as an image preceded by a t=<ms> text anchor so the agent knows which moment it’s looking at.

Prompting tips

  • Use Jam MCP to help with bug analysis, product feedback, and giving agents the context they need to debug issues.
  • Be as specific as you would with another engineer for the best results.
  • Start with small features or bug fixes. Tell your agent to propose a plan using Jam MCP and verify its plan before moving on to suggested edits.

Examples

Here are three ways the team at Jam uses Jam MCP in their own workflow.

Bug analysis

Tomasz (Product Engineer) uses Jam MCP to debug issues by providing bug context to Cursor to ship a fix.

Stack: Jam recordings + Jam MCP + Cursor


Product feedback triage

Frits (Product Manager) lets Claude review and analyze customer Jams to spot common issues and patterns, then turns findings into grouped Linear tickets.

Stack: Jam customer recordings + Jam MCP + Claude Desktop + Linear MCP


Implementation planning from design feedback

Martin (Product Designer) records product and design feedback with the Jam extension. Jam MCP provides the context for Claude Code to plan and ship a ready-to-review PR.

Stack: Jam extension + Jam MCP + Claude Code inside Cursor

Managing MCP access

Go to Settings → MCP to see connected tools. Select any tool to revoke or disconnect access at any time.

FAQ

Read the original on jam.dev ↗