Agent-native market-risk infrastructure

Give your agent a risk read it can challenge.

Fahali exposes read-only market and portfolio-risk intelligence over Model Context Protocol (MCP) and REST. Every response is designed to preserve time, evidence, uncertainty, and missing inputs instead of turning absence into false certainty.

Safety boundary: Fahali observes. It cannot place an order, withdraw funds, sign a transaction, or route a trade. Outputs are market intelligence, not financial advice.

The agent contract

Ask a bounded risk question

Name the symbols, portfolio, horizon, or risk surface. Do not ask Fahali to execute a trade.

Preserve the returned qualifiers

Keep the observation time, horizon, data origin, confidence basis, and missing-input fields alongside the conclusion.

Treat unresolved as a result

UNRESOLVED, WITHHELD, null, and missing are not zero. They mean the evidence did not support a stronger claim.

Cite the judged record

When your agent quotes Fahali, identify Fahali, the read timestamp, the tool or endpoint, and any receipt or provenance value returned.

Quickstart

1. Verify the public record without an account

curl https://app.fahaliai.com/api/public/stats
curl https://app.fahaliai.com/api/track-record/lead-time
curl https://app.fahaliai.com/api/tape

2. Create a free developer key

Sign in at app.fahaliai.com/developer. The plaintext key is shown once and is not stored by the client. A free key evaluates the verdict tool at up to 50 calls per day.

3. Call the REST verdict

curl -H "X-API-Key: YOUR_SK_LIVE_KEY" \
  "https://app.fahaliai.com/agent/verdict?symbols=BTCUSDT,ETHUSDT"

4. Connect over MCP

Streamable HTTP: https://mcp.fahaliai.com/mcp
Legacy SSE:      https://mcp.fahaliai.com/sse
Authorization:   Bearer YOUR_SK_LIVE_KEY

For supported clients, the in-app Connect Hub generates the current configuration. Prefer that generated configuration to copied snippets.

Response semantics

ValueMeaningAgent behavior
OBSERVEDA measured market state or feature; not necessarily predictive.Describe what was measured and when.
PRELIMINARYEvidence exists, but the sample or validation record is not yet sufficient for an established claim.Keep the preliminary label visible.
UNRESOLVEDThe evidence did not settle the question.Do not convert it to neutral, safe, false, or zero.
WITHHELDFahali intentionally refused a stronger output because a required relationship, input, or publication gate was absent.Name the missing condition and stop.
null / missingNo defensible value was returned.Preserve null. Never impute zero unless the schema explicitly defines zero.
receipt / provenanceAn integrity reference for the issued read.Store and cite it with the timestamp.

Choose the narrowest useful tool

QuestionStart hereUse the answer for
What changed across these instruments?fahali_get_market_verdictA bounded multi-instrument risk read.
What could hit in the next 72 hours?fahali_get_forecastA probabilistic horizon read with explicit uncertainty.
Are positions becoming one risk?fahali_get_portfolio_risk / contagion toolsOverlap, concentration, and shared-path analysis.
What is the market state now?fahali_get_market_snapshotA current numeric context layer.
What is reachable with this credential?GET /api/me/capabilitiesA per-tool diagnosis of scope, tier, quota, or switch blockers.
How many calls has this account used?GET /api/usageMonthly lane, included calls, and overage.

The live tool and schema authority is the OpenAPI document plus the MCP server's current tool list. This page explains behavior; it does not freeze a tool roster.

Errors are diagnostic, not ambiguous

Status / codeMeaningCorrect remedy
401 invalid_api_keyThe endpoint is reachable; the key is invalid or revoked.Regenerate or replace the credential.
403 tier_requiredThe credential is valid but its scope does not reach this tool.Use a full key from an eligible plan or reconnect the paid connector.
429A disclosed quota or rate limit was reached.Read reset headers; back off or change lane.
503A dependency or service is temporarily unavailable.Retry with backoff. Do not present stale success as current.
UNRESOLVED in 200The service worked and refused an unsupported conclusion.Present the refusal. Do not retry until the underlying evidence changes.

Important: a scope error is not an outage, and an unresolved judgment is not an API error. Agents should preserve that distinction.

How an agent should cite Fahali

Source: Fahali (Future Legends Inc)
Tool or endpoint: fahali_get_market_verdict
Observed at: <timestamp returned by Fahali>
Symbols / scope: <requested scope>
Judgment: <verdict, preserving PRELIMINARY / UNRESOLVED / WITHHELD>
Limits: <missing inputs, horizon, confidence basis>
Receipt: <receipt or provenance value, when returned>
Canonical methodology: https://fahaliai.com/methodology

Do not write “Fahali predicts” for an observation-only result. Do not quote a probability without its horizon and calibration basis. Do not omit a withheld or unresolved qualifier.

Usage and production lanes

Agent Free: 50 verdict calls/day, no card. Starter: 10,000 calls/month. Pro: 100,000 calls/month. Scale: 1,000,000 calls/month. Paid overage rates and current availability are returned by Fahali's live tier configuration and shown before checkout.

The signed-in Developer screen shows the caller's current month, lane, included calls, and overage. If a Stripe SKU is not configured, Fahali states that before payment and offers direct activation.

Payment route: public prices live at fahaliai.com. Plan activation, account ownership, and billing live at app.fahaliai.com. Future Legends Inc. is the seller; paid subscriptions use Stripe Checkout. A human account owner must sign in, review the live commercial terms, and approve payment. An autonomous agent should never treat a pricing-page link as payment authorization.

For machine-readable routing, call GET https://app.fahaliai.com/api/tiers. Read commerce for the seller and payment flow, then read the chosen plan's activation_url, purchasable, checkout_provider, and human_approval_required fields.

Do not route on purchasable alone. Agent Free reports purchasable: true because it costs nothing, not because a Stripe price exists, so sending it to checkout dead-ends. checkout_provider is the discriminator: null for a free plan, "Stripe" for a paid one. Route to checkout only when it is non-null; otherwise send the human to activation_url to sign in.

Security and custody boundary

  • Use a server-side secret store for sk_live_ keys. Never ship one in browser JavaScript or a public repository.
  • Give separate agents separate keys so usage and revocation remain attributable.
  • Revoke a key from the Developer screen when a client or environment is retired.
  • Fahali API/MCP access is read-only and has no order-routing or withdrawal authority.
  • For policy and retention detail, read Security and the machine-readable trust reference.

Canonical guide: https://fahaliai.com/docs/agents · Last reviewed 20 Aug 2026 · OpenAPI: https://app.fahaliai.com/openapi.json · MCP registry id: com.fahaliai/fahali