Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

EdgeDepth Research

NPM · @EDGEDEPTH/RESEARCH-MCP · 2 COMPONENTS

Test crypto-perpetual claims using recorded counts, baselines, and replay.

−1 this week 77 Trust /100

Last scanned (9 hours ago)

Scores higher than 55% of npm servers

Category Crypto and Web3

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 30 of 93 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability72
  • 91% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9208 tokens (~341/item across 27 items; 23 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage94
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 83% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 23 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 −2
    • Stability: pass → 0.90 functional
  • 28 Oct 26 +1
    • Stability: 0.97 → pass security
  • 27 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 21 Oct 26 +1
    • Stability: 0.97 → pass security
  • 20 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +3
    • Stability: 0.83 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@edgedepth/research-mcp@0.11.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 93 packages
Packages resolved 93
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 23 exposed · ~7,386 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
base_rate ~233

Use this when the user asks how common one exact condition was across eligible symbol-minute buckets in a time window. It returns true, false, eligible, and absent/ineligible counts plus prevalence. Do not use this for occurrence episodes, forward outcomes, multi-condition studies, or causal claims. Missing values are excluded rather than treated as false. This is a free deterministic computation.

NameTypeReqDescription
fieldstringyesA feature.* or window.* id from list_features (e.g. feature.vpin).
fromstringyesWindow start, RFC3339.
operatorstringyesgte, lte, between, eq or in - matching the field dtype.
symbol––Optional scope: one lowercase perp or a JSON array of them. Omit for the whole universe. A string-encoded array is repaired deterministically.
tostringyesWindow end, RFC3339.
value–yesA number for numeric fields (send a JSON number, not a quoted string), a label for enum fields, or an array for between/in. String-encoded numbers and arrays are repaired deterministically.

No output schema declared.

No examples provided.

commonality ~88

Use this when the user supplied at least two exact historical moments and wants the deterministic feature intersection across them. Do not use this as similarity search or treat shared features as predictive evidence; test an agreed condition separately with base_rate or run_scan. This is a free deterministic computation.

NameTypeReqDescription
momentsarrayyesAt least 2 moments: { symbol: lowercase perp, at: RFC3339 }.

No output schema declared.

No examples provided.

get_hypothesis ~135

Use this when reading your saved hypothesis or original observation. Do not use for general market scans or other accounts. Private Radar admin pilot. With id, read the account-owned saved definition, all attempted variants, counts, failures and supporting/contradictory examples. With event, read only the original Radar observation and an explicitly unrun example draft; never future outcomes. With neither, list your hypotheses. full=true restores every saved receipt. Opening never computes, retries or spends allowance. Other users cannot read these records.

NameTypeReqDescription
eventstring––
fullboolean––
idstring––

No output schema declared.

No examples provided.

get_investigation_assessment ~175

Use this when the user wants the saved interpretation of a move by publication id. Returns the same explanation, supporting and challenging evidence, alternatives, next checks, exact market/window/as-of, source revisions and evidence gaps used by web pages and channel drafts. Optional edition pins the expected release; stop on 409 (changed) or 410 (corrected), never substitute newer evidence silently. This does not create an assessment, call an LLM, compute comparisons, consume study allowance or publish. Do not use this as causal proof, a forecast or a validated trading lesson. Use get_investigation_bundle for underlying recorded evidence; propose new studies separately with explicit approval.

NameTypeReqDescription
editionstring–Exact expected released edition hash, if already known.
idstringyesPublication id from a saved investigation URL.

No output schema declared.

No examples provided.

get_investigation_bundle ~152

Use this when the user wants an existing versioned investigation by its SHA256 id. Compact by default; full=true restores pinned input observations. Deterministic descriptive metrics, exact event/as-of bounds, contradictions and missing analyses come from the same API as the web. No model call, new investigation, scan, allowance debit or publication. Missing comparable populations must remain unavailable; propose an exact study through the existing approval flow before computing them. Do not use this to infer initiators, causality, spot lead/lag, hidden liquidations or forecasts.

NameTypeReqDescription
fullboolean–Include all pinned input observations; default is compact.
idstringyesExact stored bundle id from an evidence link.

No output schema declared.

No examples provided.

get_report ~127

Use this when the user wants to list citable public EdgeDepth reports or retrieve one by its 8-character canonical hash. Default is a compact 1h overview with counts and stored integrity status; full:true returns the exact definition and pinned result. Do not use this to present invalid or withdrawn reports as healthy, and do not use this for unpublished user research. This is a free read.

NameTypeReqDescription
fullboolean–Return complete pinned API bytes only when exact evidence is needed.
hash8string–Optional 8 lowercase hex canonical id. Omit to list public reports.

No output schema declared.

No examples provided.

ground_screenshots ~142

Use this when the host has read one or more attached chart screenshots and needs to verify their exact market and close boundaries against recorded candles and coverage for free. Read edgedepth://research/screenshots first. It separates uncertainty, missing dates, price conflicts and duplicate event views. Do not use this to guess dates, substitute venues or nearby moves, interpret hidden readings, or run a study. The host supplies structured facts; the server has no automatic attachment access.

NameTypeReqDescription
documentobjectyesHost-extracted screenshot_observation.v1. Read edgedepth://research/screenshots; retain visible/inferred/user/missing provenance. Never send image bytes or URLs.

No output schema declared.

No examples provided.

interpret_prose ~305

Use this when raw-prose clients need fallback interpretation or the host cannot construct structured intent. Prefer prepare_study for capable AI hosts; this tool adds an external interpreter call. Pass the user question unchanged, without filling in unstated thresholds, dates, markets or outcomes. It returns a proposed research_query.v2 document, chip provenance, unsupported fragments, and clarification notices; it never runs the scan. Show one short plain-English proposal with condition, markets, dates, outcome/horizon and metering. Label inferred or unprovided values as assumptions needing approval. Keep JSON and diagnostics in tool details, available on request. Resolve unsupported fragments and ask only material questions. Call run_scan only after explicit human confirmation, submitting the same document. Do not use this for live quotes, trading advice, trade execution, or when the caller already supplied an exact document. This free proposal step uses the configured external language interpreter.

NameTypeReqDescription
languagestringyesThe user question verbatim. Do not expand it with thresholds, dates, markets or outcome definitions the user did not supply. For example: "vpin above 0.7 then a liquidation surge within 30m on majors…
time_zonestring–Optional IANA identity used only to interpret local calendar language, for example Asia/Bangkok. Omit to use the public API default, UTC. Explicit prose such as "June 7 UTC" overrides this default. A…

No output schema declared.

No examples provided.

investigate_move ~329

Use this when ground_screenshots resolved an event and the user wants its existing recorded lead-up or supported detector geometry, optionally preparing an exact editable setup. This rechecks the same coordinates and uses the web investigation owners; it never launches a scan and consumes no allowance. Historical snapshot entitlement and replay access still apply. Optional study preserves its exact market roster, UTC dates, reached versus finished, direction, magnitude and horizon. Do not use this on unresolved images, as an automatic drawing recognizer, for a forward rate, or as evidence that a winning screenshot sample validates a setup. Show a short concrete proposal and obtain explicit human confirmation before using the returned document with run_scan or outcome_first. Same-period results remain exploratory; check a separate period before validation claims.

NameTypeReqDescription
documentobjectyesHost-extracted screenshot_observation.v1. Read edgedepth://research/screenshots; retain visible/inferred/user/missing provenance. Never send image bytes or URLs.
event_idstringyesAn event_id returned by successful grounding, without changing the observation.
familystring–Only request a supported recorded detector; omission performs no geometry read.
full_sourcesboolean–True restores raw snapshot bodies and detector candle bars. The default explicitly omits these duplicates; exact setup documents, values, tape gaps and parity remain. Re-reads are free but may see a…
studyobject–Explicit outcome_first_query.v1 with unique symbols roster, UTC window and full target. Prepares setup documents and estimates only; neither a proposal nor this argument is approval.

No output schema declared.

No examples provided.

list_features ~283

Use this when you need the valid EdgeDepth query grammar, supported feature ids, operators, windows, limits, or machine-actionable error codes before constructing or repairing a query document. For a natural-language question, construct structured intent and use prepare_study; it already uses the registry-backed interpreter. Do not use this to answer a market question; it returns capabilities, not historical evidence. Do not invoke even this capability lookup for live prices, personalized buy/sell advice or trade execution. The whole registry is large: pass search or feature_ids to read one family, and compact to drop the per-feature prose. This is a free deterministic read.

NameTypeReqDescription
compactboolean–True drops each feature's prose description and the instrument examples, keeping dtype, range, unit, observation_scope and implemented. Use it once you know what a feature measures and only need the…
feature_idsarray–Exact feature ids to return, e.g. ["feature.vpin","feature.funding_rate"]. A bare name is also matched against feature.<name>. Ids with no match are named back.
searchstring–Case-insensitive substring over feature ids and descriptions, e.g. "liquidation", "funding", "candle". Returns the matching features with the closed grammar (operators, windows, sequence rules, limit…

No output schema declared.

No examples provided.

list_instruments ~251

Use this when you need to verify supported symbols, recorded coverage, data availability, or whether an instrument remains available before running or describing research. Use symbols for selected full records; use full only when canonical whole-universe bytes are required. Do not use this to support live-price, personalized buy/sell or trade-execution requests, even to check whether a market is supported. It does not return historical outcomes. This is a free deterministic read.

NameTypeReqDescription
exchangestring–Recorded venue. Defaults to binancef. Use hl for Hyperliquid; run studies separately per venue, with explicit overlapping dates and missing-feature checks.
fullboolean–True for the verbatim ~360 KB canonical universe bytes.
if_none_matchstring–Optional ETag to revalidate an unchanged result for free. ETags are projection-scoped: pass back the ETag this tool returned for the SAME mode (full/summary/symbols). An ETag from a different mode ne…
symbols––Return only the full canonical records of these instruments (lowercase perps, e.g. ["btcusdt","ethusdt"]). A string-encoded array is repaired deterministically.

No output schema declared.

No examples provided.

next_page ~367

Use this when a prior run_scan returned an opaque page cursor and more occurrence rows are needed. Re-send the exact document and cursor; if its dataset revision changed, restart at page 1. Do not use this with a constructed or edited cursor, for a different document, or to infer rates from page rows. Continuations are free.

NameTypeReqDescription
cursorstringyesThe opaque page.cursor from the previous response. Never construct or edit it.
documentobjectyesThe EXACT document from the prior run_scan.
full_countsboolean–True returns the engine's verbatim canonical bytes with no projection at all. Default returns a projection that only ever REMOVES, and states each removal.
full_outcomesboolean–True returns the complete outcome ladders: every threshold rung and per-rung histogram for all twelve metrics, on the matched set and on the unconditional reference separately, with no rate or lift c…
full_rowsboolean–True keeps every recorded setup value on each returned row. Default keeps only the fields that row's own evidence names, which are the fields the predicate matched on.
if_none_matchstring–Optional ETag to revalidate this page.
rowsinteger–How many occurrence rows to keep in the returned projection (default 3, max 50). Rows are examples: every rate comes from outcomes_summary over all occurrences, so raise this only when you want more…

No output schema declared.

No examples provided.

outcome_first ~1,019

Use this when the user starts from an OUTCOME (a move of a stated size, in a stated direction, inside a stated horizon) and wants to know what the record was doing in the minutes before every move like it. It returns the outcome population with its denominators, a feasibility verdict, and one row per reading per lead-up offset carrying TWO counted shares: how often that reading sat outside its usual band before these moves, and how often it did so across every eligible minute in the same scope. Each row also counts the reading before the same move in the other direction (before_opposite_moves, null when that population is below the floor): a reading about as common there describes how far price moved, not which way, so never read it as direction. Every row is labelled selected on the outcome. A row is NOT a rule, a candidate, a finding or a predictor, and the row order is the gap between those two shares, which is display order and not a ranking: never present a row as something that works. The setup-first rerun each row carries lets run_scan count how often the original move followed the condition across all eligible minutes. You may describe both row shares immediately; do not claim a forward rate until that rerun returns. The same-period rerun remains exploratory, not independent validation. Keep its original target, using full_outcomes if the projection omits that rung. Do not use this to filter outcomes, to mine for a strategy, or to recommend a trade. A scope with too few realised moves is REFUSED with the counts and four honest adjustments rather than answered underpowered, and a refusal spends no allowance. Require explicit human approval of the exact study before calling this tool. Present a short plain-English confirmation with condition, markets, dates, outcome/horizon, all unprovided assumptions, and possible allowance consumption. A model-supplied flag is not human approval. After a material definition change, obtain fresh confirmation; equivalent cano…

NameTypeReqDescription
directionstringyesup or down.
fromstringyesWindow start, RFC3339.
full_rowsboolean–True returns the engine's verbatim canonical bytes: every row, every setup_first_rerun document, and the sampled episode list. That is the way to get a rerun document to hand to run_scan. It is large…
horizonstringyesA closed suffix: 30m, 1h, 4h, 24h, 72h, 7d. Not an ISO duration.
if_none_matchstring–An ETag from a previous outcome_first run to revalidate: identical data answers 304 and spends nothing. Pass it back verbatim (it may be weak, W/"...").
kindstringyesreached: the extreme touched the size at any point inside the horizon. finished: the close was there at the end of it.
magnitudenumber|stringyesA rung of the outcome ladder, as a FRACTION: 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.15, 0.2, 0.3, 0.5, 1, 2, 4. Down is capped at 1. 0.1 is a ten percent move; 10 would be a thousand percent.…
pointedobject–Optional: one move the user is asking about, { symbol, at: RFC3339 }. It must lie inside the window and the scope, and the result says whether it is inside the population it is being compared with.
rowsinteger–How many rows to keep in the returned projection (default 12). The full body is roughly 150 rows, each carrying a whole rerun document. Every count and both shares on a kept row are untouched.
symbols––Scope: a JSON array of lowercase perps (max 800), or one symbol. Omit for the whole universe. A string-encoded array is repaired deterministically. Fewer than five markets always refuses.
tostringyesWindow end, RFC3339.

No output schema declared.

No examples provided.

prepare_hypothesis ~250

Use this when proposing a bounded Radar hypothesis comparison. Do not use to execute or validate a strategy. Free deterministic preparation for the private Radar admin pilot. Supply the exact event and draft, plus existing id when revisiting. Returns an unrun proposal with exact four requests, revision, plan hash and allowance estimate; creates no account record. Draft fields are question, mechanism, challenge, from/through and reserveFrom/reserveThrough (UTC dates), population/a/b (three-item native clauses), decision (test/keep/reject), note. Reuse a draft from get_hypothesis; disclose every proposed assumption. One Binance asset; six existing numeric readings, A/B/A+B with common eligibility; population additionally allows native daily price/OI-ratio crossings. +5% MFE within 4h is fixed. Development <=31 days; seven full days before reserved evaluation; anchors end by September 11, 2026. Evaluation is never queried. Present exact scope, conditions, dates, outcome and allowance for human approval before run_hypothesis. A plan hash is not consent.

NameTypeReqDescription
draftobjectyes–
eventstringyes–
idstring––

No output schema declared.

No examples provided.

prepare_study ~319

Use this when preparing a setup-first study. Interpret the user text/image in the host, then submit structured intent here. Deterministic validation, canonical definition, provenance and fresh allowance estimate; no LLM, scan or charge. Propose assumptions explicitly, preserve reached versus finished, and ask one material clarification when needed. For EdgeDepth screenshots with a confident symbol/time, use snapshot_at to retrieve actual readings first. Never invent timestamps or thresholds. Return one short proposal for human approval; call run_scan with its unchanged document only after approval. Existing approved exact documents may run directly. Do not use for live prices or trading advice.

NameTypeReqDescription
outcomeobjectyesMagnitude is a fraction, 0.01 = 1%. Common horizon 1h/4h/24h. reached means observed path, finished means ending close. Ask which if ambiguous; do not substitute a nearby threshold.
scopeobjectyesExact symbols and ISO timestamps with explicit UTC offset. No date defaults. Venue/type optional when current symbol is unambiguous.
setuparrayyesCommon numeric fields: feature.oi_velocity_pctrank (rank 0..1), feature.vpin (0..1), feature.liq_ratio_1m (ratio). Operators gte, gt, lte, lt, eq, between. Use compact list_features only for uncommon…
sourceobject––

No output schema declared.

No examples provided.

resolve_scope ~108

Use this when a pointed move or symbol needs an explicit sector population. Do not use it to authorize computation or infer historical membership. Returns recorded sector choices, the exact eligible Binance crypto perpetual roster, coverage and membership limitations. Missing, ambiguous, thin or oversized sectors remain blocked, never broadened. Current tags are not point-in-time membership. Use the returned roster in prepare_study or investigate_move; this does not approve computation.

NameTypeReqDescription
sectorstring––
symbolstringyes–

No output schema declared.

No examples provided.

run_cohort ~667

Use this when an exact where-only research_query.v2 document has been confirmed and the user explicitly wants the matched occurrence distribution beside every other eligible predicate-false bucket. Do not use this for sequences, as a default reference baseline, for covariate matching, significance, or causal claims. Read rates from each side's present denominator. Require explicit human approval of the exact study before calling this tool. Present a short plain-English confirmation with condition, markets, dates, outcome/horizon, all unprovided assumptions, and possible allowance consumption. A model-supplied flag is not human approval. After a material definition change, obtain fresh confirmation; equivalent canonicalization does not require another approval. Keep the exact document inspectable in tool details and provide it on request; include the reproducibility key with the result. Rates come from outcomes_summary over all occurrences; page rows are examples, never the denominator. Outcome fields cannot be filtered; expect OUTCOME_IN_PREDICATE if tried. A fresh cohort computation can consume research allowance units; cache hits, reruns, and 304 revalidations are free.

NameTypeReqDescription
documentobjectyesA complete research_query.v2 document (target record_occurrences, WHERE-ONLY - no sequence). Call list_features for the grammar; do not invent field names.
full_countsboolean–True returns the engine's verbatim canonical bytes with no projection at all. Default returns a projection that only ever REMOVES, and states each removal.
full_outcomesboolean–True returns the complete outcome ladders: every threshold rung and per-rung histogram for all twelve metrics, on the matched set and on the unconditional reference separately, with no rate or lift c…
full_rowsboolean–True keeps every recorded setup value on each returned row. Default keeps only the fields that row's own evidence names, which are the fields the predicate matched on.
if_none_matchstring–An ETag from a previous cohort run to revalidate: identical data answers 304 and spends nothing. Pass it back verbatim (it may be weak, W/"...").
measureobject–Optional agreed outcome for the workbench link and widget: kind close means finished, touch means reached; magnitude is a fraction (0.02 means 2%). Preserve the user's exact choice, including the ori…
rowsinteger–How many occurrence rows to keep in the returned projection (default 3, max 50). Rows are examples: every rate comes from outcomes_summary over all occurrences, so raise this only when you want more…
study_summarystring–Carry prepare_study.summary verbatim for this exact document. Display-only proposal text, never a query field or authorization. Omit if no matching proposal summary exists.

No output schema declared.

No examples provided.

run_hypothesis ~205

Use this when executing the next request of an explicitly approved hypothesis comparison. Do not use to search combinations, open evaluation or retry unknown work. Requires research:read and research:hypotheses plus private Radar admin access. Only after human approval of the exact prepare_hypothesis proposal, submit that unchanged proposal. This records all four planned requests before running the first. Fresh API requests can each consume allowance. Continue serially using the returned continuation instead of a proposal until it is absent (at most four native requests under the same approval). Never change the definition or infer approval from a model flag/hash. No continuation means stop. After timeout or ambiguous completion, get_hypothesis first; never retry a running/unknown step. Missing, failed and negative results remain saved. The account record and web link are shared with the web interface. Reserved evaluation is never queried; no automatic trading, monitoring or validation.

NameTypeReqDescription
continuationobject––
proposalobject––

No output schema declared.

No examples provided.

run_scan ~972

Use this when an exact research_query.v2 document has been confirmed and the user wants historical occurrences and what followed. It returns the exact definition, counts with denominators, forward outcomes over all matches, an unconditional same-scope reference baseline when available, a reproducibility key, and replay-linked representatives. Read rates from outcomes_summary and use each horizon's present count as its denominator; horizons run from 30m to 7d, and a horizon absent for an occurrence is a record-edge fact that is counted absent, never a small value. Do not use this for live quotes, personalized buy/sell advice, trade execution, prose interpretation, or outcome filtering. Require explicit human approval of the exact study before calling this tool. Present a short plain-English confirmation with condition, markets, dates, outcome/horizon, all unprovided assumptions, and possible allowance consumption. A model-supplied flag is not human approval. After a material definition change, obtain fresh confirmation; equivalent canonicalization does not require another approval. Keep the exact document inspectable in tool details and provide it on request; include the reproducibility key with the result. Rates come from outcomes_summary over all occurrences; page rows are examples, never the denominator. Outcome fields cannot be filtered; expect OUTCOME_IN_PREDICATE if tried. sequence.within accepts 15m/30m/1h/4h/12h/24h and the matching ISO aliases. sort accepts times.anchor_time, outcome.mfe_24h or outcome.mfe_7d, asc or desc: an outcome sort orders the returned page only (the biggest runs first, and the max_mfe_7d representative carries a replay handoff to the biggest one) and changes no count or rate; outcome.* in a predicate is still OUTCOME_IN_PREDICATE. identity.symbol must be an exact lowercase Binance USDT-M perpetual symbol. A fresh initial scan can consume research allowance units; cache hits, continuations, reruns, and 304 revalidations are free. Succ…

NameTypeReqDescription
documentobjectyesA complete research_query.v2 document (target record_occurrences, stated chips only). Call list_features for the grammar; do not invent field names.
full_countsboolean–True returns the engine's verbatim canonical bytes with no projection at all: every zero-count instrument, every page row with its whole setup vector, the per-occurrence outcomes map and every empty…
full_outcomesboolean–True returns the complete outcome ladders: every threshold rung and per-rung histogram for all twelve metrics, on the matched set and on the unconditional reference separately, with no rate or lift c…
full_rowsboolean–True keeps every recorded setup value on each returned row. Default keeps only the fields that row's own evidence names, which are the fields the predicate matched on.
if_none_matchstring–An ETag from a previous run to revalidate: identical data answers 304 and spends nothing. Pass it back verbatim (it may be weak, W/"...").
measureobject–Optional agreed outcome for the workbench link and widget: kind close means finished, touch means reached; magnitude is a fraction (0.02 means 2%). Preserve the user's exact choice, including the ori…
rowsinteger–Example rows to retain: default 1 in compact text, 3 with full_outcomes; max 50. Rows are examples, never the denominator. full_counts restores all canonical page rows.
study_summarystring–Carry prepare_study.summary verbatim for this exact document. Display-only proposal text, never a query field or authorization. Omit if no matching proposal summary exists.

No output schema declared.

No examples provided.

run_stratified ~457

Use this when the user wants to test whether the outcome distribution of one confirmed population changes when its existing anchors are partitioned by one setup-time condition. It returns split_true, split_false, and split_absent denominators and outcomes without moving or creating anchors. Do not use this for sequences in the split, cursor populations, causal claims, or two independently selected scans. Require explicit human approval of the exact study before calling this tool. Present a short plain-English confirmation with condition, markets, dates, outcome/horizon, all unprovided assumptions, and possible allowance consumption. A model-supplied flag is not human approval. After a material definition change, obtain fresh confirmation; equivalent canonicalization does not require another approval. Keep the exact document inspectable in tool details and provide it on request; include the reproducibility key with the result. Rates come from outcomes_summary over all occurrences; page rows are examples, never the denominator. Outcome fields cannot be filtered; expect OUTCOME_IN_PREDICATE if tried. A fresh stratified computation can consume research allowance units; cache hits, reruns, and 304 revalidations are free.

NameTypeReqDescription
documentobjectyesA complete stratified_query.v1 wrapper: schema_version, population (a research_query.v2 document, target record_occurrences) and split. Call list_features for the population grammar and for the ids u…
if_none_matchstring–An ETag from a previous stratified run to revalidate: identical data answers 304 and spends nothing. Pass it back verbatim (it may be weak, W/"...").
measureobject–Optional agreed outcome for the workbench link and widget: kind close means finished, touch means reached; magnitude is a fraction (0.02 means 2%). Preserve the user's exact choice, including the ori…
study_summarystring–Carry prepare_study.summary verbatim for this exact document. Display-only proposal text, never a query field or authorization. Omit if no matching proposal summary exists.

No output schema declared.

No examples provided.

run_trade_test ~511

Use this when the user asks whether an approved setup was profitable under explicit trade rules. This is separate from descriptive run_scan outcomes. Require explicit human approval of the exact setup, roster, dates, direction, entry timing, stop, target/trail, hold, fees, slippage and overlap before running. Proposed defaults: next-minute open entry, 1% initial stop, no fixed target, 2% trailing distance from completed closes, 240-minute hold, 6 bps fee and 10 bps slippage per side, skip same-market signals until exit. Direction must be chosen explicitly. Explain stop gaps use the worse open, stop wins same-bar ambiguity, and trailing updates start next bar. Missing historical opens mean unavailable trades. A fresh run can consume allowance. Rules or scope changes require a new proposal and approval; a model flag is not approval. Use complete-result summary for win/loss counts, average wins/losses and expectancy after fees/slippage. Funding is omitted, so never call returns fully net. These are event trades, not portfolio equity or leverage. Do not use MFE maxima as realized exits or promise profitability. Preserve original question, selected measurement and source investigation in source_measurement. Limits: explicit 1-100 markets, 31 days and 5000 signals. Alerts remain web-managed setup recurrences and never execute these rules.

NameTypeReqDescription
documentobjectyestrade_query.v1 wrapper: schema_version="trade_query.v1", population=exact research_query.v2, rules={version:"trade_rules.v1",direction:"long"|"short",stop_fraction,target_fraction,trail_fraction,max_…
full_tradesboolean–Return every journal row and canonical result bytes. Default returns the complete summary and first 10 chronological journal examples.
if_none_matchstring–Previous ETag from this same projection for a free revalidation.

No output schema declared.

No examples provided.

save_hypothesis ~168

Use this when the user asks to save a hypothesis or decision. Do not use to run studies, delete history or change alerts. Requires explicit user intent to save and optional research:hypotheses permission, plus Radar admin access. Save the draft or Test/Keep/Reject decision at the known revision (0 for the id returned by preparation). Existing attempts and original source are immutable. Refuses concurrent edits; read the current history before reconciling. A failed/ambiguous save must be checked with get_hypothesis, not blindly repeated. No study, alert, trade or publication. Keep means retain for more testing, not validated edge.

NameTypeReqDescription
draftobjectyes–
eventstringyes–
idstringyes–
revisionintegeryes–

No output schema declared.

No examples provided.

snapshot_at ~123

Use this when you need the recorded feature values, window aggregates, and fired rulebook ids at one exact symbol-time, often to turn an observed moment into candidate scan clauses. Do not use this to find similar moments, compute outcomes, or infer that a selected moment is typical. Current-minute reads are available on every key; past-minute reads require the corresponding account entitlement.

NameTypeReqDescription
atstringyesAn RFC3339 datetime; the engine floors it to the grid bucket that contains it.
symbolstringyesLowercase perp, e.g. btcusdt.

No output schema declared.

No examples provided.

Install

How do I install the EdgeDepth Research MCP server?

EdgeDepth Research runs locally as an npm package, launched with npx -y @edgedepth/research-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @edgedepth/research-mcp

# add to Claude Code
claude mcp add com-edgedepth-research -- npx -y @edgedepth/research-mcp
Common questions

What is the EdgeDepth Research MCP server?

EdgeDepth Research is an MCP server listed in the public MCP registry as com.edgedepth/research. Test crypto-perpetual claims using recorded counts, baselines, and replay. This page covers its npm package (@edgedepth/research-mcp).

Is the EdgeDepth Research MCP server safe to use?

EdgeDepth Research scores 77 out of 100 on VerifyMCP. We recorded 1 known advisory against it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the EdgeDepth Research MCP server expose?

EdgeDepth Research exposes 23 tools: ground_screenshots, investigate_move, get_hypothesis, prepare_hypothesis, save_hypothesis, and 18 more. Their descriptions and schemas cost roughly 7,386 tokens of context every time the server is loaded.

Is the EdgeDepth Research MCP server still maintained?

EdgeDepth Research is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the EdgeDepth Research MCP server under?

EdgeDepth Research declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.