# Jam — how to use (mcp.ai)

Connect your Jam account and use 16 tools for model context protocol straight from your AI agent. Connect with your own API key. Jam helps teams capture, inspect, organize, and collaborate on browser bug reports and recordings through its hosted MCP API.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_jam?ms=1787295720000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `jam_analyze_video`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/jam`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/jam/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/jam/analyze/video` — Extract structured user goals, reported issues, feedback, visual observations, interactions, and technical indicators from a video Jam.
  - body: { jam_id: string }
- `POST https://api.mcp.ai/api/jam/get/console/logs` — Get captured browser console errors, warnings, information, debug output, and stack traces from a Jam.
  - body: { limit?: number, cursor?: number, jam_id: string, log_levels?: string[] }
- `POST https://api.mcp.ai/api/jam/get/jam/details` — Get the core details and debugging context for a Jam. Call this first before requesting logs, events, screenshots, frames, or transcripts.
  - body: { jam_id: string }
- `POST https://api.mcp.ai/api/jam/get/jam/metadata` — Get custom application debugging context attached through the jam.metadata() SDK, such as user IDs, versions, and feature flags.
  - body: { jam_id: string }
- `POST https://api.mcp.ai/api/jam/get/network/requests` — Get captured HTTP requests and WebSocket frames from a Jam, with filters for failures, hosts, methods, content types, and response bodies.
  - body: { hosts?: string[], limit?: number, bodies?: string, cursor?: number, jam_id: string, methods?: string[], status_codes?: string[], content_types?: string[] }
- `POST https://api.mcp.ai/api/jam/get/recording/link` — Get one Recording Link's settings and submitted-Jam count by public ID.
  - body: { public_id: string }
- `POST https://api.mcp.ai/api/jam/get/screenshots` — Get screenshots and image attachments from a screenshot-type Jam for visual inspection.
  - body: { jam_id: string }
- `POST https://api.mcp.ai/api/jam/get/user/events` — Get the chronological user interaction timeline from a Jam, including clicks, inputs, submissions, navigation, and scrolling.
  - body: { limit?: number, cursor?: number, jam_id: string }
- `POST https://api.mcp.ai/api/jam/get/video/frames` — Get still frames from a video Jam as an overview grid, exact timestamps, or an evenly sampled time window. Exactly one of those three modes is required: set overview=true, timestamps_ms, or from_ms wi
  - body: { size?: string, count?: integer, to_ms?: integer, jam_id: string, from_ms?: integer, overview?: boolean, timestamps_ms?: integer[] }
- `POST https://api.mcp.ai/api/jam/get/video/transcript` — Get the timestamped WebVTT speech transcript from a microphone-enabled video Jam when available; otherwise return Jam's explanation that it is pending or unavailable.
  - body: { jam_id: string }
- `POST https://api.mcp.ai/api/jam/list/folders` — Browse or search one page of workspace folders and return their IDs, names, Jam counts, and timestamps; pass next_cursor as cursor to continue.
  - body: { limit?: integer, query?: string, cursor?: string, order_by?: string }
- `POST https://api.mcp.ai/api/jam/list/jams` — Search and browse workspace Jams by text, type, folder, author, source URL, or creation date. Returns one page; pass next_cursor as cursor to continue.
  - body: { url?: string, limit?: integer, query?: string, author?: string, cursor?: string, folder?: string, jam_type?: string, order_by?: string, created_at?: string }
- `POST https://api.mcp.ai/api/jam/list/members` — Browse or search one page of workspace members by name or email for author discovery and attribution; pass next_cursor as cursor to continue.
  - body: { limit?: integer, query?: string, cursor?: string }
- `POST https://api.mcp.ai/api/jam/list/recording/domains` — List the workspace's connected recording domains and whether each is verified to capture console and network logs.
- `POST https://api.mcp.ai/api/jam/list/recording/link/jams` — List Jams submitted through one Recording Link, newest first. Returns one page; pass next_cursor as cursor to continue when has_more is true.
  - body: { limit?: integer, cursor?: string, public_id: string }
- `POST https://api.mcp.ai/api/jam/list/recording/links` — List workspace Recording Links newest first, optionally including revoked links. Returns one page; when has_more is true, pass next_cursor as cursor to continue.
  - body: { limit?: integer, cursor?: string, include_revoked?: boolean }

## Example prompts
- "What can I do in Jam?"
- "Show me a summary of my Jam account"

## More
- Page: https://mcp.ai/jam
- Agent spec (llms.txt): https://mcp.ai/jam/llms.txt
- Postman collection: https://mcp.ai/jam/postman.json
