Skip to main content
Glama

Fahali MCP Server

Market-intelligence MCP server that ships uncertainty-aware intelligence with provenance on every response. Fahali runs an ensemble of independent detection engines across ~2,000 live crypto and US equity/ETF instruments in real time — public-market absorption patterns, liquidity anomalies, crash precursors, regime shifts — and detections are tracked against realized market outcomes in a signal→outcome ledger.

Informational only — not financial advice. Fahali detects anomalies; it does not tell you or your agent what to buy or sell.

Tools

Markets & verdict

Tool

What it returns

Minimum tier

fahali_get_market_decision

Primary market-wide judgment: what changed, why it matters, horizon, evidence, conflicts, and invalidation

Professional

fahali_get_symbol_decision

Primary binding judgment for exactly one named instrument

Professional

fahali_get_market_verdict

Audit-compatible canonical verdict path retained for existing integrations

Professional

fahali_get_market_snapshot

Live prices, changes, asset class for all instruments

Free

fahali_get_market_regime

HMM 4-regime detection: bullish/bearish/neutral/high_vol

Professional

fahali_get_market_sentiment

Sentiment history with score, source, direction

Free

fahali_get_highest_conviction_signals

Priority risk clusters with risk conviction separated from directional conviction

Free

fahali_daily_brief

Yesterday vs today market intelligence diff (alert deltas, regime, intel reference)

Free teaser / Professional

Risk & crash

Tool

What it returns

Minimum tier

fahali_get_market_risk_score

Global 0-100 market-risk context from the canonical detection snapshot; not participant or portfolio risk

Professional

fahali_get_flash_crash_risk

Uncalibrated early-warning strength and triggers; probability/action withheld unless calibrated

Professional

fahali_get_portfolio_risk

Risk score, VaR, drawdown, per-position breakdown

Elite

fahali_analyze_custom_portfolio

Stateless risk, canonical direction reconciliation, and covariance coverage for a supplied book; binding action withheld

Elite

fahali_run_shock_test

Natural-language scenario stress test with capital at risk

Free

Detection activity & flow proxies

Tool

What it returns

Minimum tier

fahali_get_detection_activity

Per-symbol detection counts and bullish-versus-bearish alert-type balance; this is alert activity, not executed trade flow

Professional

fahali_get_unusual_money_movement

Participant-agnostic, candle-derived buy-versus-sell volume imbalance with conflicts and freshness explicit

Professional

fahali_get_microstructure_proxy

Absorption observations derived from public aggregate trades and order-book snapshots, with source and limitations explicit

Professional

fahali_get_capital_flow

Measured 60-minute USD buy-vs-sell imbalance for requested symbols, or the strongest available readings. Candle-derived proxy; zero detector score does not erase measured flow

Professional

fahali_get_forecast

Crash/pump/neutral probabilities with a p10/p50/p90 uncertainty cone over the registered horizon

Professional

fahali_get_lead_time

Per engine: measured hours of warning ahead of correct calls, misses included. Quote headline — selected by recall among strata clearing the publication floor with positive lift. Never cherry-pick; always name the class and horizon

Free

fahali_get_market_briefing

Full executive market analysis for today; PARTIAL when subsystems disagree

Professional

Contagion & correlation

Tool

What it returns

Minimum tier

fahali_get_contagion_map

Contagion graph with tail-dependence edges and clusters

Elite

fahali_get_correlation_matrix

Requested-book Pearson matrix from the canonical 45-day covariance artifact, with pair observations and coverage

Free

Portfolio & alerts

Tool

What it returns

Minimum tier

fahali_get_portfolio_metrics

Sentiment momentum, cascade risk, liquidity stress, leverage

Professional

fahali_get_realtime_alerts

Unified detection feed from the active fleet right now

Professional

Persistent monitoring, history & delivery

Tool

What it returns

Minimum tier

fahali_watch_portfolio

Durable portfolio + mandate + thresholds; evaluates immediately and continuously

Elite

fahali_list_portfolio_watches

Existing watches, sources, mandates, cadence and latest verdict IDs

Elite

fahali_update_portfolio_watch

Update positions or mandate and immediately see the new judgment

Elite

fahali_get_portfolio_decision

Binding HOLD/WATCH/REDUCE/EXIT judgment with what, why, when and invalidation

Elite

fahali_get_watch_delta

What changed since the previous immutable judgment and why

Elite

fahali_get_verdict_history

Cursor- and time-queryable immutable replay, including as_of

Elite

fahali_get_verdict_by_id

One permanent judgment with its evidence and content hashes

Elite

fahali_subscribe_risk

Signed webhook/callback, Slack, Teams, account email or registered push delivery

Elite

fahali_list_risk_subscriptions

Delivery configuration and health without exposing secrets

Elite

fahali_update_subscription

Pause, resume, filter or rotate a delivery target

Elite

fahali_unsubscribe_risk

Stop delivery while preserving its audit trail

Elite

The monitor stores only user-scoped positions, mandate and evidence references. Callback configuration is encrypted. Delivery is deduplicated through a durable outbox, retried after transient failures, and marked failed rather than reported as sent when a channel does not accept it.

Proof & system

Tool

What it returns

Minimum tier

fahali_get_track_record_scorecard

Honest 4-axis accuracy with base-rate lift

Professional

fahali_get_case_studies

40 verified signal→outcome cases with track record

Professional

fahali_get_engine_status

Liveness report for the active detection fleet

Free

fahali_get_visual_intelligence

Unified constellation graph of the active fleet

Free

Related MCP server: HPSILab - Quant Finance MCP Server for Stock Analysis and Options Analytics

Connect (remote SSE)

SSE endpoint:  https://mcp.fahaliai.com/sse
Auth:          Authorization: Bearer <your sk_live_ key>
               OAuth is preferred. Query-string keys are legacy-only because URLs may be logged.

Bring your own API key. Create one free in the Fahali app: app.fahaliai.com/developer (sign in → Developer / API).

  • Free developer key — the canonical market-decision path (fahali_get_market_decision, fahali_get_symbol_decision, and the compatible fahali_get_market_verdict) with reduced depth, 50 calls/day.

  • Full key (Professional tier and above) — all tools at your subscription tier.

Local / stdio

npm install && npm run build
FAHALI_API_KEY=sk_live_... node dist/index.js --stdio

Claude Desktop config:

{
  "mcpServers": {
    "fahali": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/index.js", "--stdio"],
      "env": { "FAHALI_API_KEY": "sk_live_..." }
    }
  }
}

Cursor config (~/.cursor/mcp.json):

{
  "mcpServers": {
    "fahali": {
      "type": "sse",
      "url": "https://mcp.fahaliai.com/sse?api_key=sk_live_..."
    }
  }
}

Windsurf config: open Settings → Cascade → MCP, click Add custom server, and paste:

{
  "mcpServers": {
    "fahali": {
      "type": "sse",
      "url": "https://mcp.fahaliai.com/sse?api_key=sk_live_..."
    }
  }
}

Or edit Windsurf's MCP config file directly (location varies by OS; use the UI if unsure).

Why this server

Most market-data MCP servers proxy raw prices. Fahali returns judged intelligence: each verdict carries a confidence score, the reasoning chain that produced it, and provenance you can audit. Detection accuracy is measured continuously against realized outcomes — engines that haven't earned a number report "calibrating", never an invented one.

Multi-tenant: each SSE connection is isolated with its own key; keys are never shared across sessions. Informational only, not financial advice.

Available Tools

58 tools
fahali_acknowledge_incidentA
Idempotent

Record that an incident has been seen, which stops its escalation clock. Acknowledgment does NOT close the incident and asserts nothing about whether the risk passed — only a later verdict showing the breach cleared can resolve it. Idempotent by state: acknowledging twice returns the first acknowledgment unchanged, preserving the true responder and time, so no idempotency key is needed.

Inputs: incident_id (required), note, limit, since, +4 more. Returns: asOf, auth, claim, delta, +54 more

fahali_analyze_custom_portfolioA
Read-onlyIdempotent

Analyze measured risk for a custom inline portfolio. Returns historical VaR/expected shortfall, detection-risk observations, canonical direction reconciliation, and a requested-book covariance matrix with per-position correlation coverage. It does not apply stored monitoring thresholds; legacy hold/watch/reduce labels are non-binding monitoring priority only. fahali_get_portfolio_decision adds durable thresholds but remains monitor-only and cannot authorize portfolio or order action.

Inputs: limit, since, detail, symbols, +2 more. Returns: asOf, auth, claim, scope, +38 more

fahali_create_alertA

Create a custom alert. Agent-created alerts appear in the in-app realtime feed, hard-marked with an agent_ type prefix so they are never confused with engine detections; they do not trigger push/SMS to other users, and severity is capped at high (critical is reserved for engines).

Inputs: symbol (required), message (required), severity (required), alert_type (required), +7 more. Returns: asOf, auth, alert, claim, +35 more

fahali_daily_briefA
Read-onlyIdempotent

Lightweight daily orientation for agents that need the market state without a large payload. Returns the key change, why it matters, evidence quality, and next actions. Use market briefing for depth or market verdict for named symbols.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, note, as_of, +47 more

fahali_fact_check_narrativeA
Read-onlyIdempotent

Verify a proposed market narrative before repeating it. Each assertion returns SUPPORTED, CONTRADICTED, NO_READ, UNSUPPORTED_SOURCE, OUT_OF_SCOPE, or UNVERIFIABLE with safeToRepeat. Only SUPPORTED is repeatable; NO_READ is not agreement. The worst assertion determines the summary.

Inputs: claim (required), limit, since, detail, +2 more. Returns: asOf, auth, claim, scope, +39 more

fahali_fetch_resourceA
Read-onlyIdempotent

Fetch any catalogued Fahali resource by path. The path must come from fahali_list_resources: catalogued paths only, never arbitrary URLs and never write routes. Supply :params via path_params, filters via query. Listed does not mean entitled — a gated resource still returns its own refusal, which describes your credential, not the data.

Inputs: resource (required), limit, query, since, +4 more. Returns: asOf, auth, claim, scope, +32 more

fahali_get_active_incidentsA
Read-onlyIdempotent

List monitor-only incidents Fahali opened on your watches and is still waiting on. An incident opens when a watch reaches REDUCE/EXIT or its evidence coverage degrades, stays open until a later verdict clears it, and escalates if nobody acknowledges it in time. Use it to find what you have not answered. An empty list means nothing is open, NOT that the market is calm.

Inputs: limit, since, detail, symbols, +3 more. Returns: asOf, auth, claim, delta, +54 more

fahali_get_bundleA
Read-onlyIdempotent

One compact, authenticated market-intelligence bundle for autonomous workflows. Select the views needed and receive them under one response envelope; failed views are named explicitly and never disappear into a partial market read. Defaults include the canonical market decision, briefing, risk, regime, and conviction. Use detail='brief' unless raw evidence is required.

Inputs: limit, since, views, detail, +2 more. Returns: asOf, auth, claim, scope, +37 more

fahali_get_capabilitiesA
Read-onlyIdempotent

Start here when planning an autonomous Fahali workflow. Returns the canonical live tool catalogue, primary-versus-audit taxonomy, executable registry-validated workflows, tier requirements, response controls, supported identity rules, and schema resources. Compatibility-only names are dispatchable but deliberately absent from discovery. This call is local, lightweight, and does not query market data.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, oauth, +42 more

fahali_get_capital_flowA
Read-onlyIdempotent

Measured 60-minute USD order-flow imbalance for requested symbols, or the strongest available readings when none are supplied. Zero detector score does not erase netFlowUsd: the score measures unusualness, not data presence. Candle-derived proxy only; no exchange aggressor tape, participant identity, fund-flow attribution, or forecast.

Inputs: limit, since, detail, symbol, +2 more. Returns: asOf, auth, data, basis, +55 more

fahali_get_case_studiesB
Read-onlyIdempotent

Get verified case studies from the resolved signal-outcome moat. Returns 40 time-diverse cases with: symbol, alert type, confidence, direction (bullish/bearish/neutral), entry price, outcome price, profit/loss percent, correctness boolean, outcome kind (direction/magnitude/volatility/crash_catch), and 4h/24h returns. Covers the walk_forward engine.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, cases, claim, +34 more

fahali_get_contagion_mapA
Read-onlyIdempotent

One-hour lower-tail-dependence associations with a measured temporal layer. Arrow order is the producer's and does not prove causal transmission. Pairs in the lead-lag graph carry lagHours and leadSymbol: precedence, not causation. Check measurement.edgesWithMeasuredLag; most pairs have none. propagation gives origins, paths and arrival hours, each flagged measured or composed, with symbolsEligible for coverage. sampleSize is recurrence count. High/extreme needs repeated evidence. Requested-book Pearson: fahali_get_correlation_matrix.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, edges, +41 more

fahali_get_correlation_matrixA
Read-onlyIdempotent

Requested-book Pearson correlation from the canonical 45-day covariance artifact, with per-pair observations, alignment policy, and explicit missing coverage. Historical association only: not causality, future correlation, or a contagion direction.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, basis, claim, +45 more

fahali_get_detection_activityA
Read-onlyIdempotent

Recent detection activity per symbol with bullish and bearish alert counts. This measures what fired, not institutional identity, capital flow, or conviction. Use highest-conviction signals to apply the evidence gate and market verdict to obtain a decision.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +42 more

fahali_get_engine_boardB
Read-onlyIdempotent

Board of any contract engine by key: live claims with probability P (the served fit block states whether and how it is calibrated), attribution, input census, health, and the engine's own judged record. Adds findings[], matchedTrackRecord, recordMatchReason, ownStrataCount, record.withheldOnly. Unmeasured inputs are missing data, never calm; read the own stratum, never the headline.

Inputs: engine (required), limit, since, detail, +3 more. Returns: asOf, auth, board, claim, +40 more

fahali_get_engine_statusA
Read-onlyIdempotent

Engine liveness with event-gated, continuous, validation-only, retired, and structurally unattributed states. Incomplete measurements are null; zero is emitted only for a complete empty window and never proves an engine is down. Read dataState and freshness, then use the track-record scorecard for skill; liveness is not accuracy.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, asof, auth, claim, +44 more

fahali_get_evidenceA
Read-onlyIdempotent

Fetch the compact, content-addressed evidence behind one immutable portfolio verdict. Returns the evidence snapshot hashed at decision time plus retained source events, explicit retention gaps, canonical instrument resolution, and hash verification. Use summary detail for routine audit and full only when raw source metadata is required.

Inputs: verdict_id (required), limit, since, detail, +4 more. Returns: asOf, auth, claim, scope, +52 more

fahali_get_fall_warningsA
Read-onlyIdempotent

8-hour fall-warning board: standing warnings with probability P (the served fit block states whether and how it is calibrated) of a >=5% drawdown within 8h, attribution, input census, and the engine's own judged record. Adds findings[], matchedTrackRecord, recordMatchReason, ownStrataCount, record.withheldOnly. Unmeasured inputs are missing data, never calm; 'late' is not a claim; read the own stratum, never the headline.

Inputs: limit, since, detail, symbol, +2 more. Returns: asOf, auth, board, claim, +40 more

fahali_get_flash_crash_riskA
Read-onlyIdempotent

Current flash-crash precursor activity and affected symbols. The strength value is an uncalibrated detection score, not the probability of a crash. Use the canonical market verdict before stating direction, and the matched judged record before stating performance.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +38 more

fahali_get_forecastA
Read-onlyIdempotent

Forward distribution for one symbol — ALWAYS served: direction (up | down | range), upside / downside / range probabilities summing to 1 over the declared horizon, expected move, and cone. Read evidenceTier and judged-record reliability; caveats name what was withheld. Probabilities, never certainties; observation is not advice. Requires Agent Starter; a denial returns a typed upgrade object.

Inputs: symbol (required), limit, since, detail, +3 more. Returns: asOf, auth, cone, note, +53 more

fahali_get_highest_conviction_signalsB
Read-onlyIdempotent

Audit current risk forecasts and the complete non-binding committee product: membership, dissent, raw evidence, limitations, invalidation, current canonical-roster evidence rows, and runtime telemetry. Risk and directional conviction remain separate. Use market decision for the canonical direction authority.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, items, +37 more

fahali_get_incident_timelineA
Read-onlyIdempotent

Replay every immutable verdict Fahali recorded inside one incident's window, in order, each tagged as the opening, an intermediate, or the resolving verdict. Derived from the verdict history rather than copied onto the incident, so the hashes and methodology version are the originals. Use it to answer what Fahali knew, and when, across the life of a breach.

Inputs: incident_id (required), limit, since, detail, +2 more. Returns: asOf, auth, claim, delta, +54 more

fahali_get_lead_timeA
Read-onlyIdempotent

Verified warning time by exact engine, horizon, regime, and claim family, with recall, precision, base rate, and effective sample. Use headline for a single summary and quote its stratum. Never select a flattering row yourself; null headline means report headlineWithheldReason.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +44 more

fahali_get_market_briefingA
Read-onlyIdempotent

Current market briefing compressed from measured risk, regime, conviction, and active detections. Use for orientation, not as a substitute for a per-symbol decision. Partial, withheld, stale, and no-coverage states remain explicit.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +45 more

fahali_get_market_decisionA
Read-onlyIdempotent

Primary market judgment entry point and thin alias over the canonical arbiter. Returns its authoritative direction plus forecast, record, invalidation, complete non-binding committee evidence, current canonical-roster engine rows, and runtime telemetry. It performs no second computation. A market-wide call promotes one row; read decisionSelection.

Inputs: limit, since, detail, symbols, +2 more. Returns: asOf, auth, data, claim, +38 more

fahali_get_market_moodA
Read-onlyIdempotent

How fearful or greedy prices are, scored 0-100 separately for US stocks and crypto. Each measured price fact (trend vs 50-day average, breadth, volatility, safe-haven and junk-bond demand, alt appetite) is ranked against its own past; read ranked beside any percentile. Unreadable measures are null with a reason, never a neutral 50. A description, not a forecast or a grade. Observation, not advice.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, kind, claim, +39 more

fahali_get_market_regimeA
Read-onlyIdempotent

One market-wide regime reading: bullish, bearish, neutral_range_bound or high_volatility, with volatility, trend strength and window return. This endpoint is market-wide only and a symbol filter cannot narrow it; per-symbol regime exists via fahali_get_realtime_alerts(alert_types: 'regime_state'). The direction word the producer emits is withheld with its reason; read trendStrength. Empty array when nothing is persisted. Observation, not advice.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, count, +35 more

fahali_get_market_risk_scoreA
Read-onlyIdempotent

Global 0-100 market-risk context from the canonical 24-hour detection snapshot. It is not institution identity, participant positioning, or portfolio-specific risk. Read coverage and snapshot identity with the score.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, level, +41 more

fahali_get_market_sentimentA
Read-onlyIdempotent

Get seven days of sentiment alerts and judged sentiment claims. Both lifecycle streams are returned separately and in one chronological history; one never replaces the other. limit applies per source, defaulting to the maximum 200. A verified empty slice means no qualifying claim was recorded — never neutral or calm. Missing score or news count stays null.

Inputs: limit, since, detail, symbol, +2 more. Returns: asOf, auth, claim, count, +42 more

fahali_get_market_snapshotA
Read-onlyIdempotent

Live prices and changes, with asset class, venue and identity. Crypto is the full Binance USDT book; US equities are a small watchlist PLUS any symbol you name in symbols, fetched on demand — so an unrequested equity is absent because nobody asked, not because it is quiet. Read coverage for what was searched, and coverage.volume.comparableAcrossBases before ranking by volume. Public data.

Inputs: limit, since, detail, compact, +4 more. Returns: asOf, auth, claim, scope, +40 more

fahali_get_market_verdictC
Read-onlyIdempotent

Canonical per-symbol judgment and sole direction authority: state, reliability, conflict, forecast, record, invalidation, committee evidence, canonical engine rows, and runtime telemetry. Always-on base-rate blend ensures direction is never withheld; notReturned preserves runtime telemetry for unjudged symbols. Audit defaults to full fidelity; quiet, stale, unavailable, and retired states remain explicit. Committee evidence is non-binding.

Inputs: limit, since, detail, symbols, +2 more. Returns: asOf, auth, data, claim, +38 more

fahali_get_microstructure_proxyA
Read-onlyIdempotent

Latest absorption observations derived from public aggregate trades and order-book snapshots. Filter by symbol or time; omit symbols for the latest fleet-wide observations. The response reports price/volume behavior, freshness, conflicts, and venue only when the source identifies it; it does not attribute activity to a trader or report hidden executed volume.

Inputs: limit, since, detail, symbol, +2 more. Returns: asOf, auth, data, claim, +41 more

fahali_get_portfolio_decisionB

Get the current non-binding, monitor-only risk assessment for a persistent watch. Legacy HOLD/WATCH/REDUCE/EXIT values are escalation labels interpreted only inside the supplied monitoring thresholds; machine policy fields prohibit treating them as a personalized recommendation, portfolio action, order, or execution authority.

Inputs: watch_id (required), limit, since, detail, +3 more. Returns: asOf, auth, claim, delta, +54 more

fahali_get_portfolio_metricsB
Read-onlyIdempotent

Get aggregate portfolio risk metrics. Returns sentiment momentum (bullish vs bearish signal balance), cascade risk score, liquidity stress score, and signal stress level (derived from leverage/derivative signal confidences). Synthesizes data from leverage, funding_stress, and volume_anomaly engines.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +42 more

fahali_get_portfolio_riskA
Read-onlyIdempotent

Measured connected-book risk, VaR/expected shortfall, canonical covariance, and per-position monitoring evidence. Direction belongs to the canonical symbol verdict; this stateless surface withholds binding actions and points to the mandate-aware portfolio decision tool.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +38 more

fahali_get_realtime_alertsA
Read-onlyIdempotent

Recent raw detections with symbols, timestamps, types, severity, and evidence metadata. An alert is an observation, not a verdict or trade instruction. Use symbols, since, limit, and minimum scope controls to keep the response small, then call market verdict for judgment.

Inputs: limit, since, detail, symbols, +3 more. Returns: asOf, auth, claim, scope, +39 more

fahali_get_sector_rotationA
Read-onlyIdempotent

Where market leadership is moving: US sectors vs the S&P 500, major coins vs Bitcoin, and Bitcoin, gold and bonds vs the S&P 500. Each member is leading, weakening, lagging or improving by its relative return over a short and a long window, with how unusual the recent move is. Relative price performance, not money flow, not a forecast. Observation, not advice.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, kind, basis, +40 more

fahali_get_symbol_decisionA
Read-onlyIdempotent

Primary single-instrument judgment and thin alias over the canonical arbiter. Returns its authoritative direction plus forecast, record, invalidation, complete non-binding committee evidence, current canonical-roster engine rows, and runtime telemetry. It performs no second computation.

Inputs: symbol (required), limit, since, detail, +3 more. Returns: asOf, auth, data, claim, +38 more

fahali_get_track_record_scorecardA
Read-onlyIdempotent

Judged outcomes by engine, claim family, asset class, regime, and horizon, including misses, recall, precision, base rate, and effective sample. Never turn one row into platform-wide accuracy. A figure is repeatable only when publishable and must travel with its exact stratum and recall.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +41 more

fahali_get_unusual_money_movementA
Read-onlyIdempotent

Find symbols with elevated candle-derived buy-versus-sell volume imbalance. Returns the latest proxy reading, raw volumes, net imbalance, uncalibrated detection score, freshness, and any conflict between the stored signal label and net-flow sign. The measurement is participant-agnostic and does not infer whether one account caused the movement.

Inputs: limit, since, detail, symbols, +3 more. Returns: asOf, auth, data, claim, +42 more

fahali_get_verdict_by_idA
Read-onlyIdempotent

Replay one immutable verdict by its permanent ID. Returns the exact mandate-aware decision, evidence references, delta, methodology, previous verdict, and integrity hashes recorded at that time. A missing ID returns no_data rather than substituting the latest judgment.

Inputs: verdict_id (required), limit, since, detail, +2 more. Returns: asOf, auth, claim, delta, +54 more

fahali_get_verdict_historyA
Read-onlyIdempotent

Query immutable portfolio verdict history by watch, symbol, time, or cursor. Use as_of to reconstruct what Fahali knew before a later market move. Every row binds the decision, evidence revision, mandate, methodology version, prior verdict, and content hash; empty history means no recorded judgment, not agreement.

Inputs: as_of, limit, since, cursor, +5 more. Returns: asOf, auth, claim, delta, +54 more

fahali_get_visual_intelligenceA
Read-onlyIdempotent

Graph-ready instrument clusters derived from current detection activity. Visual intensity and proximity are display rankings, not conviction, capital flow, causality, or direction. Use market verdict to obtain a claim and the glossary for field meanings.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, flows, +40 more

fahali_get_watch_deltaA

Return only what changed for a persistent monitor-only watch: escalation label, risk band, direction, evidence coverage, threshold crossings, new evidence, and previous/current immutable verdict IDs. Defaults to a fresh evaluation. An unchanged result is explicit and never interpreted as market safety or permission to trade.

Inputs: watch_id (required), limit, since, detail, +3 more. Returns: asOf, auth, claim, delta, +54 more

fahali_list_agent_sessionsB
Read-onlyIdempotent

List all sessions for the current agent. Returns session metadata including first seen, last active, memory count, and active status.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, scope, +33 more

fahali_list_connected_accountsA
Read-onlyIdempotent

List the authenticated user's connected accounts before requesting portfolio analysis. Returns provider, display name, connection state, last sync, equity, currency, and position count. Broker account numbers, credentials, user identifiers, and provider metadata are never returned. No accounts is an explicit no_data state, not a portfolio all-clear.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, count, +35 more

fahali_list_portfolio_watchesA
Read-onlyIdempotent

List the caller's persistent portfolio watches, including mandate, thresholds, source, status, and latest verdict ID. Use this before asking the user to recreate a watch. A missing list means no watch exists; it is not a calm-market reading.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, claim, delta, +54 more

fahali_list_resourcesA
Read-onlyIdempotent

List every readable Fahali resource, derived from the live API router rather than a hand-maintained list. Each entry gives its path, parameters, and the gates it enforces, so you see what a route requires before calling. Excluded routes are returned with reasons. Discover here, then call fahali_fetch_resource. Purpose-built tools stay better when one covers your question.

Inputs: limit, since, detail, symbols, +1 more. Returns: asOf, auth, basis, claim, +36 more

fahali_list_risk_subscriptionsA
Read-onlyIdempotent

List the caller's risk-delivery subscriptions and their health without exposing callback URLs or encrypted configuration. Returns channel, event filters, minimum action, last delivery, failure count, and target hint. Use this before creating a duplicate subscription.

Inputs: limit, since, detail, symbols, +2 more. Returns: asOf, auth, claim, delta, +54 more

fahali_resolve_instrumentA
Read-onlyIdempotent

Resolve a ticker to canonical identity: canonicalId, displayName, assetClass, venue, quote currency, session. Call it when a response returns resolutionState 'ambiguous'. FETH, FBTC, GBTC and ABTC are ETFs that parse as crypto pairs. A bare crypto base (BTC) resolves to its pair (BTCUSDT); a security sharing the ticker is named in symbolResolutions — pass assetClass 'equity' for it.

Inputs: limit, since, detail, symbol, +3 more. Returns: asOf, auth, claim, scope, +36 more

fahali_run_shock_testA
Read-onlyIdempotent

Apply a sized scenario to connected or supplied positions and report capital impact by holding. This is a deterministic shock unless simulations and probabilities are explicitly returned; null simulations are not hidden Monte Carlo. Supply concrete symbols and signed moves.

Inputs: limit, since, detail, shocks, +7 more. Returns: asOf, auth, mode, note, +48 more

fahali_save_memoryA
DestructiveIdempotent

Save a memory to the agent memory store. Memories persist across sessions for a given agent. Memory types: episodic (specific experiences), semantic (facts/knowledge), procedural (how-to).

Inputs: key (required), value (required), limit, since, +4 more. Returns: asOf, auth, claim, scope, +34 more

fahali_search_memoriesA
Read-onlyIdempotent

Semantic search across agent memories. Returns memories matching the search query using vector similarity (when available) or text ILIKE fallback.

Inputs: query (required), limit, since, detail, +2 more. Returns: asOf, auth, claim, scope, +33 more

fahali_subscribe_riskA
Idempotent

Idempotently deliver monitor-only observations and risk alerts through a signed webhook, agent callback, Slack, Teams, account email, or registered push device. Delivery policy structurally prohibits personalized recommendations, portfolio actions, orders, and execution. A generated signing secret is recoverable only through the exact authenticated idempotent request; a changed request requires a new key.

Inputs: channel (required), watch_id (required), idempotency_key (required), limit, +8 more. Returns: asOf, auth, claim, delta, +54 more

fahali_unsubscribe_riskA
DestructiveIdempotent

Idempotently disable a monitor-only risk subscription. New queueing and retries stop; pending work is fenced and its audit remains visible. A request already past the dispatch boundary may arrive once, so receivers must deduplicate by X-Fahali-Delivery. Retry an identical request with the same idempotency key; use a new key for any change.

Inputs: idempotency_key (required), subscription_id (required), limit, since, +3 more. Returns: asOf, auth, claim, delta, +54 more

fahali_update_portfolio_watchA
DestructiveIdempotent

Idempotently update a persistent monitor-only, long-only watch's positions, connected-account scope, mandate, thresholds, interval, or status. Any short leg, hedge, negative exposure, or can_short=true request fails closed. Fahali never acquires recommendation, portfolio-action, order, or execution authority.

Inputs: watch_id (required), idempotency_key (required), name, limit, +11 more. Returns: asOf, auth, claim, delta, +54 more

fahali_update_subscriptionA
DestructiveIdempotent

Idempotently change a monitor-only risk subscription's active/paused status, event filters, escalation threshold, or delivery target. Updating a webhook target rotates its signing secret once per idempotency key. Stored targets remain encrypted and no recommendation/order authority is introduced.

Inputs: idempotency_key (required), subscription_id (required), limit, since, +8 more. Returns: asOf, auth, claim, delta, +54 more

fahali_watch_portfolioA
Idempotent

Create a durable, monitor-only, long-only portfolio watch from supplied positions or the caller's connected accounts. Short legs, hedges, negative exposure, and connected books containing them fail closed until signed-exposure authority is separately certified. Fahali evaluates immediately and persists/re-evaluates the observation. Output labels are monitoring escalation only: no personal recommendation, portfolio action, order, or capital path exists.

Inputs: idempotency_key (required), name, limit, since, +8 more. Returns: asOf, auth, claim, delta, +54 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 58 tools

    Disambiguation2/5

    Several clusters have unclear boundaries: fahali_get_market_verdict, fahali_get_market_decision and fahali_get_symbol_decision are explicitly described as aliases over the same canonical arbiter, and fahali_get_forecast largely duplicates forecast content inside the verdict. Orientation tools (fahali_get_market_briefing, fahali_daily_brief, fahali_get_bundle) and detection tools (detection_activity, realtime_alerts, highest_conviction_signals, flash_crash_risk, unusual_money_movement, capital_flow, microstructure_proxy) overlap heavily and rely on prose caveats rather than distinct purposes to separate them.

    Naming Consistency4/5

    Nearly all tools follow fahali_verb_noun snake_case with a stable prefix, so the pattern is predictable. A few deviations exist (fahali_daily_brief has no verb, fahali_fact_check_narrative uses a compound verb, fahali_analyze_custom_portfolio and fahali_get_evidence are irregular), but they remain readable.

    Tool Count2/5

    58 tools is far beyond the 3-15 sweet spot and forces the agent to choose among many near-duplicate endpoints. The domain (market data, portfolio monitoring, incidents, subscriptions, memory) is genuinely broad, but the surface is inflated by alias tools and layered audit views that could be consolidated.

    Completeness4/5

    Coverage is unusually thorough: market state, forecast, regime, sentiment, portfolio watching with full verdict/incident lifecycle, subscriptions, and memory all have create/read/update paths. Minor gaps remain, such as no delete or archive operation for portfolio watches and no update/delete for stored memories.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers