MCP App Store
by KeenEthics

Overview

Birdie helps you capture customer issues and turn them into clear context for troubleshooting. Instead of relying on written descriptions, customers can record their screen to show the issue. Birdie captures the full context, including what happened, what they clicked, and technical evidence such as console logs, network requests, session data, device metadata, and reproduction steps. This gives your agent the context it needs to understand the issue, troubleshoot it accurately, and move faster to a resolution. With Birdie, your agent does not have to guess what the customer meant. It can see what the customer saw and use the right evidence to investigate the issue. Built for support and technical teams, Birdie reduces back and forth and helps both humans and AI troubleshoot customer issues faster.

Tools

get_console_logs

ChatGPT
Grab console logs from a specific Birdie recording. Returned events include: - absolute timestamps (timestamp_ms) - recording-relative timing (recording_time_ms, recording_timecode) Supported filters: - log_level: error, warning, info, log, debug - limit: cap the number of returned results

get_metadata

ChatGPT
Read structured metadata and context for a specific Birdie recording. This includes: - core recording information such as date, duration, direction, and origin - people context such as who recorded it and who requested it - browser and device details - page and location context when available - custom metadata payloads and compatible legacy metadata when present Use this tool when the user wants general structured context about a recording. Do NOT use this tool for transcript text, console logs, network requests, or user-step analysis.

get_network_requests

ChatGPT
List network requests from a specific Birdie recording as JSON. Returned events include: - absolute timestamps (timestamp_ms) - recording-relative timing (recording_time_ms, recording_timecode) Supported filters: - status_code: 500 or "5xx" - content_type: for example application/json - host: for example api.example.com - limit

get_recording_diagnostics

ChatGPT
Inspect a specific Birdie recording and return a normalized evidence bundle. Use this tool only when the user provides a single recording identifier directly. The identifier can be: - numeric id (e.g. 631060) - uuid - short public code (e.g. w2uqNMG) - or a full url whose last part is the identifier, uuid or short code This tool returns: - recording context - browser and environment details - transcript text when available - user steps - console events - network events - network summary Returned events include: - absolute timestamps (timestamp_ms) - recording-relative timing (recording_time_ms, recording_timecode) Use this tool when the AI should review all recording signals together and decide what is meaningful. Do NOT use this tool for searching, browsing, or listing multiple recordings.

get_recording_frames

ChatGPT
Extract a few still frames (screenshots) from a recording so you can SEE what was on screen. Returns interleaved content: a short text summary, then for each moment a text label ("t=00:08.000") followed by the frame image. Use this when structured signals are not enough or absent — a recording with no console/network/user-event logs, or a visual question such as "what did the error screen look like?" or "what page was the user on at 01:20?". How to drive it: 1. Prefer calling get_recording_scenes first to see where the screen changes. 2. Then call this with a time_range around the interesting window — you get frames sampled from that window. Without a time_range, it samples across the whole recording (a coarse overview). 3. Narrow the time_range and call again for a denser, sharper look. Parameters: time_range {from, to} in seconds; max_frames (default 8, max 12); min_width in pixels (default 1280). Keep max_frames small — each frame is an image and costs vision tokens. Do NOT use this for text signals — prefer get_console_logs / get_network_requests / get_repro_steps / get_recording_diagnostics when the answer is in the logs.

get_recording_scenes

ChatGPT
Read the precomputed VISUAL scene map of a recording: where on the timeline the screen changes, and which stretches are static. This is a cheap, text-only index you read FIRST to decide which moments are worth looking at — it contains no images. Returns: - duration_seconds, width, height - scenes: a list of {t, score} where t is seconds from the start and score is the magnitude of the on-screen change at that moment (higher = bigger change, e.g. a navigation or a modal opening; low = minor movement). Scores are relative WITHIN a recording — a low-motion screencast peaks lower than a page full of navigation. - quiet_spans: {from, to} intervals that are near-static (nothing is happening — usually safe to skip). Typical flow: 1. Call get_recording_scenes to see the shape of the recording. 2. Pick the interesting window(s) from the scenes / quiet_spans. 3. Call get_recording_frames with a time_range to actually SEE those moments. Use this for questions like "when does the screen change?", "is anything happening after 01:00?", or as the first step before extracting frames. It does NOT return transcript, logs, or network data — use the dedicated tools for those.

get_repro_steps

ChatGPT
Read the steps a user took in a Birdie recording — clicks, typing, selections and navigations, in order, in plain language — as reproduction steps. Each step carries absolute timestamps (timestamp_ms), recording-relative timing (recording_time_ms, recording_timecode, delay_from_previous_ms) and, where the recorder captured it, the identity a replay needs: the control that was acted on, its accessible name, a CSS selector with a confidence rating, a role+name locator, and the state it was in before and after. Two depths, chosen with detail: - steps (default) — the ordered steps alone. Use it to answer "what did they do?". - full — the same steps plus preconditions (starting url, viewport, browser) and failure_signature: the console errors and failed requests the session produced, each tied to the step it followed. Use it to answer "how do I reproduce this?" or when investigating a reported bug. failure_signature is absent when the session produced no errors.

get_user_events

ChatGPT
Read clicks, inputs, and page navigation changes from a specific Birdie recording in plain language. Returned events include: - absolute timestamps (timestamp_ms) - recording-relative timing (recording_time_ms, recording_timecode)

get_video_transcript

ChatGPT
Get the spoken transcript from a specific Birdie recording. When timestamped captions are available, this tool returns WebVTT. Otherwise it returns the plain transcript text and clearly reports that WebVTT was not available.

list_recordings

ChatGPT
List Birdie recordings. Use this tool when the user does NOT already know the exact recording identifier. Typical use cases: - find recordings by text, title, tag name, tag slug, or metadata - search by ticket id using the "ticket" parameter - search recordings from a specific email (user, requester, or contact) - narrow results by folder - narrow results by recording date - browse multiple recordings IMPORTANT: - If filtering by email, folder, date, or ticket only, DO NOT provide a query. - Do NOT use generic words like "video", "recording", "latest", or "*". - Only provide "query" when you have meaningful search text (e.g. error message, keyword, feature name, tag name, or tag slug). Examples: - GOOD: { "from_email": "john@company.com" } - GOOD: { "query": "checkout error" } - GOOD: { "query": "freshchat" } - GOOD: { "ticket": "12345" } - GOOD: { "ticket": "12345", "folder": "Customer Escalations" } - GOOD: { "query": "checkout error", "date": "2026-03-24" } - BAD: { "query": "video", "from_email": "john@company.com" } Query matching: - The "query" field can match recording title, uuid, metadata, tag name, and tag slug. - Tag matching is performed on both the human-readable tag name and the normalized tag slug. Ticket search: - If the user provides a ticket id, use the "ticket" field. - Do NOT prefix ticket ids with "#". - Example: user says "ticket 12345" → use { "ticket": "12345" } Folder search: - If the user mentions a folder, use the "folder" field. - Folder is normalized and matched against the folder slug. Date search: - Use the "date" field to narrow by recording date. - Accepted formats include: - YYYY-MM-DD - YYYY-MM-DD HH - YYYY-MM-DD HH:MM - ISO datetime strings Do NOT use this tool if the user provides a specific recording identifier (id, uuid, or shortlink like w2uqMNG). In that case, use get_recording_diagnostics instead.

Example Prompts

Click any prompt to copy it.

App Stats

10

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily