{"name":"io.github.CrumbtrailDev/crumbtrail","slug":"crumbtraildev-crumbtrail","title":null,"description":"Recorded browser sessions, backend spans, and database row diffs as one ranked fix bundle.","url":"https://mcp.market/server/crumbtraildev-crumbtrail","rating":null,"grade":"C","score":65,"certified":false,"status":"active","category":"data","tags":["data","scraping"],"presence":{"score":12,"stars":null,"forks":null,"downloads_week":51,"last_push_at":null,"license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/CrumbtrailDev/crumbtrail","website":"https://crumbtrail.ai","version":"0.3.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"crumbtrail-node","version":"0.3.0","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"value":"serve","type":"positional"},{"type":"flag","name":"--mcp"}]}],"tools":[{"name":"getBug","description":"Get one distinct bug (by bugId from listDistinctBugs) with its full correlated evidence: front-end and back-end evidence refs, optional db diffs, the representative signal, window, and contributing candidate ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugErrorContext","description":"Get all errors/rejections from a bug with surrounding events for context. Best for understanding what happened around each error.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugEvents","description":"Get events from a bug report, optionally filtered by kind (clk, con, err, net.req, net.res, key, etc.) or time range. Use limit to control token usage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugFailedRequests","description":"Get failed HTTP requests (status >= 400) from a bug report.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugLLMContext","description":"Get a compact bug context optimized for LLM consumption (small key schema + top errors/requests/navs).","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugReport","description":"Get the full bug report including developer note, URL, summary stats (error count, failed requests, event breakdown). Read this first before diving into events.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getBugVoiceTranscript","description":"Get the transcribed voice note from a bug report, if the developer recorded one.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getCookieChanges","description":"Get all cookie change events from a session","write_action":false,"price_micros":0,"input_schema":null},{"name":"getErrorContext","description":"Get error events with surrounding context events","write_action":false,"price_micros":0,"input_schema":null},{"name":"getEvents","description":"Get events from a session, optionally filtered by type or time range","write_action":false,"price_micros":0,"input_schema":null},{"name":"getEvidence","description":"Resolve a single piece of evidence by ref from hot-plane artifacts only. ref is a candidate id (e.g. cand_0001 -> candidate + its evidence window), an interactive-element signature (sig -> signatures.json entry + occurrence count), or a request/event id (resolved to the candidate whose anchor references it). Returns a small payload; use getWindow for the raw chronological events. Every response ca","write_action":false,"price_micros":0,"input_schema":null},{"name":"getFailedRequests","description":"Get failed HTTP requests (status >= 400)","write_action":false,"price_micros":0,"input_schema":null},{"name":"getFixContext","description":"Give a coding agent complete bug context for one recorded session. Returns the fix-context.v1 bundle: ranked candidate causes, the primary evidence window with correlated frontend requests, backend spans, and the exact database rows that changed, plus a redaction-aware environment snapshot and a repro hint. Start here when the user asks you to fix a bug captured with Crumbtrail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getFrame","description":"Get a frame image by timestamp (nearest match)","write_action":false,"price_micros":0,"input_schema":null},{"name":"getFrameById","description":"Get a frame image by filename","write_action":false,"price_micros":0,"input_schema":null},{"name":"getIndex","description":"Get the index.json summary for a session","write_action":false,"price_micros":0,"input_schema":null},{"name":"getLatestIssue","description":"The one-call, zero-friction entry point: finds the most recent finalized session with error-class evidence (errors, failed requests, or critical/high-severity candidates) and returns its complete fix-context.v1 bundle \\u2014 ranked candidate causes, correlated primary window, environment snapshot, and repro hint \\u2014 in a single call. No sessionId, no listSessions round-trip, no setup: call it w","write_action":false,"price_micros":0,"input_schema":null},{"name":"getLinkedRequestContext","description":"Get linked frontend/backend request evidence from index.fullStackRequests for a session/request ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"getRecurrence","description":"Get a cross-session recurrence rollup by signature from listDistinctBugs({mode:\"cross-session\"}). Returns first_seen/last_seen, session_count, release_span, app/tenant labels, and per-session occurrences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"getRegressionContext","description":"Compare two recorded sessions of the same flow across releases and return the regression-context.v1 witness verdict. Catches escaped regressions \\u2014 behavior changes that fired no error \\u2014 and hands back the diverging interaction, the causal window of correlated requests, the exact database rows whose values changed, and a repro hint. Input: { sessionA, sessionB } (ids or paths). Use listSe","write_action":false,"price_micros":0,"input_schema":null},{"name":"getSessionManifest","description":"Get the session manifest (manifest.json): metadata, error and failed-request markers, timeline, ranked candidates, and an accessPattern hint. The token-bounded entry point for exploring a recorded session \\u2014 start drilldown here, then getWindow for raw events in a time window and getEvidence to resolve one candidate, signature, or request id. Hot-plane only. Every response carries tokenEstimat","write_action":false,"price_micros":0,"input_schema":null},{"name":"getStorageChanges","description":"Get all storage change events from a session","write_action":false,"price_micros":0,"input_schema":null},{"name":"getStorageSnapshot","description":"Get the initial storage snapshot from a session","write_action":false,"price_micros":0,"input_schema":null},{"name":"getTranscript","description":"Get audio transcript events from a session","write_action":false,"price_micros":0,"input_schema":null},{"name":"getWindow","description":"Get the cold events within the absolute-ms time window [t0,t1] (the same units as manifest.session.startMs/endMs and a candidate.evidenceWindow.start/end). This is the only tool that reads the cold event stream; it is bounded to the window and capped (default/max 500 events) and reports truncation. Use it after locating a candidate window via getSessionManifest/getEvidence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"listBugs","description":"List all bug reports in the queue. Returns report summaries sorted newest-first. Use this as the entry point to triage bugs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"listDistinctBugs","description":"List the DISTINCT bugs a session hit, grouped deterministically from the ranked candidates (within-session dedup). With mode:\"cross-session\", scans finalized sessions and returns recurrence rollups by stable bug signature. Use getBug for one session bug, or getRecurrence(signature) for one recurrence.","write_action":false,"price_micros":0,"input_schema":null},{"name":"listSessions","description":"List recorded Crumbtrail sessions \\u2014 complete app evidence sessions (clicks when present, console, network, backend spans, database row changes, environment and feature flags) ready to hand to an agent. Use this first to find the sessionId for getFixContext (bug context for one session) or getRegressionContext (cross-release regression witness). Supports app/time/release/build filters.","write_action":false,"price_micros":0,"input_schema":null},{"name":"locateInteractiveElements","description":"Find interactive components in a session BY IDENTITY. Returns a deterministic ranked list of {signature, role, label, path, occurrences} from the finalized hot-plane interactive-element map, optionally filtered by a label/text substring or an exact role/tag. Ranked by occurrences desc, then label, then signature. Reads hot-plane artifacts only (redaction-safe). Resolve-only (no live actuation); us","write_action":false,"price_micros":0,"input_schema":null},{"name":"recallSimilarIssues","description":"Before diagnosing a bug, ask: have we seen this before? Recalls past issues that RHYME with a session or a free-text description \\u2014 not just exact duplicates, but same route/different error, same error/different route, or similar environment/feature-flag state \\u2014 ranked by a hybrid of text similarity and structured overlap. Each match carries how it was resolved when known (disposition, ro","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolveBug","description":"Mark a bug as resolved.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolveSignature","description":"Resolve a stable component signature to its full interactive-element descriptor for one session: path/selector, tag/role, accessible label/text, occurrence count, first-seen, and interaction affordances (clickable/input). Reads the finalized hot-plane bundle only (redaction-safe; raw masked values are never surfaced). Unknown signature returns an error. Use locateInteractiveElements first to find ","write_action":false,"price_micros":0,"input_schema":null},{"name":"solveContext","description":"Fuse a described symptom with locally recorded evidence into a fusion.v1 RankedBundle \\u2014 the complete, neutral evidence (ranked by relevance) plus a structurally-separate advisory opinion of ranked hypotheses and any evidence gaps. Never a boolean verdict. Pass baselineSession + currentSession to gather evidence via compareSessions; omit both to get an evidence-free bundle describing gaps.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":65,"grade":"C","scanned_at":"2026-09-25T21:44:19.425Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T21:44:19.355Z","components":{"code":{"score":25,"max":25,"notes":["8 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"crumbtrail-node","version":"0.3.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-07-16T03:22:36.407Z","repositoryUrl":"git+https://github.com/CrumbtrailDev/crumbtrail-cli.git","weeklyDownloads":51}],"repo":{"found":false,"owner":"CrumbtrailDev","repo":"crumbtrail","error":"repo not found"},"icon":{"url":"https://crumbtrail.ai/icon.svg?icon.42hpu5j95frdq.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":51,"license":"MIT","lastPushAt":null,"score":12}}}},"grade_history":[],"reviews":[]}