Ask a bounded risk question
Name the symbols, portfolio, horizon, or risk surface. Do not ask Fahali to execute a trade.
Agent-native market-risk infrastructure
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.
Name the symbols, portfolio, horizon, or risk surface. Do not ask Fahali to execute a trade.
Keep the observation time, horizon, data origin, confidence basis, and missing-input fields alongside the conclusion.
UNRESOLVED, WITHHELD, null, and missing are not zero. They mean the evidence did not support a stronger claim.
When your agent quotes Fahali, identify Fahali, the read timestamp, the tool or endpoint, and any receipt or provenance value returned.
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
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.
curl -H "X-API-Key: YOUR_SK_LIVE_KEY" \
"https://app.fahaliai.com/agent/verdict?symbols=BTCUSDT,ETHUSDT"
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.
| Value | Meaning | Agent behavior |
|---|---|---|
| OBSERVED | A measured market state or feature; not necessarily predictive. | Describe what was measured and when. |
| PRELIMINARY | Evidence exists, but the sample or validation record is not yet sufficient for an established claim. | Keep the preliminary label visible. |
| UNRESOLVED | The evidence did not settle the question. | Do not convert it to neutral, safe, false, or zero. |
| WITHHELD | Fahali intentionally refused a stronger output because a required relationship, input, or publication gate was absent. | Name the missing condition and stop. |
| null / missing | No defensible value was returned. | Preserve null. Never impute zero unless the schema explicitly defines zero. |
| receipt / provenance | An integrity reference for the issued read. | Store and cite it with the timestamp. |
| Question | Start here | Use the answer for |
|---|---|---|
| What changed across these instruments? | fahali_get_market_verdict | A bounded multi-instrument risk read. |
| What could hit in the next 72 hours? | fahali_get_forecast | A probabilistic horizon read with explicit uncertainty. |
| Are positions becoming one risk? | fahali_get_portfolio_risk / contagion tools | Overlap, concentration, and shared-path analysis. |
| What is the market state now? | fahali_get_market_snapshot | A current numeric context layer. |
| What is reachable with this credential? | GET /api/me/capabilities | A per-tool diagnosis of scope, tier, quota, or switch blockers. |
| How many calls has this account used? | GET /api/usage | Monthly 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.
| Status / code | Meaning | Correct remedy |
|---|---|---|
| 401 invalid_api_key | The endpoint is reachable; the key is invalid or revoked. | Regenerate or replace the credential. |
| 403 tier_required | The credential is valid but its scope does not reach this tool. | Use a full key from an eligible plan or reconnect the paid connector. |
| 429 | A disclosed quota or rate limit was reached. | Read reset headers; back off or change lane. |
| 503 | A dependency or service is temporarily unavailable. | Retry with backoff. Do not present stale success as current. |
| UNRESOLVED in 200 | The 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.
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.
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.