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

EdgeDepth Research

NPM · @EDGEDEPTH/RESEARCH-MCP · 2 COMPONENTS · SCANNED AUG 3

Search recorded crypto and TradFi microstructure through deterministic, reproducible agent tools.

+63 this week 63 Trust /100
Trust breakdown (6 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 →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (95 of 96), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (95 of 96), so this covers what we could see, not the whole tree. 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 2 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability49
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2660 tokens (~266/item across 10 items; 10 tools + 0 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 Management22
  • Stability check failed: the tool surface changed between 0.2.1 and 0.2.5: 0 tool removals, 1 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @edgedepth/research-mcp

# add to Claude Code
claude mcp add com-edgedepth-research -- npx -y @edgedepth/research-mcp
# add to Codex CLI
codex mcp add com-edgedepth-research -- npx -y @edgedepth/research-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-edgedepth-research": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@edgedepth/research-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-edgedepth-research --command npx --arg -y --arg @edgedepth/research-mcp
# ~/.hermes/config.yaml
mcp_servers:
  com-edgedepth-research:
    command: "npx"
    args: ["-y", "@edgedepth/research-mcp"]
// mcp.json
{
  "mcpServers": {
    "com-edgedepth-research": {
      "command": "npx",
      "args": [
        "-y",
        "@edgedepth/research-mcp"
      ]
    }
  }
}
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.

  • 3 Aug 26 −3
    • Package version: 0.2.4 → 0.2.5 functional
  • 2 Aug 26 +48
    • Stability: unverified → fail security
    • Provenance: unverified → fail security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • Malware scan: unverified → pass security
    • Maintenance: unverified → pass functional
    • Dependency health: unverified → partial functional
    • License: unverified → pass functional
    • MCP protocol: unverified → pass functional
    • Schema quality: unverified → good functional
    • Licence: MIT functional
  • 31 Jul 26 −10
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +20
    • Provenance: unverified → fail security
    • Install scripts: unverified → pass security
    • Known CVEs: unverified → partial security
    • License: unverified → pass functional
    • Maintenance: unverified → pass functional
    • Schema quality: Schema quality not yet verified: our sandbox run of this package did not complete, so we have no schema to assess. functional
    • Tool coverage: Tool coverage not yet verified: our sandbox run of this package did not complete, so we have no tool definitions to assess. functional
    • Licence: MIT functional
    • Package version: 0.2.3 → 0.2.4 functional
  • 29 Jul 26 −44
    • Known CVEs: partial → unverified security
    • Provenance: fail → unverified security
    • Install scripts: pass → unverified security
    • Source repository: fail → pass security
    • License: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Maintenance: pass → unverified functional
    • Licence: MIT functional
    • Package version: 0.2.3 → 0.2.4 functional
  • 28 Jul 26 +52
    • Provenance: unverified → fail security
    • Known CVEs: unverified → partial security
    • Install scripts: unverified → pass security
    • License: unverified → pass functional
    • Tool coverage: unverified → 100 functional
    • Maintenance: unverified → pass functional
    • Dependency health: unverified → partial functional
    • First check of Tool coverage: 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • Licence: MIT functional
  • 27 Jul 26 0

    First indexed and scored.

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 3 Aug 2026 · Analysed npm/@edgedepth/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Dependencies 95 packages

95 packages in the resolved dependency tree · 95 deprecated · 29 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 10 exposed · ~2,516 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.

Tool Tokens
base_rate ~299

Measure how often a SINGLE stated condition is true over all eligible symbol-minute buckets in a window. base_rate_result.v1 reports predicate_true_buckets, predicate_false_buckets, eligible_buckets, absent_or_ineligible_buckets and true prevalence globally and per symbol. This is not a count of false-to-true occurrence episodes and computes no forward outcomes. Missing values are excluded from eligible, never coerced to false or zero. Deterministic and free, including reruns. field, operator and value must be grammar-valid (see list_features); expect the 422 contract code verbatim if not. The assembled one-clause document is echoed back so you can show the user exactly what ran.

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.
symbolOptional 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.
valueyesA 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 ~117

Given N (symbol, time) moments, return the DETERMINISTIC intersection: per registry field a verdict of agree, partial, disagree, quiet or absent, plus the survivorship and multiple-comparisons honesty framing IN the output. Never similarity search. A shared feature is a description of the chosen moments, not a prediction: to test any AGREE chip, follow up with base_rate over the same window.

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

No output schema declared.

No examples provided.

get_report ~108

Omit hash8 to list published archive and record reports with count, revision and explicit integrity status. Provide an 8-hex canonical hash to fetch one report: structurally generated title, author, the definition that ran (re-submittable to run_scan) and the result pinned at publish time. Invalid or withdrawn reports carry correction and successor metadata and must not be presented as healthy.

NameTypeReqDescription
hash8stringOptional 8 lowercase hex canonical id. Omit to list public reports.

No output schema declared.

No examples provided.

interpret_prose ~198

Turn a plain-language market question into a PROPOSED research_query.v2 document. The result is a proposal, not a result: it is labeled proposal:true and is never executed here. Show the document (plus any unsupported[] stand-ins and clarify notices) to the user, then call run_scan with the document to execute. That second call is the confirm gate. Requires the research:interpret scope and is metered separately (each call spends provider money).

NameTypeReqDescription
languagestringyesThe market question in plain language, e.g. "vpin above 0.7 then a liquidation surge within 30m on majors last week".
time_zonestringOptional 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.

list_features ~101

Return the closed registry for the pinned feature_version: every feature id with its dtype and range, the operators, window aggregates and durations, sequence rules, limits, sort fields, and the machine-readable validation and transport error-code lists. Call this FIRST: a document that only uses ids from here cannot invent field names. The registry is ETag-revalidated on every read, so additive feature ids become visible to long-running agents without inventing or hard-coding fields.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_instruments ~265

Return the authoritative feature-store universe derived from complete manifests. DEFAULT: a compact deterministic summary (coverage window, dataset revision, instrument counts by availability status) - the full body is ~360 KB and overflows agent contexts. Pass symbols: ["btcusdt", ...] for the complete canonical records of specific instruments (per-instrument coverage, present/excluded partition counts, provenance, replay entitlement). Pass full: true for the verbatim canonical bytes of the whole universe. Excluded symbol-days remain visible as universe membership. NVDAUSDT and QQQUSDT are Binance USDT-M perpetuals referencing TradFi assets, not direct Nasdaq data. This read is deterministic and free in every mode.

NameTypeReqDescription
fullbooleanTrue for the verbatim ~360 KB canonical universe bytes.
if_none_matchstringOptional 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…
symbolsReturn 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 ~226

Continue a prior run_scan by re-sending the SAME document with the opaque cursor from the previous response. Never construct cursors. If X-Dataset-Revision changed since page 1, the data under THIS document changed (e.g. the nightly append) and the result set with it: restart from page 1. The revision is scoped to the document's symbols and window - never compare revisions across different documents. Every page has its own ETag and remains free, including a continuation cache miss. Complete-result counts and summaries remain independent of the page rows. Same counts_by_symbol projection as run_scan; full_counts: true for verbatim bytes.

NameTypeReqDescription
cursorstringyesThe opaque page.cursor from the previous response. Never construct or edit it.
documentobjectyesThe EXACT document from the prior run_scan.
full_countsbooleanTrue returns the engine's verbatim canonical bytes, including every zero-count instrument in counts_by_symbol. Default omits zero-count entries.
if_none_matchstringOptional ETag to revalidate this page.

No output schema declared.

No examples provided.

run_cohort ~429

Execute a research_query.v2 document as a predicate-complement comparison and return canonical cohort_result.v2 bytes: what followed the condition (the treatment side, byte-identical to the run_scan outcomes_summary for the same document) vs what followed every OTHER eligible bucket where the full predicate was FALSE (the baseline), each as the same 30m/1h/4h/24h return + MFE/MAE summary over ALL occurrences. WHERE-ONLY: a sequence document is refused with 422 COHORT_SEQUENCE_UNSUPPORTED (run it as an ordinary run_scan instead). The bytes carry NO ratios, lift, averages or significance - you compare the two distributions yourself. This is not covariate matching: treatment/baseline identities, different observation units, dedupe difference, and denominator arithmetic ship in the result with three mandatory caveats. Both sides honour the completeness rule: an occurrence closer to the end of recorded data than a horizon has that horizon ABSENT - quote present, not total, as the denominator. CONTRACT (relay to the user): Echo the exact document and the reproducibility key to the user 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 rerun of the same document is served from cache (X-Research-Cache: hit) in its own cohort namespace; 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_countsbooleanTrue returns the engine's verbatim canonical bytes, including any zero-count instrument in counts_by_symbol. Default omits zero-count entries when present.
if_none_matchstringAn ETag from a previous cohort 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_scan ~620

Execute a research_query.v2 document over the deterministic engine and return counts, denominators, outcomes_summary, the reproducibility key and page-1 rows as the engine's canonical bytes. outcomes_summary carries forward outcomes over FOUR horizons per occurrence: 30m return, 1h MFE/MAE, and 4h and 24h return + MFE/MAE (record_result.v3), with a closed threshold ladder to +/-20 pct - "how often did this setup reach +5% within 24h, with how much drawdown" is answered by the summary over ALL occurrences. Completeness caveat: an occurrence closer to the end of recorded data than a horizon has that horizon ABSENT (counted in the absent tally, never a truncated or implied-zero outcome) - quote present, not total_matching, as the denominator for any horizon rate. Document-only input: stated chips are the only input the scan path accepts (use interpret_prose first if you have prose, then re-submit its document). CONTRACT (relay to the user): Echo the exact document and the reproducibility key to the user 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; both normalize to canonical ISO before hashing. identity.symbol must be an exact lowercase Binance USDT-M perpetual symbol: case, whitespace and separators are rejected. You may rerun freely: a rerun of the same document is served from cache (X-Research-Cache: hit), and reruns and 304 revalidations are free. SIZE: page rows carry full 33-feature setup vectors (~2 KB each); page.limit 50 returns ~120 KB, which can overflow an agent context. Counts, outcomes_summary and representatives are complete-result regardless of page size - set page.limit 1-5 unless you need row-level evidence, then page with next_page. PROJECTION: counts_by_symbol lists only instruments with at least one match; the number of zero-co…

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_countsbooleanTrue returns the engine's verbatim canonical bytes, including every zero-count instrument in counts_by_symbol (~150 KB+ for universe scans). Default omits zero-count entries and states how many were…
if_none_matchstringAn ETag from a previous 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.

snapshot_at ~153

Read the engine registry AS-OF the grid bucket containing a moment: every feature value, the closed-list window aggregates, and the fired rulebook ids, as the engine's canonical bytes. A read, never a scan (not credit-metered). Use it to turn one observed moment into candidate clauses, then run_scan to find every other time it looked like that. Selection discipline: if you picked the moment because it moved, expect the follow-up scan to deflate over all occurrences. That is the product working.

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.