← Back to search

@memlab/mcp-server

jacksongl Scanned 5d ago

MCP server for MemLab heap snapshot analysis — gives AI coding assistants tools to explore JavaScript heap snapshots, find memory leaks, and identify optimization opportunities

C
64.2 / 100

Versions

2.18.1latest
Jul 11, 2026
2.3.0
Jun 10, 2026
2.1.1
May 27, 2026
2.1.0
May 19, 2026
2.0.3
May 8, 2026
+ show 3 moreshow less
2.0.2
Apr 26, 2026
2.0.1
Apr 16, 2026
2.0.0
Mar 23, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 93

memlab_eval
annotations: none low

Execute arbitrary JavaScript code against the loaded heap snapshot.

memlab_property_names
annotations: none low

Index the heap

memlab_array_group_by
annotations: none low

Iterate through array (or Map/Set) elements, extract a named property from each, and

memlab_search_strings
annotations: none low

Search the content (stringValue) of all string nodes in the heap snapshot.

memlab_find_by_shape
annotations: none low

Find all objects that have a specific set of property names (multi-property intersection search). Unlike find_by_property which searches for a single property, this finds objects matching a

memlab_identify
annotations: none low

Name a minified structure from its property shape. In a production bundle nearly every class is `t`, `e`, `s` or `Object`, so the first — and often longest — step of an investigation is working out what a population actually IS: a listener record, an LRU node, a React update record, an editor-history entry. This matches a node (or a bare shape) against a library of known fingerprints and reports what it is, why it matters, and what to check next.\n\n

memlab_sliced_strings
annotations: none low

Find V8 sliced and concatenated string nodes and identify the parent strings they reference. Sliced strings share backing storage with a parent string — if the parent is a large string (e.g., a multi-MB CSV response), all slices keep the entire parent alive. This is a common cause of hidden memory leaks where small substring references retain massive parent strings. Shows parent strings ranked by parent string size.

memlab_get_property
annotations: none low

Look up a specific property (outgoing edge) of a heap node by name and return the target node with full details. Useful for traversing the object graph step by step (e.g., get the __proto__, stateNode, or memoizedState of a node).

node_id number
memlab_largest_objects
annotations: none low

Find the top N objects by retained size in the loaded heap snapshot. Filters out internal/meta objects. Use node_type to filter to a specific type (e.g.,

memlab_match_object
annotations: none low

Find the object in ANOTHER loaded snapshot that corresponds to a given object in the current one.

memlab_finding_index
annotations: none low

Fingerprint a leak finding by its retainer path and check it against findings from previous rounds, so a hunt does not spend itself re-discovering a known or already-fixed leak.

memlab_metric
annotations: none low

Record a measurement under a name and keep it across sessions, so a number measured today can be compared with one measured next week.\n\n

value number
...
annotations: none low

memlab_app_config
annotations: none low

Read the feature flags and config values the app was actually running with, out of the snapshot itself.\n\n

memlab_async_census
annotations: none low

Census PENDING ASYNC WORK: React-scheduler task queues (with a live-vs-cancelled split), timer callback closures, and unsettled Promises with their owner shapes.

memlab_app_heap
annotations: none low

Report APP-ATTRIBUTABLE heap: total self size minus bundle/code memory, minus dev-build artifacts, minus measurement-harness content — the part of the heap that is actually the application.

memlab_snapshot_header
annotations: none low

Peek a .heapsnapshot

memlab_get_value
annotations: none low

Decode the actual numeric value of a V8 SMI (Small Integer) or heap number node.

memlab_object_cost_breakdown
annotations: none low

Show per-instance V8 memory cost breakdown for a class or shape. Reports: object header overhead, heap number vs SMI property costs, property backing store costs, and collection storage overhead. Compares current cost to theoretical minimum. Use when a cache or array of objects uses more memory than expected — the gap is often V8 overhead, not a code bug.

memlab_reports
annotations: none low

Run curated memory analysis reports — like Chrome DevTools Memory panel views. Use

memlab_aggregate
annotations: none low

Aggregate heap nodes by type, name, or name prefix. Returns grouped statistics (count, total self size, aggregate retained size) sorted by retained size. Retained size uses dominator-aware aggregation (no double-counting).

type string
memlab_object_shape
annotations: none low

Show the shape/structure of one or more heap objects: all named properties with target node types and sizes. Filters out internal/hidden edges to show only user-visible properties. Supports batch inspection via node_ids to compare multiple objects side-by-side in a single call.

memlab_next_measurement
annotations: none low

What can the snapshots currently loaded actually support — and which capture would change that?\n\n

memlab_diff_snapshots
annotations: none low

Compare two heap snapshots by class histogram. Shows classes that grew, shrunk, appeared, or disappeared between

after string before string target string baseline string
memlab_settle_check
annotations: none low

Separate RETENTION from in-flight BACKLOG by comparing a busy snapshot against one captured after the app settled (idle + forced GC).

min_growth number
memlab_collection_trend
annotations: none low

Track named collections ACROSS a snapshot ladder: entry counts per rung, with per-cycle growth. memlab_cache_analysis, memlab_stale_collections and memlab_growth_signals all answer

memlab_ladder_probe
annotations: none low

Run ONE numeric probe across an ORDERED ladder of snapshots and report the series, the per-cycle rate and a linear fit.

memlab_global_variables
annotations: none low

Find non-built-in global variables on the Window object (browser) or global object (Node.js), sorted by retained size. These are application-specific globals that may indicate memory issues.

memlab_cache_analysis
annotations: none low

Detect unbounded caches — Map, Set, and Array objects that are large and likely missing eviction logic. The #1 cause of Node.js memory leaks. Reports entry count, retained size, owner object, and whether entries use WeakRef. Use this after memlab_auto_investigate or memlab_check_health flags suspicious collections.

memlab_quick_diagnosis
annotations: none low

Combined diagnosis tool that returns snapshot summary, top objects by retained size, class histogram, and duplicated strings in a single call. Saves 3-4 round trips and reduces token overhead from repeated headers. Use this as the first analysis tool after memlab_load_snapshot for an immediate comprehensive overview.

memlab_trace_dominators
annotations: none low

Auto-walk the dominator tree from a starting node, following the largest dominated child at each level until reaching leaf data or a depth limit. Returns the full chain with size annotations in a single call — eliminates the 10+ sequential get_references calls typically needed to trace from a top retainer to the actual data. Collapses repetitive Promise/PromiseReaction chains. Shows top children at the terminal node. Use as the primary tool after identifying a large retainer via auto_investigate or largest_objects.

node_id number
memlab_analyze_run
annotations: none low

Point at a leak hunt

memlab_retainer_summary
annotations: none low

Trace retainer paths for multiple instances of a class (or a specific set of node IDs) and group by common patterns. Instead of tracing one node at a time, this samples N instances and shows how many share each retainer path pattern. Essential for confirming whether leaked objects share a single root cause. Use node_ids to cluster retainer patterns for specific nodes (e.g., example_node_ids from duplicated_strings). Set compact=true for abbreviated paths that use 50-70% fewer tokens.

memlab_dev_artifacts
annotations: none low

Classify large retainers as production-relevant vs. dev/automation-only (browser snapshots). Flags any object retained ONLY through a dev/extension global (__REACT_DEVTOOLS_GLOBAL_HOOK__, __REDUX_DEVTOOLS_EXTENSION__, window.Debug, …), through a Blink accessibility cache (AXObjectCacheImpl/AXNodeObject/AXDirtyObject) inflated by CDP-driven automation building the a11y tree, OR through the attached inspector\

memlab_explain_delta
annotations: none low

Explain WHERE a heap grew between two loaded snapshots, attributed by dominator (who owns the new bytes) rather than by class (what the new bytes are).

memlab_dominator_attribution
annotations: none low

Given several candidate retainers, measure how much of a population each one actually DOMINATES — i.e. what would really be freed by releasing it. Answers

memlab_for_each
annotations: none low

Structured map/filter/reduce over all heap nodes.

memlab_search_nodes
annotations: none low

General-purpose search for heap nodes by combining filters: name pattern (regex), node type, minimum retained/self size, and detachment status. Results sorted by retained size. Supports count-only and ids-only modes for large result sets.

memlab_intern_opportunities
annotations: none low

Identify string interning opportunities by grouping duplicated strings by the property name and parent object shape that holds them. Shows total savings per (property × shape) combination — the key metric for deciding where to add a string interning pool. Also surfaces ARRAY-ELEMENT / columnar duplication (strings held as elements of a rowsAsArray / string[][] result buffer — a common Nest mysql2/Drizzle shape) as first-class groups keyed by column index and array-owner shape, folded into the within-load headline; these are marked with a filled square and fixed by interning at the array-construction/parse site. The within-load figure is split at the canonical 128-char intern cap into cappable (<=128 chars, what the recommended fix reclaims) vs over-cap (longer strings the cap skips), so the headline matches what a compliant fix actually reclaims. Replaces the manual workflow of: duplicated_strings → retainer_summary → codebase grep.

memlab_duplicate_objects
annotations: none low

Find structurally-identical DUPLICATE objects — instances that carry the same content repeated many times, which a class histogram or shape histogram cannot see (they group by class or by property-NAME set, not by VALUE). Groups object instances by a shallow content signature (sorted property names + each scalar value; object-valued props marked generically) and reports, per signature, the instance count and the reclaimable own-bytes of the redundant copies.

memlab_get_node
annotations: none low

Look up a heap node by its numeric ID. Returns full details including size, type, detachment status, dominator, location, and string value if applicable.

node_id number
memlab_map_entries
annotations: none low

Enumerate the entries of ONE Map or Set (node_id is REQUIRED — this is not a global scan). The companion to memlab_weakmap_entries for strongly-held collections. The KEYS are usually the whole diagnosis of an unbounded cache: a Store/singleton Map keyed by

memlab_hypothesis
annotations: none low

Test one hypothesis against EVERY rung of a snapshot ladder in a single call: supply a JavaScript predicate over heap nodes and get its match count, total self size, and trend per rung.

label string
memlab_leak_report
annotations: none low

One-call leak triage across an ORDERED ladder of >=2 heap snapshots: runs the growth-trend pass, then gathers per-class EVIDENCE from the final snapshot and returns a single table — class, per-rung counts, Δ and Δ/cycle, how much of it is dev/automation-retained, the dominant retainer, and a verdict hint.

memlab_get_referrers
annotations: none low

Get incoming edges (referrers) to a heap node, sorted by source retained size. Shows what objects hold references to this node. Supports edge_filter (match by edge name) and offset (pagination) so a widely-referenced singleton can be explored beyond the first page — e.g.

node_id number
memlab_load_snapshot
annotations: none low

Load and parse a .heapsnapshot file. This builds indexes, computes the dominator tree, and calculates retained sizes. Returns a quick diagnosis highlighting potential issues. Accepts a local absolute path, a manifold:// URL, or a bare snapshot filename (resolved against the nest_server_nodejs_heap_snapshots bucket and fetched automatically). Multiple snapshots can be kept resident — pass keep_previous:true to load several for diffing/comparison; switch between them with memlab_snapshots. Cost note: the load working set is several× the file size and the dominator pass runs uninterruptibly, so large/deep snapshots are memory- and time-heavy — run the server with NODE_OPTIONS=

memlab_sequence_analysis
annotations: none low

Trend analysis across an ORDERED sequence of >=2 heap snapshots (the canonical

memlab_script_census
annotations: none low

Census the retained JS SOURCE TEXT in the heap, and flag the same bundle being retained more than once.

memlab_string_patterns
annotations: none low

Group strings by common prefix and show aggregate counts and sizes. Instead of seeing 20 individual histogram entries for CSV strings that all start with the same header, see them grouped:

memlab_class_histogram
annotations: none low

Show per-constructor/class instance count and total self size. Useful for identifying which types of objects dominate memory.

memlab_growth_signals
annotations: none low

Heuristically flag collections that look like they grow without bound, from a SINGLE snapshot (no baseline needed). Detects Maps/Sets keyed by timestamps or sequential integers (time-series / append-only logs) and large ever-growing Arrays. Use when you have only one snapshot and want to guess what is accumulating, before confirming with a diff against a later capture.

memlab_retainer_trace
annotations: none low

Get the shortest path from a GC root to a specific heap node. This shows why the object is retained in memory by walking the pathEdge chain. Use memlab_retainer_summary to trace multiple instances of a class and group by common retainer patterns. Use memlab_get_referrers / memlab_get_references to explore incoming/outgoing edges from a node.

node_id number
memlab_property_distribution
annotations: none low

For a given object class/shape and property, report the value cardinality plus the top-K most frequent values with their counts. The key tool for diagnosing cardinality explosions (e.g., an OpenTelemetry metric attribute, a cache key, or a per-record field whose unbounded distinct values blow up memory). Complements memlab_shape_histogram (which groups by property *names*) by showing the distribution of a single property

memlab_auto_investigate
annotations: none low

One-shot deep analysis: finds the top retained objects, traces each retainer chain to the GC root, identifies pinch points (small objects retaining large subtrees), and detects unbounded caches. Returns a structured report with root causes and suggested fixes. Use this as the first tool after loading a snapshot to get immediate actionable findings.

memlab_verify_fix
annotations: none low

Decide whether a fix actually worked, by comparing the per-cycle growth RATE of one metric between a before ladder and an after ladder. hunt_runner --ab drives both arms but nothing analyses them, which is why fix write-ups stall at

memlab_hunt_report
annotations: none low

Render a leak hunt

memlab_identity_diff
annotations: none low

Same objects, or just the same number of objects? Matches a population across two snapshots by CONTENT rather than by node id, which is not comparable across captures.\n\n

after_handle string
memlab_dominator_subtree
annotations: none low

Show the direct children in the dominator tree for a given node — i.e., objects whose retained size is exclusively attributed to this node. These are the objects that would be freed if this node were garbage collected. Useful for understanding what composes a large retained size.

node_id number
memlab_event_listener_leaks
annotations: none low

Detect EventEmitter-style listener accumulation — the #1 cause of memory leaks in

memlab_pinch_points
annotations: none low

Find

memlab_event_registry
annotations: none low

Detector for per-model event registries (Backbone/Marionette/observer style): objects mapping event names to arrays of {callback, context} listeners, e.g. `{

memlab_artifact_budget
annotations: none low

ONE number for

memlab_batch
annotations: none low

Run several memlab tools against ONE snapshot load, in order, and return all their outputs together.

tool string alias string quiet boolean file_path string keep_previous boolean max_file_size_mb number
memlab_module_attribution
annotations: none low

Attribute heap bytes to the MODULE that owns them, by walking the dominator tree up to the nearest module-registry export.

memlab_tools
annotations: none low

Index of every memlab tool, grouped by the QUESTION it answers (

memlab_get_references
annotations: none low

Get outgoing edges (references) from a heap node, sorted by target retained size. Shows what objects this node points to — its properties, elements, and closure captures. Supports edge_filter (match by edge name) and offset (pagination) so a node with thousands of references can be explored beyond the first page. Complements memlab_get_referrers (incoming edges). Use memlab_object_shape for a quick property overview, or memlab_closure_inspection for closure-specific analysis.

node_id number
memlab_find_nodes_by_class
annotations: none low

Find heap nodes by constructor/class name, exactly (class_name) or by case-insensitive regex/substring (name_pattern). Matches ANY node type by default (object, closure, array, string, native, …) — pass node_type to narrow. Ordering is controlled by order: the biggest by retained size (default), or the newest by node id. If the exact name matches nothing, reports near-miss names and the types they exist under instead of a bare

memlab_ladder
annotations: none low

Name a snapshot ladder once and reference it as `ladder:<name>` from the trend tools (memlab_sequence_analysis, memlab_leak_report, memlab_hypothesis) instead of re-typing its paths on every call.

app string notes string
memlab_server_status
annotations: none low

Cheap liveness/health check: returns instantly with the server process RSS, uptime, and the resident snapshots. Use it to confirm the server is responsive (vs. stuck behind a heavy scan) and to watch RSS against the snapshot-size ceiling. Scan tools are time-budgeted (timeout_ms) so a heavy scan returns cleanly instead of wedging the server; if a call ever seems hung, this check should still answer immediately.

memlab_trace_all
annotations: none low

Retainer-trace an ENTIRE population and cluster the paths server-side, instead of sampling a handful and hoping they are representative.\n\n

memlab_find_by_property
annotations: none low

Find all objects that have a specific property name (outgoing edge). Useful for identifying

memlab_collection_diff
annotations: none low

Find WHICH collections grew across a snapshot ladder, WITHOUT being told their names. Censuses every Map/Set/WeakMap/WeakSet/Array on every rung, keys each by a per-capture-STABLE `<Owner>.<property>` signature, and diffs the entry counts.

memlab_retainer_layers
annotations: none low

Counterfactual retainer analysis: answer

memlab_shape_histogram
annotations: none low

Group objects by their property structure (shape/hidden class). Objects with the same set of property names are grouped together, revealing distinct record types. Much more useful than class_histogram when most objects are generic

memlab_closure_inspection
annotations: none low

Inspect a closure (function) OR a suspended generator/async frame to show its captured/live variables.

memlab_census_diff
annotations: none low

Take the detached-DOM and listener-record census at TWO rungs and diff them per class / per callback in one call.

memlab_duplicated_strings
annotations: none low

Find duplicated string instances in the heap. Shows strings that appear multiple times, ranked by total retained size — a common source of memory waste. Use after memlab_class_histogram shows high string counts.

memlab_snapshots
annotations: none low

Manage the multi-snapshot session: list resident snapshots, switch the active one, or unload one to free memory. Also toggles session-level output controls (quiet header, suppress suggestions) to trim repeated boilerplate tokens. Load several snapshots with memlab_load_snapshot({keep_previous:true}) then switch between them by handle. Node ids are only valid within the snapshot they came from.

memlab_weakmap_entries
annotations: none low

Enumerate the key-value pairs of ONE WeakMap (node_id is REQUIRED — this is not a global scan). WeakMaps back DataStore, private fields, and metadata caches; since keys are weakly held, their entries reveal which objects are associated and what metadata is stored. First locate a WeakMap with memlab_find_nodes_by_class(

memlab_population_diff
annotations: none low

Compare the COMPOSITION of a population between two loaded snapshots, not just its size. Equal totals are not identity: a round that strands N objects and frees N others reports the same count at both ends, and reading that as

memlab_check_health
annotations: none low

Run all heuristic health checks in one call and return a prioritized list of findings. This is the recommended first step after loading a snapshot — it replaces calling 4-5 individual tools to triage.

memlab_stale_collections
annotations: none low

Find Map, Set, and Array collections holding stale references. Detects: (1) detached DOM /

memlab_snapshot_summary
annotations: none low

Get an overview of the loaded heap snapshot: total nodes, edges, size, and per-node-type breakdown with count and self size.

memlab_eval_across
annotations: none low

Run ONE `memlab_eval` program against SEVERAL resident snapshots and return the results side by side.

memlab_weakref_census
annotations: none low

Census every WeakRef in the heap, split LIVE vs EMPTY (referent already collected), and group by the shape of the object holding them.

memlab_get_string
annotations: none low

Resolve any V8 string node to its full text value. Handles all V8 string encodings:

node_id number
${node.name}
annotations: none low

memlab_detached_dom
annotations: none low

Find detached DOM elements still retained in memory. These are common sources of memory leaks — DOM nodes removed from the document but kept alive by JavaScript references. Supports count-only and ids-only modes for large result sets. Use group_by to aggregate by dominator (accountable owner), element tag, retainer pattern, or data-testid.

memlab_dominator_chain
annotations: none low

Walk UPWARD through the immediate-dominator chain from a node to the GC root — the accountability chain of objects that each, if freed, would free the target. Every node on the chain exclusively dominates the target, so the nearest application-owned entry is the single owner to fix. This complements the DOWNWARD memlab_dominator_subtree / memlab_trace_dominators (what a node dominates) and the edge-based memlab_retainer_trace (a shortest reference path, which need not be a dominator). Mirrors the Chrome DevTools

memlab_referrer_summary
annotations: none low

Group all incoming references (referrers) of a node by edge name and source class.

node_id number
memlab_retainer_diff
annotations: none low

A population grew between two snapshots — did it grow along the SAME retention path, or did a new one appear?\n\n

after_handle string
memlab_unit_cost
annotations: none low

How much memory does ONE of these actually cost? Reports dominator-deduped retained bytes per instance for a class or an object shape,

memlab_what_if
annotations: none low

If this set of objects were freed, how many bytes would actually come back? Reports the dominator-deduped retained size of a population — the bytes that go away when it does, with nothing double-counted and nothing counted that is also reachable another way.\n\n

Permissions 4

network medium
Server uses network capabilities via: fetch()
filesystem low
Server uses filesystem capabilities via: fs, fs sync ops, path
shell high
Server uses shell capabilities via: child_process, execSync(), spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 214

low
Tool 'memlab_find_by_shape' has no annotations annotation_checker · 100%
low
Tool 'memlab_identify' has no annotations annotation_checker · 100%
low
Tool 'memlab_sliced_strings' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_property' has no annotations annotation_checker · 100%
low
Tool 'memlab_largest_objects' has no annotations annotation_checker · 100%
low
Tool 'memlab_match_object' has no annotations annotation_checker · 100%
low
Tool 'memlab_finding_index' has no annotations annotation_checker · 100%
low
Tool 'memlab_metric' has no annotations annotation_checker · 100%
low
Tool '...' has no annotations annotation_checker · 100%
low
Tool 'memlab_app_config' has no annotations annotation_checker · 100%
low
Tool 'memlab_async_census' has no annotations annotation_checker · 100%
low
Tool 'memlab_app_heap' has no annotations annotation_checker · 100%
low
Tool 'memlab_snapshot_header' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_value' has no annotations annotation_checker · 100%
low
Tool 'memlab_object_cost_breakdown' has no annotations annotation_checker · 100%
low
Tool 'memlab_reports' has no annotations annotation_checker · 100%
low
Tool 'memlab_aggregate' has no annotations annotation_checker · 100%
low
Tool 'memlab_object_shape' has no annotations annotation_checker · 100%
low
Tool 'memlab_next_measurement' has no annotations annotation_checker · 100%
low
Tool 'memlab_diff_snapshots' has no annotations annotation_checker · 100%
low
Tool 'memlab_settle_check' has no annotations annotation_checker · 100%
low
Tool 'memlab_collection_trend' has no annotations annotation_checker · 100%
low
Tool 'memlab_ladder_probe' has no annotations annotation_checker · 100%
low
Tool 'memlab_global_variables' has no annotations annotation_checker · 100%
low
Tool 'memlab_cache_analysis' has no annotations annotation_checker · 100%
low
Tool 'memlab_quick_diagnosis' has no annotations annotation_checker · 100%
low
Tool 'memlab_trace_dominators' has no annotations annotation_checker · 100%
low
Tool 'memlab_analyze_run' has no annotations annotation_checker · 100%
low
Tool 'memlab_retainer_summary' has no annotations annotation_checker · 100%
low
Tool 'memlab_dev_artifacts' has no annotations annotation_checker · 100%
low
Tool 'memlab_explain_delta' has no annotations annotation_checker · 100%
low
Tool 'memlab_dominator_attribution' has no annotations annotation_checker · 100%
low
Tool 'memlab_for_each' has no annotations annotation_checker · 100%
low
Tool 'memlab_search_nodes' has no annotations annotation_checker · 100%
low
Tool 'memlab_intern_opportunities' has no annotations annotation_checker · 100%
low
Tool 'memlab_duplicate_objects' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_node' has no annotations annotation_checker · 100%
low
Tool 'memlab_map_entries' has no annotations annotation_checker · 100%
low
Tool 'memlab_hypothesis' has no annotations annotation_checker · 100%
low
Tool 'memlab_leak_report' has no annotations annotation_checker · 100%
low
Tool 'memlab_eval' has no annotations annotation_checker · 100%
low
Tool 'memlab_property_names' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_referrers' has no annotations annotation_checker · 100%
low
Tool 'memlab_load_snapshot' has no annotations annotation_checker · 100%
low
Tool 'memlab_sequence_analysis' has no annotations annotation_checker · 100%
low
Tool 'memlab_script_census' has no annotations annotation_checker · 100%
low
Tool 'memlab_string_patterns' has no annotations annotation_checker · 100%
low
Tool 'memlab_class_histogram' has no annotations annotation_checker · 100%
low
Tool 'memlab_growth_signals' has no annotations annotation_checker · 100%
low
Tool 'memlab_retainer_trace' has no annotations annotation_checker · 100%
low
Tool 'memlab_property_distribution' has no annotations annotation_checker · 100%
low
Tool 'memlab_auto_investigate' has no annotations annotation_checker · 100%
low
Tool 'memlab_verify_fix' has no annotations annotation_checker · 100%
low
Tool 'memlab_hunt_report' has no annotations annotation_checker · 100%
low
Tool 'memlab_identity_diff' has no annotations annotation_checker · 100%
low
Tool 'memlab_dominator_subtree' has no annotations annotation_checker · 100%
low
Tool 'memlab_event_listener_leaks' has no annotations annotation_checker · 100%
low
Tool 'memlab_pinch_points' has no annotations annotation_checker · 100%
low
Tool 'memlab_event_registry' has no annotations annotation_checker · 100%
low
Tool 'memlab_artifact_budget' has no annotations annotation_checker · 100%
low
Tool 'memlab_batch' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_references' has no annotations annotation_checker · 100%
low
Tool 'memlab_find_nodes_by_class' has no annotations annotation_checker · 100%
low
Tool 'memlab_ladder' has no annotations annotation_checker · 100%
low
Tool 'memlab_server_status' has no annotations annotation_checker · 100%
low
Tool 'memlab_trace_all' has no annotations annotation_checker · 100%
low
Tool 'memlab_find_by_property' has no annotations annotation_checker · 100%
low
Tool 'memlab_collection_diff' has no annotations annotation_checker · 100%
low
Tool 'memlab_retainer_layers' has no annotations annotation_checker · 100%
low
Tool 'memlab_shape_histogram' has no annotations annotation_checker · 100%
low
Tool 'memlab_closure_inspection' has no annotations annotation_checker · 100%
low
Tool 'memlab_census_diff' has no annotations annotation_checker · 100%
low
Tool 'memlab_duplicated_strings' has no annotations annotation_checker · 100%
low
Tool 'memlab_snapshots' has no annotations annotation_checker · 100%
low
Tool 'memlab_weakmap_entries' has no annotations annotation_checker · 100%
low
Tool 'memlab_population_diff' has no annotations annotation_checker · 100%
low
Tool 'memlab_check_health' has no annotations annotation_checker · 100%
low
Tool 'memlab_stale_collections' has no annotations annotation_checker · 100%
low
Tool 'memlab_snapshot_summary' has no annotations annotation_checker · 100%
low
Tool 'memlab_eval_across' has no annotations annotation_checker · 100%
low
Tool 'memlab_weakref_census' has no annotations annotation_checker · 100%
low
Tool 'memlab_get_string' has no annotations annotation_checker · 100%
low
Tool '${node.name}' has no annotations annotation_checker · 100%
low
Tool 'memlab_array_group_by' has no annotations annotation_checker · 100%
low
Tool 'memlab_search_strings' has no annotations annotation_checker · 100%
low
Tool 'memlab_module_attribution' has no annotations annotation_checker · 100%
low
Tool 'memlab_tools' has no annotations annotation_checker · 100%
low
Tool 'memlab_detached_dom' has no annotations annotation_checker · 100%
low
Tool 'memlab_dominator_chain' has no annotations annotation_checker · 100%
low
Tool 'memlab_referrer_summary' has no annotations annotation_checker · 100%
low
Tool 'memlab_retainer_diff' has no annotations annotation_checker · 100%
low
Tool 'memlab_unit_cost' has no annotations annotation_checker · 100%
low
Tool 'memlab_what_if' has no annotations annotation_checker · 100%
medium
OAuth implementation without PKCE auth_checker · 75%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Excessive dependency count: 120 direct dependencies dependency_analyzer · 90%
medium
Suspicious package name: react-reconciler dependency_analyzer · 60%
medium
Suspicious package name: react-dom dependency_analyzer · 60%
medium
Suspicious package name: react-scripts dependency_analyzer · 60%
medium
Vulnerable dependency: minimist@1.2.0 (GHSA-vh95-rmgr-6w4m) dependency_analyzer · 95%
medium
Vulnerable dependency: minimist@1.2.0 (GHSA-xvch-5gv4-984h) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.72.0 (GHSA-38r7-794h-5758) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.72.0 (GHSA-4vvj-4cpr-p986) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.72.0 (GHSA-8fgc-7cc6-rx7x) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.72.0 (GHSA-hc6q-2mpp-qw7j) dependency_analyzer · 95%
medium
Vulnerable dependency: @babel/traverse@7.16.3 (GHSA-67hx-6x53-jw92) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.97.1 (GHSA-38r7-794h-5758) dependency_analyzer · 95%
medium
Vulnerable dependency: webpack@5.97.1 (GHSA-8fgc-7cc6-rx7x) dependency_analyzer · 95%
medium
High-entropy string (6.00 bits/char) in facebook-memlab-cd6d72d/packages/lens/src/tests/lib/babel.prod.js:3 entropy_analyzer · 54%
info
Tool: memlab_get_value manifest_parser · 70%
high
Long unicode escape chain in facebook-memlab-cd6d72d/packages/lens/src/tests/lib/babel.prod.js:3 entropy_analyzer · 80%
info
package.json metadata manifest_parser · 100%
info
Tool: memlab_find_by_shape manifest_parser · 70%
info
Tool: memlab_identify manifest_parser · 70%
info
Tool: memlab_sliced_strings manifest_parser · 70%
info
Tool: memlab_get_property manifest_parser · 70%
info
Tool: memlab_largest_objects manifest_parser · 70%
info
Tool: memlab_match_object manifest_parser · 70%
info
Tool: memlab_finding_index manifest_parser · 70%
info
Tool: memlab_metric manifest_parser · 70%
info
Tool: ... manifest_parser · 75%
info
Tool: memlab_app_config manifest_parser · 70%
info
Tool: memlab_async_census manifest_parser · 70%
info
Tool: memlab_app_heap manifest_parser · 70%
info
Tool: memlab_snapshot_header manifest_parser · 70%
info
Tool: memlab_object_cost_breakdown manifest_parser · 70%
info
Tool: memlab_reports manifest_parser · 70%
info
Tool: memlab_aggregate manifest_parser · 70%
info
Tool: memlab_object_shape manifest_parser · 70%
info
Tool: memlab_next_measurement manifest_parser · 70%
info
Tool: memlab_diff_snapshots manifest_parser · 70%
info
Tool: memlab_settle_check manifest_parser · 70%
info
Tool: memlab_collection_trend manifest_parser · 70%
info
Tool: memlab_ladder_probe manifest_parser · 70%
info
Tool: memlab_global_variables manifest_parser · 70%
info
Tool: memlab_cache_analysis manifest_parser · 70%
info
Tool: memlab_quick_diagnosis manifest_parser · 70%
info
Tool: memlab_trace_dominators manifest_parser · 70%
info
Tool: memlab_analyze_run manifest_parser · 70%
info
Tool: memlab_retainer_summary manifest_parser · 70%
info
Tool: memlab_dev_artifacts manifest_parser · 70%
info
Tool: memlab_explain_delta manifest_parser · 70%
info
Tool: memlab_dominator_attribution manifest_parser · 70%
info
Tool: memlab_for_each manifest_parser · 70%
info
Tool: memlab_search_nodes manifest_parser · 70%
info
Tool: memlab_intern_opportunities manifest_parser · 70%
info
Tool: memlab_duplicate_objects manifest_parser · 70%
info
Tool: memlab_get_node manifest_parser · 70%
info
Tool: memlab_map_entries manifest_parser · 70%
info
Tool: memlab_hypothesis manifest_parser · 70%
info
Tool: memlab_leak_report manifest_parser · 70%
info
Tool: memlab_eval manifest_parser · 70%
info
Tool: memlab_property_names manifest_parser · 70%
info
Tool: memlab_get_referrers manifest_parser · 70%
info
Tool: memlab_load_snapshot manifest_parser · 70%
info
Tool: memlab_sequence_analysis manifest_parser · 70%
info
Tool: memlab_script_census manifest_parser · 70%
info
Tool: memlab_string_patterns manifest_parser · 70%
info
Tool: memlab_class_histogram manifest_parser · 70%
info
Tool: memlab_growth_signals manifest_parser · 70%
info
Tool: memlab_retainer_trace manifest_parser · 70%
info
Tool: memlab_property_distribution manifest_parser · 70%
info
Tool: memlab_snapshot_summary manifest_parser · 70%
info
Tool: memlab_auto_investigate manifest_parser · 70%
info
Tool: memlab_verify_fix manifest_parser · 70%
info
Tool: memlab_hunt_report manifest_parser · 70%
info
Tool: memlab_identity_diff manifest_parser · 70%
info
Tool: memlab_dominator_subtree manifest_parser · 70%
info
Tool: memlab_event_listener_leaks manifest_parser · 70%
info
Tool: memlab_pinch_points manifest_parser · 70%
info
Tool: memlab_event_registry manifest_parser · 70%
info
Tool: memlab_artifact_budget manifest_parser · 70%
info
Tool: memlab_batch manifest_parser · 70%
info
Tool: memlab_get_references manifest_parser · 70%
info
Tool: memlab_find_nodes_by_class manifest_parser · 70%
info
Tool: memlab_ladder manifest_parser · 70%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
info
Tool: memlab_server_status manifest_parser · 70%
info
Tool: memlab_trace_all manifest_parser · 70%
info
Tool: memlab_find_by_property manifest_parser · 70%
info
Tool: memlab_collection_diff manifest_parser · 70%
info
Tool: memlab_retainer_layers manifest_parser · 70%
info
Tool: memlab_shape_histogram manifest_parser · 70%
info
Tool: memlab_closure_inspection manifest_parser · 70%
info
Tool: memlab_census_diff manifest_parser · 70%
info
Tool: memlab_duplicated_strings manifest_parser · 70%
info
Tool: memlab_snapshots manifest_parser · 70%
info
Tool: memlab_weakmap_entries manifest_parser · 70%
info
Tool: memlab_population_diff manifest_parser · 70%
info
Tool: memlab_check_health manifest_parser · 70%
info
Tool: memlab_stale_collections manifest_parser · 70%
info
Tool: memlab_eval_across manifest_parser · 70%
info
Tool: memlab_weakref_census manifest_parser · 70%
info
Tool: memlab_get_string manifest_parser · 70%
info
Tool: ${node.name} manifest_parser · 75%
info
Tool: memlab_array_group_by manifest_parser · 70%
info
Tool: memlab_search_strings manifest_parser · 70%
info
Tool: memlab_module_attribution manifest_parser · 70%
info
Tool: memlab_tools manifest_parser · 70%
info
Tool: memlab_detached_dom manifest_parser · 70%
info
Tool: memlab_dominator_chain manifest_parser · 70%
info
Tool: memlab_referrer_summary manifest_parser · 70%
info
Tool: memlab_retainer_diff manifest_parser · 70%
info
Tool: memlab_unit_cost manifest_parser · 70%
info
Tool: memlab_what_if manifest_parser · 70%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (7) manifest_parser · 80%
medium
Permission: network access detected permission_analyzer · 70%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 74 components sbom_generator · 100%
high
Generic API Key Assignment found in facebook-memlab-cd6d72d/website/docusaurus.config.js secret_scanner · 75%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%