fahali-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FAHALI_API_KEY | Yes | Your Fahali API key (sk_live_...). Create one at https://app.fahaliai.com/developer |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fahali_get_market_verdictC | 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. |
| fahali_get_forecastA | 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. |
| fahali_resolve_instrumentA | 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. |
| fahali_get_microstructure_proxyA | 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. |
| fahali_get_flash_crash_riskA | 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. |
| fahali_get_detection_activityA | 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. |
| fahali_get_unusual_money_movementA | 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. |
| fahali_get_market_risk_scoreA | 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. |
| fahali_get_correlation_matrixA | 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. |
| fahali_get_market_sentimentA | 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. |
| fahali_get_highest_conviction_signalsB | 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. |
| fahali_get_market_snapshotA | 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 |
| fahali_get_engine_statusA | 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. |
| fahali_get_case_studiesB | 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. |
| fahali_list_resourcesA | 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. |
| fahali_fetch_resourceA | 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. |
| fahali_get_track_record_scorecardA | 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. |
| fahali_get_portfolio_metricsB | 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. |
| fahali_get_market_regimeA | 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. |
| fahali_get_market_moodA | 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 |
| fahali_get_sector_rotationA | 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. |
| fahali_get_visual_intelligenceA | 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. |
| fahali_get_realtime_alertsA | 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. |
| fahali_get_portfolio_riskA | 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. |
| fahali_analyze_custom_portfolioA | 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. |
| fahali_get_contagion_mapA | 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. |
| fahali_get_capital_flowA | 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. |
| fahali_run_shock_testA | 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. |
| fahali_get_market_briefingA | 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. |
| fahali_daily_briefA | 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. |
| fahali_save_memoryA | 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). |
| fahali_search_memoriesA | Semantic search across agent memories. Returns memories matching the search query using vector similarity (when available) or text ILIKE fallback. |
| 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). |
| fahali_list_agent_sessionsB | List all sessions for the current agent. Returns session metadata including first seen, last active, memory count, and active status. |
| fahali_fact_check_narrativeA | 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. |
| fahali_list_connected_accountsA | 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. |
| fahali_get_bundleA | 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. |
| fahali_get_capabilitiesA | 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. |
| fahali_watch_portfolioA | 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. |
| fahali_list_portfolio_watchesA | 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. |
| fahali_update_portfolio_watchA | 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. |
| 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. |
| 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. |
| fahali_get_active_incidentsA | 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. |
| fahali_acknowledge_incidentA | 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. |
| fahali_get_incident_timelineA | 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. |
| fahali_get_verdict_historyA | 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. |
| fahali_get_verdict_by_idA | 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. |
| fahali_get_evidenceA | 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. |
| fahali_subscribe_riskA | 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. |
| fahali_list_risk_subscriptionsA | 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. |
| fahali_update_subscriptionA | 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. |
| fahali_unsubscribe_riskA | 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. |
| fahali_get_lead_timeA | 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. |
| fahali_get_fall_warningsA | 8-hour fall-warning board: standing warnings with probability P (the served |
| fahali_get_engine_boardB | Board of any contract engine by key: live claims with probability P (the served |
| fahali_get_market_decisionA | 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. |
| fahali_get_symbol_decisionA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| fahali_autonomous_portfolio_watch | Create or resume a mandate-aware portfolio watch, report only genuine changes, and deliver the next material judgment without polling. |
| fahali_risk_desk | Turn this assistant into a risk-conscious desk operator that reads Fahali evidence correctly and refuses the questions it should refuse. |
| fahali_pre_action_check | Run before an agent or a person acts on a position: what Fahali currently reads on these names, and what it explicitly cannot see. |
| fahali_verify_claim | Check a market narrative against Fahali's registered record instead of against plausibility. |
| fahali_book_review | Walk a book for hidden concentration: what is moving as one position, and what a shock would mean in dollars. |
| fahali_agent_guardrails | A compact system-prompt block to paste into any autonomous agent that touches Fahali data, so it cannot launder observations into advice. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Fahali canonical response contract | The stable envelope, state machines, score rules, and decision-reading order used by every tool. |
| Fahali field glossary | Definitions for fields an agent must never infer from their names alone. |
TDQS
Scored across 58 tools
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.
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.
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.
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.