Skip to main content
Glama
This connector has been deprecated

Replaced by Jam.

dev.jam/jam is the official one

Server Details

The Jam MCP server provides AI tools with instant bug context without manual prompting, enabling a streamlined workflow from bug identification to ticket creation and pull request generation without switching between tools.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
Jam
Claude
Jam

TDQS

A3.5/5.0

Scored across 40 tools

Disambiguation3/5

Several clusters overlap: getEvents is a superset of getConsoleLogs/getNetworkRequests/getUserEvents, fetch duplicates getDetails' payload, and search vs searchJams vs the deprecated listJams all read as 'find Jams'. The descriptions do explain the boundaries (getEvents vs specialized readers, search resolving a single Jam by UUID/URL), which keeps it usable, but two deprecated tools (analyzeVideo, listJams) add noise the agent must route around.

Naming Consistency4/5

Almost everything follows a clean camelCase verb_noun pattern (getNetworkRequests, createRecordingLink, deleteComment, markRelated, listFolders). The exceptions are the bare verbs 'fetch' and 'search', plus the deprecated 'analyzeVideo', which break the otherwise predictable scheme.

Tool Count2/5

40 tools is heavy for this surface, and the count is inflated by redundancy rather than breadth: three overlapping log readers on top of getEvents, fetch alongside getDetails, and two deprecated tools still exposed. The domain (video analysis, comments, folders, recording links, feedback) is genuinely broad, but a leaner surface of ~25 would cover it.

Completeness4/5

Coverage is strong: full CRUD on folders, comments, recording links and Jams, plus relations, resources, reactions, search, video frames/chapters/transcript, and domain verification. Minor gaps remain — no standalone comment listing/get (only via getDetails), no way to list a Jam's resources without reading getDetails, and no listing of existing relations.

Publisher details

Operator
jam.dev
Operator website
https://jam.dev
Vendor relationship
First-party
Documentation
https://jam.dev/mcp
Restrictions
Unknown

Available Tools

40 tools
addReactionA
DestructiveIdempotent
Inspect

React to a comment on a Jam — useful for acknowledging a comment you've already acted on. Works on anyone's comment, not just your own. Adding a reaction you already left is a no-op. Supported emoji: 🐛 (Buggy), 💜 (Love it), ✅ (Fixed), 👀 (Oooo), ❓ (Unclear), 👏 (Bravo), 🔥 (Fire), 👍 (Got it). This can notify the comment author by email and is visible wherever the comment is shared.

Inputs: emoji (required), commentId (required), intent, llm_model.

addResourceA
Idempotent
Inspect

Attach a URL to a Jam, such as the pull request a proof Jam demonstrates, the CI run it came from, or another Jam. Pass a label when the page title would not say what the link is; otherwise teams with links on the share page see the host and path. Adding the same URL again changes nothing. Returns the resource. When you record proof of your work, add the pull request or ticket it proves as a resource. The URL shows on the Jam's share page, which can be public: do not pass a URL that carries a token, and a URL with a username or password is refused. Needs the permission that edits a Jam's title.

Inputs: url (required), jamId (required), label, intent, +1 more.

analyzeVideoA
Read-onlyIdempotent
Inspect

Deprecated: use getFrames with mode: "overview".

Inputs: jamId (required), intent, llm_model.

createCommentA
Destructive
Inspect

Add a new comment to a Jam bug report. The comment body supports Markdown formatting. To reply in a thread, pass parentId using a top-level comment's id from getDetails on the same Jam. Replies are one level deep and ignore playbackRelativeTimestamp. Use this to add notes, analysis results, or follow-up information to a Jam. This can notify other users by email, and the comment is visible to people who can access the Jam, including public viewers when sharing permits it.

Inputs: body (required), jamId (required), intent, parentId, +2 more.

createFolderA
Destructive
Inspect

Create a folder in the team to organize Jams into. Returns the folder's id and shortId, so a follow-up updateJam call can file a Jam into it right away. Folder names are not unique — call listFolders first if you mean to reuse an existing folder rather than add another one with the same name. If your membership permits self-upgrade, this can promote you from Viewer to Creator, affect seat billing, and email team admins.

Inputs: name (required), intent, llm_model.

deleteCommentA
DestructiveIdempotent
Inspect

Delete a comment from a Jam, along with its attachments. Only the comment's own author can delete it, so in practice this removes a comment you posted through createComment. Destructive and not recoverable: confirm with the user before calling. Comment IDs come from createComment's result or from getDetails.

Inputs: commentUid (required), intent, llm_model.

deleteFolderA
DestructiveIdempotent
Inspect

Delete a folder and every Jam inside it. The Jams leave the team's lists and search and nobody on the team can bring them back — the dashboard has no trash or archive view to restore them from. Returns how many Jams went with the folder, as archivedJamCount. Destructive and not recoverable: confirm with the user before calling, never tell them the Jams can be restored afterwards, and use listFolders first so they can see what the folder holds. Takes a folder ID or short ID from listFolders, never a folder name — a name could match the wrong folder.

Inputs: folderId (required), intent, llm_model.

deleteJamA
DestructiveIdempotent
Inspect

Delete a Jam. It leaves the team's lists and search results, and nobody on the team can bring it back — the dashboard has no trash or archive view to restore it from. Destructive and not recoverable: confirm with the user before calling, and never tell them the Jam can be restored afterwards.

Inputs: jamId (required), intent, llm_model.

editCommentA
DestructiveIdempotent
Inspect

Rewrite a comment you previously left on a Jam, so an agent can correct or extend its own note instead of stacking a follow-up comment. Takes the comment ID returned by createComment. The new body replaces the old one entirely and is Markdown. You can only edit comments you authored. Changes are visible to people who can access the Jam, including public viewers when sharing permits it.

Inputs: body (required), commentId (required), intent, llm_model.

fetchB
Read-onlyIdempotent
Inspect

A Jam as a citable document: id, title, url and text (what getDetails returns). Use getDetails to investigate.

Inputs: id (required), intent, llm_model.

getConsoleLogsA
Read-onlyIdempotent
Inspect

The Jam's console output as text, one message per line: [M:SS #index] level: message, with the stack trace and source under it. logLevel (['error','warn'] for problems) and limit filter server-side; the first line gives the match count, and a More: line the cursor for the next page.

Inputs: jamId (required), toMs, after, limit, +5 more.

getDetailsA
Read-onlyIdempotent
Inspect

The entry point for any Jam: call it first. Returns what the Jam is (title, description, author, page, browser and OS), its comments and links, the recording's timeline in time order, and a guide to what else the Jam holds and which tool reads it. A comment pinned to a playback time shows it as [M:SS]. format: "json" returns the structured payload instead of the text (IDs, folder, event counts, processing status, and on a video Jam a public 360p thumbnailUrl for each pinned comment, to share with a person). Once you find the cause or fix it, post one createComment that says so and mentions the creator as @[Name](user:<author.id>), unless the creator is the user you act for. Then call submitFeedback once with this Jam's jamId and evidence set to the Jam data that led you there. The links list the Jam's resources (pull requests, tickets, docs) and related Jams; when you fix or prove something, add the pull request with addResource and mark a proof or fix Jam as related to the bug Jam with markRelated.

Inputs: jamId (required), format, intent, llm_model.

getEventsA
Read-onlyIdempotent
Inspect

The Jam's recorded events as text, one line each: [M:SS #index] then the request, console message or user action, details indented. Narrow it: index for the events timeline lines name; fromMs/toMs for everything around a moment; types (['network'], ['console'], ['user']); network statusCode (['4xx','5xx']), method, host, contentType; console logLevel (['error','warn']). Filters are arrays, OR within one and AND across; a network or console filter implies its type. Failed requests carry their bodies, and so does everything read by index or window; bodies:'all' for every body (cut at 4KB), headers:true for headers. format:'json' returns every stored column. The first line gives the match count and the UTC time of [0:00].

Inputs: jamId (required), host, toMs, after, +13 more.

getFramesA
Read-onlyIdempotent
Inspect

Still frames from a video Jam, as images. Set mode: 'overview' for one labeled grid across the whole video (start here); 'at' with at timestamps in ms; or 'window' with count evenly spaced frames, optionally within fromMs–toMs. size sets the frame height (not for the overview). At most 30 frames a call. Videos on Cloudflare Stream only; otherwise one text block says why.

Inputs: jamId (required), at, mode, size, +6 more.

getMetadataC
Read-onlyIdempotent
Inspect

Custom metadata the app attached with the jam.metadata() SDK: user IDs, versions, feature flags.

Inputs: jamId (required), intent, llm_model.

getNetworkRequestsA
Read-onlyIdempotent
Inspect

The Jam's network requests as text, one per line: [M:SS #index] METHOD url → status (initiator, type, duration), with the error, bodies and headers under it. index reads just the requests timeline lines name, with their bodies. Other filters are arrays, OR within one and AND across: statusCode (['4xx','5xx'] for failures), method (['POST','PUT','PATCH','DELETE'] for writes), host, contentType. Only failed requests carry their response body unless bodies:'all' (every body, cut at 4KB: filter first). headers:true adds request and response headers, secret values redacted at capture. The first line gives the match count and the UTC time of [0:00], to match backend logs.

Inputs: jamId (required), host, toMs, after, +11 more.

getScreenshotsA
Read-onlyIdempotent
Inspect

The images of a screenshot Jam. Screenshot Jams only: a video Jam has getFrames.

Inputs: jamId (required), intent, llm_model.

getUserEventsA
Read-onlyIdempotent
Inspect

The user's clicks, typing and navigations as text, one per line: [M:SS #index] click on <element> at x,y with its CSS selector; a click a script fired is marked. The getDetails timeline already lists these: call this for selectors, positions and typed values.

Inputs: jamId (required), toMs, after, limit, +4 more.

getVideoChaptersA
Read-onlyIdempotent
Inspect

AI chapters of a video Jam: { status, chapters: [{ startMs, endMs, title, thumbnailUrl? }], language }; chapters is null unless status is "ready". thumbnailUrl is a public 360p JPEG to show a person; to look yourself, call getFrames with mode 'at' at the chapter's midpoint. "not_requested": never queued; "skipped": too short to segment.

Inputs: jamId (required), intent, llm_model.

getVideoTranscriptA
Read-onlyIdempotent
Inspect

What the reporter said while recording, as WebVTT with timestamps. Video Jams recorded with the microphone on only. The getDetails timeline already carries it as Voiceover: lines.

Inputs: jamId (required), intent, llm_model.

listFoldersA
Read-onlyIdempotent
Inspect

List folders in the team with optional search and pagination. Returns folder metadata including name, short ID, Jam count, and timestamps. Use this to discover available folders for organizing Jams.

Inputs: after, limit, query, intent, +2 more.

listJamsA
Read-onlyIdempotent
Inspect

Deprecated: use searchJams instead. Lists Jam bug reports with the legacy filters and pagination: search by text, filter by type (video/screenshot/replay), origin (capture surface), folder, author, URL, or creation date. Returns Jam metadata including title, origin, author, folder, and timestamps. Each returned Jam carries a url, the share link to hand back to the user unchanged: it carries search attribution.

Inputs: url, type, after, limit, +8 more.

listMembersA
Read-onlyIdempotent
Inspect

List team members with optional search and pagination. Returns user metadata including name, email, and role. Use this to find users for filtering Jams by author.

Inputs: after, limit, query, intent, +1 more.

listRecordingLinkJamsA
Read-onlyIdempotent
Inspect

List the Jams recorded through a recording link, addressed by the link's publicId. Returns each Jam's id, title, and createdAt (newest first), plus cursor pagination. Pass cursor (a jam id from a prior endCursor) to fetch the next page; hasNextPage indicates whether more remain.

Inputs: publicId (required), limit, cursor, intent, +1 more.

listRecordingUrlsA
Read-onlyIdempotent
Inspect

List the team's connected domains (recording URLs) — the domains a recording link can start from so recorded Jams capture console and network logs. Returns each domain's id, url, and verified state. Use this before createRecordingLink to pick the recordingUrlId to record from, and to tell whether the team has any connected domains at all. Only a verified domain captures logs; an unverified one must be verified from the dashboard first (https://jam.dev/docs/custom-recording-domain). An empty list means the team has no connected domains, so any link created now captures no logs.

Inputs: intent, llm_model.

markRelatedA
Idempotent
Inspect

Mark a Jam as related to another Jam of the same team, with a type read from the first Jam: it fixes the target, proves it, or relates_to it (the default). Teams with links on the share page show it on both Jams; the target shows the inverse ("fixed by", "proven by"). Marking again with the same type changes nothing. Returns the relation. When you record a Jam that proves a fix, mark it as fixes or proves of the bug Jam. Use it to connect a set of Jams of one flow, such as one Jam per UI state. Needs the permission that edits a Jam's title.

Inputs: jamId (required), targetJamId (required), type, intent, +1 more.

markUnrelatedA
DestructiveIdempotent
Inspect

Remove every relation from a Jam to another Jam, whatever its type. The target Jam's backlink goes too.

Inputs: jamId (required), targetJamId (required), intent, llm_model.

removeReactionA
DestructiveIdempotent
Inspect

Take back a reaction you left on a comment. Only removes your own reaction; other people's reactions with the same emoji are untouched. Removing a reaction you never left is a no-op. Supported emoji: 🐛 (Buggy), 💜 (Love it), ✅ (Fixed), 👀 (Oooo), ❓ (Unclear), 👏 (Bravo), 🔥 (Fire), 👍 (Got it). Changes are visible to people who can access the Jam, including public viewers when sharing permits it.

Inputs: emoji (required), commentId (required), intent, llm_model.

removeResourceB
DestructiveIdempotent
Inspect

Remove a URL from a Jam's resources. Pass the URL exactly as it was added.

Inputs: url (required), jamId (required), intent, llm_model.

searchJamsB
Read-onlyIdempotent
Inspect

Search the connected team's Jams. text matches every term against a Jam's title, description, comments, linked issue titles, the reporter's email or external id, and its transcript; a term made of only one or two letters or digits is matched against comments only through the whole text: a comment that contains the text as typed matches when another term has three or more letters or digits, or punctuation next to them (such as cool or #12). Terms like #12 or v1.2 also match comments on their own. textIn limits which of those places a term may match in. where is a list of { field, op, value } filter leaves, all ANDed; the where description lists every field, its operators and what it means. window bounds created_at, sort orders the page, and page carries the limit and the opaque cursor the previous page returned. The team is the one the token was issued for and no argument can name another. Each returned Jam carries a url, the share link to hand back to the user unchanged.

Inputs: v (required), page, sort, text, +6 more.

submitFeedbackAInspect

Save feedback about a Jam surface in Jam's database for Jam's agents to read. Returns the stored feedback ID and a thank-you. Use it when a Jam MCP tool, CLI command, doc page, or skill was wrong, stale, confusing, or missing something — and when one worked unusually well. Also send it when you find the cause of a Jam's problem or fix it: set jamId to that Jam and evidence to the Jam data that led you there, and say in the body what in it pointed to the cause. Report problems only with Jam's own surfaces: not with another MCP server's tools, the user's own skills or scripts, or the user's product, because Jam cannot fix those. The evidence report is for bugs in the user's product. Call it yourself; do not ask the user for approval, because no person reads it. Send at most one problem report per session, plus one evidence report for each Jam whose cause you find, and never for a slip you corrected yourself. Keep the body within 2000 words and 100,000 characters, and specific enough to act on: what you were doing, what you expected, what happened, and the mistake. Larger bodies are rejected without saving or truncating them. Never include secrets, customer data, source code, or stack traces — describe code rather than pasting it.

Inputs: body (required), jamId, intent, subject, +3 more.

updateFolderA
DestructiveIdempotent
Inspect

Rename a folder. Identify the folder by name, folder ID, or folder short ID. Renaming does not move any Jams — use updateJam for that. An unknown folder, or one belonging to another team, reads as not-found.

Inputs: name (required), folder (required), intent, llm_model.

updateJamA
DestructiveIdempotent
Inspect

Update a Jam bug report: rename it, rewrite its description, or move it between folders. Every field is optional — only the ones you pass are changed. Use folder name, folder ID, folder short ID, or "root" to move to the root level. Editing the title or description requires an Admin or Creator role.

Inputs: jamId (required), title, folder, intent, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources