EdgeDepth Research
NPM · @EDGEDEPTH/RESEARCH-MCP · 2 COMPONENTS · SCANNED SEP 21
Test crypto and TradFi-perpetual claims using recorded counts, baselines, and replay.
Available components
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 Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 6 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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 7763 tokens (~352/item across 22 items; 18 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 Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% 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 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 20 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
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
claude mcp add com-edgedepth-research -- npx -y @edgedepth/research-mcp
{
"mcpServers": {
"com-edgedepth-research": {
"command": "npx",
"args": [
"-y",
"@edgedepth/research-mcp"
]
}
}
} {
"servers": {
"com-edgedepth-research": {
"command": "npx",
"args": [
"-y",
"@edgedepth/research-mcp"
]
}
}
} codex mcp add com-edgedepth-research -- npx -y @edgedepth/research-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-edgedepth-research": {
"type": "local",
"command": [
"npx",
"-y",
"@edgedepth/research-mcp"
],
"enabled": true
}
}
} openclaw mcp add com-edgedepth-research --command npx --arg -y --arg @edgedepth/research-mcp
mcp_servers:
com-edgedepth-research:
command: "npx"
args: ["-y", "@edgedepth/research-mcp"] {
"McpServers": {
"com-edgedepth-research": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@edgedepth/research-mcp"
]
}
}
} assistant mcp add com-edgedepth-research -t stdio -c npx -a -y @edgedepth/research-mcp
{
"mcpServers": {
"com-edgedepth-research": {
"command": "npx",
"args": [
"-y",
"@edgedepth/research-mcp"
]
}
}
} 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.
- 21 Sept 26 0
- Stability: 0.97 → pass security
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +22
- Malware scan: unverified → pass ▲ security
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 0.84 ▲ functional
- Stability: pass → 0.80 functional
- 14 Sept 26 −25
- Malware scan: pass → unverified ▼ security
- Known CVEs: pass → unverified ▼ security
- Dependency health: 0.84 → unverified ▼ functional
- Package version: 0.8.1 → 0.9.0 functional
- 13 Sept 26 0
- Stability: 0.97 → pass security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
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 21 Sept 2026 · Analysed npm/@edgedepth/research-mcp@0.9.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 →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
base_rate Base rate of a single condition ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| field | string | yes | A feature.* or window.* id from list_features (e.g. feature.vpin). |
| from | string | yes | Window start, RFC3339. |
| operator | string | yes | gte, 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. |
| to | string | yes | Window end, RFC3339. |
| value | – | yes | A 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 Commonality across N moments ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| moments | array | yes | At least 2 moments: { symbol: lowercase perp, at: RFC3339 }. |
No output schema declared.
No examples provided.
get_investigation_bundle Read stored investigation evidence ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | – | Include all pinned input observations; default is compact. |
| id | string | yes | Exact stored bundle id from an evidence link. |
No output schema declared.
No examples provided.
get_report List reports or fetch one by hash ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | – | Return complete pinned API bytes only when exact evidence is needed. |
| hash8 | string | – | Optional 8 lowercase hex canonical id. Omit to list public reports. |
No output schema declared.
No examples provided.
ground_screenshots Locate chart screenshots in the recorded data ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | Host-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 Interpret prose into a proposed research document ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | yes | The 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_zone | string | – | 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 Read the lead-up to a grounded screenshot event ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | Host-extracted screenshot_observation.v1. Read edgedepth://research/screenshots; retain visible/inferred/user/missing provenance. Never send image bytes or URLs. |
| event_id | string | yes | An event_id returned by successful grounding, without changing the observation. |
| family | string | – | Only request a supported recorded detector; omission performs no geometry read. |
| full_sources | boolean | – | 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… |
| study | object | – | 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 List research features (the grammar registry) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | 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_ids | array | – | 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. |
| search | string | – | 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 List research instruments and coverage ~219
Use this when you need to verify supported symbols, recorded coverage, data availability, or whether an instrument is a session-bound TradFi perpetual 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.
| Name | Type | Req | Description |
|---|---|---|---|
| full | boolean | – | True for the verbatim ~360 KB canonical universe bytes. |
| if_none_match | string | – | 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 Fetch the next page of a prior scan ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | yes | The opaque page.cursor from the previous response. Never construct or edit it. |
| document | object | yes | The EXACT document from the prior run_scan. |
| full_counts | boolean | – | 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_outcomes | boolean | – | 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_rows | boolean | – | 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_match | string | – | Optional ETag to revalidate this page. |
| rows | integer | – | 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 What preceded moves like this ~967
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. 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 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, ne…
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | yes | up or down. |
| from | string | yes | Window start, RFC3339. |
| full_rows | boolean | – | 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… |
| horizon | string | yes | A closed suffix: 30m, 1h, 4h, 24h, 72h, 7d. Not an ISO duration. |
| if_none_match | string | – | 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/"..."). |
| kind | string | yes | reached: the extreme touched the size at any point inside the horizon. finished: the close was there at the end of it. |
| magnitude | number|string | yes | A 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.… |
| pointed | object | – | 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. |
| rows | integer | – | 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. |
| to | string | yes | Window end, RFC3339. |
No output schema declared.
No examples provided.
prepare_study Prepare a study without computation ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| outcome | object | yes | Magnitude 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. |
| scope | object | yes | Exact symbols and ISO timestamps with explicit UTC offset. No date defaults. Venue/type optional when current symbol is unambiguous. |
| setup | array | yes | Common 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… |
| source | object | – | – |
No output schema declared.
No examples provided.
resolve_scope Resolve an explicit crypto sector population ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| sector | string | – | – |
| symbol | string | yes | – |
No output schema declared.
No examples provided.
run_cohort Run a cohort comparison study (record_occurrences) ~551
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.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | A complete research_query.v2 document (target record_occurrences, WHERE-ONLY - no sequence). Call list_features for the grammar; do not invent field names. |
| full_counts | boolean | – | 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_outcomes | boolean | – | 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_rows | boolean | – | 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_match | string | – | 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/"..."). |
| rows | integer | – | 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.
run_scan Run a research scan (record_occurrences) ~897
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…
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | A complete research_query.v2 document (target record_occurrences, stated chips only). Call list_features for the grammar; do not invent field names. |
| full_counts | boolean | – | 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_outcomes | boolean | – | 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_rows | boolean | – | 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_match | string | – | An ETag from a previous run to revalidate: identical data answers 304 and spends nothing. Pass it back verbatim (it may be weak, W/"..."). |
| measure | object | – | Optional agreed outcome for the workbench link only: kind close means finished, touch means reached; magnitude is a fraction (0.02 means 2%). Preserve the user's exact choice, including the original… |
| rows | integer | – | 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.
run_stratified Split one population three ways at its own anchors ~341
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.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | A 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_match | string | – | 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/"..."). |
No output schema declared.
No examples provided.
run_trade_test Test explicit entry, stop and exit rules ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| document | object | yes | trade_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_trades | boolean | – | Return every journal row and canonical result bytes. Default returns the complete summary and first 10 chronological journal examples. |
| if_none_match | string | – | Previous ETag from this same projection for a free revalidation. |
No output schema declared.
No examples provided.
snapshot_at Read the registry as-of a moment ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| at | string | yes | An RFC3339 datetime; the engine floors it to the grid bucket that contains it. |
| symbol | string | yes | Lowercase perp, e.g. btcusdt. |
No output schema declared.
No examples provided.
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 and TradFi-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 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 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 18 tools: ground_screenshots, investigate_move, list_features, list_instruments, resolve_scope, and 13 more. Their descriptions and schemas cost roughly 6,062 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 21 September 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.