FortFi Treasury MCP
REMOTE · FORTFIAPP.COM
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Available components
Last scanned (5 hours ago)
Scores higher than 44% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security66
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 139 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 15209 tokens (~109/item across 139 items; 139 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 Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 78% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 12 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_recipient" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 139 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities20
- Spec-recency check failed: implements MCP spec 2024-11-05; the latest is 2026-07-28. See how to fix → Fail
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.
- 5 Nov 26 0
- Stability: unverified → 0.03 ▲ functional
- New tool “get_hyperliquid_order_book” functional
- New tool “get_hyperliquid_predicted_funding” functional
- “update_strategy” added an optional parameter “autoStops” cosmetic
- 4 Nov 26 +26
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 137 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. security
- Tool “approve_recipient” rewrote its description, which is the text the model reads security
- Tool “get_policy_limits” rewrote its description, which is the text the model reads security
- Tool “get_yield_market_detail” rewrote its description, which is the text the model reads security
- Tool “list_audit_log” rewrote its description, which is the text the model reads security
- Tool “list_wallets” rewrote its description, which is the text the model reads security
- Tool “list_yield_positions” rewrote its description, which is the text the model reads security
- Tool “propose_bridge” rewrote its description, which is the text the model reads security
- Tool “propose_token_approve” rewrote its description, which is the text the model reads security
- Tool “propose_transfer” rewrote its description, which is the text the model reads security
- Tool “rank_yield_markets” rewrote its description, which is the text the model reads security
- Tool “update_wallet_metadata” rewrote its description, which is the text the model reads security
- MCP protocol: unverified → fail ▼ functional
- Schema quality: pass → fail ▼ functional
- Endpoint reachability: not serving MCP → reachable ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Destructive annotations: 0 functional
- New tool “cancel_hyperliquid_orders” functional
- New tool “create_checkout_session” functional
- New tool “create_customer” functional
- New tool “create_merchant_webhook” functional
- New tool “create_payment_product” functional
- New tool “get_copy_trade_wallet” functional
- New tool “get_hyperliquid_balances” functional
- New tool “get_hyperliquid_cross_section” functional
- New tool “get_hyperliquid_history” functional
- New tool “get_hyperliquid_market” functional
- New tool “get_hyperliquid_outcome_market” functional
- New tool “get_hyperliquid_research_data_stats” functional
- New tool “get_hyperliquid_trading_desk” functional
- New tool “get_hyperliquid_user_fills” functional
- New tool “get_payment_product” functional
- New tool “get_polymarket_market” functional
- New tool “get_strategy” functional
- New tool “get_treasury_context” functional
- New tool “get_usage_balance” functional
- New tool “get_wallet_loss_cap” functional
- New tool “get_wallet_scoreboard” functional
- New tool “list_activity_report” functional
- New tool “list_copy_trade_leaders” functional
- New tool “list_hyperliquid_markets” functional
- New tool “list_hyperliquid_open_orders” functional
- New tool “list_hyperliquid_outcome_markets” functional
- New tool “list_hyperliquid_positions” functional
- New tool “list_hyperliquid_symbol_master” functional
- New tool “list_merchant_webhook_deliveries” functional
- New tool “list_merchant_webhooks” functional
- New tool “list_payment_products” functional
- New tool “list_payment_purchases” functional
- New tool “list_payment_sales” functional
- New tool “list_polymarket_markets” functional
- New tool “list_polymarket_positions” functional
- New tool “list_strategies” functional
- New tool “list_strategy_presets” functional
- New tool “pause_strategy” functional
- New tool “pay_payment_request_x402” functional
- New tool “propose_hyperliquid_deposit” functional
- New tool “propose_hyperliquid_outcome_order” functional
- New tool “propose_hyperliquid_perp_close” functional
- New tool “propose_hyperliquid_perp_modify” functional
- New tool “propose_hyperliquid_perp_open” functional
- New tool “propose_hyperliquid_send_asset” functional
- New tool “propose_hyperliquid_spot_to_perp” functional
- New tool “propose_hyperliquid_withdraw” functional
- New tool “propose_polymarket_buy” functional
- New tool “propose_polymarket_redeem” functional
- New tool “propose_polymarket_sell” functional
- New tool “rank_hyperliquid_markets” functional
- New tool “rank_polymarket_markets” functional
- New tool “rebalance_strategy_now” functional
- New tool “replay_merchant_webhook_delivery” functional
- New tool “resume_strategy” functional
- New tool “run_hyperliquid_research_backtest” functional
- New tool “run_hyperliquid_research_backtest_spec” functional
- New tool “screen_hyperliquid_markets” functional
- New tool “search_polymarket_markets” functional
- New tool “send_merchant_webhook_test” functional
- New tool “set_wallet_loss_cap” functional
- New tool “start_copy_trade” functional
- New tool “start_strategy” functional
- New tool “stop_strategy” functional
- New tool “update_strategy” functional
- “add_recipient” added an optional parameter “fromWalletId” cosmetic
- “list_audit_log” added an optional parameter “cursor” cosmetic
- “list_audit_log” added an optional parameter “view” cosmetic
- “list_audit_log” added an optional parameter “walletId” cosmetic
- “list_wallets” added an optional parameter “cursor” cosmetic
- “list_wallets” added an optional parameter “limit” cosmetic
- “propose_transfer” added an optional parameter “networkChainId” cosmetic
- “propose_transfer” added an optional parameter “paymentRequestPid” cosmetic
- “propose_transfer” reworded the description of “amountUsdc” cosmetic
- “add_recipient” reworded the description of “chainId” cosmetic
- “propose_create_account” reworded the description of “chainId” cosmetic
- “propose_transfer” reworded the description of “recipientId” cosmetic
- “propose_transfer” made “amountUsdc” optional cosmetic
- “propose_transfer” made “recipientId” optional cosmetic
- 3 Nov 26 +1
- DNSSEC: fail → pass ▲ security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 7 Aug 26 0
- Endpoint reachability: reachable → not serving MCP ▼ security
- Stability: 0.30 → unverified ▼ security
- Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes. security
- Capabilities: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
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 5 Nov 2026 · Probed https://fortfiapp.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=fortfiapp.com | CN=YE1,O=Let's Encrypt,C=US | 23 Sept 2026 | 22 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 5b47055fa1f80935b7b139be7982227214f |
| SANs: *.fortfiapp.com, fortfiapp.com | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of fortfiapp.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| fortfiapp.com. | present | 2371 | 13 | Verified |
| fortfiapp.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=*, microphone=*, accelerometer=*, gyroscope=*, payment=*, geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://fortfiapp.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://fortfiapp.com/api/mcp | HTTPS enforced | 301 | https://fortfiapp.com/api/mcp |
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_cosigner_invite ~54
Accept a pending co-signer invite. After accepting, you will be able to approve/reject pending actions for that account.
| Name | Type | Req | Description |
|---|---|---|---|
| inviteId | string | yes | Invite id from list_incoming_cosigner_invites |
No output schema declared.
No examples provided.
add_recipient ~195
Add a payout address to the allowlist. Human developer key (frtfi_hu_* + DA): added with 24h cooldown (no Assist passkey). Agent key (frtfi_ag_*): GOVERN — funding-wallet signature required; then approved immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet address (0x… or Solana base58) |
| chainId | string | yes | FortFi chain id (e.g. hyperliquid-mainnet). Omit when fromWalletId is set — network is inferred from that wallet. |
| challengeId | string | – | Agent GOVERN: challengeId from the first call |
| fromWalletId | string | – | Optional source wallet id (list_wallets). Sets allowlist network to that wallet's chain — use for HL sends without passing chainId. |
| nickname | string | – | Optional display name |
| walletSignature | string | – | Agent GOVERN: funding-wallet signature |
No output schema declared.
No examples provided.
approve_cosigner_action ~39
Approve a pending action as co-signer. Use with list_pending_cosigner_approvals.
| Name | Type | Req | Description |
|---|---|---|---|
| pendingApprovalId | string | yes | – |
No output schema declared.
No examples provided.
approve_recipient ~120
Approve a recipient still in cooldown (early release). Active cosigners may approve directly. Human passkey owners: use the FortFi app (passkey) or the approval email link; owner bearer keys cannot self-clear. Agent-owned accounts: owner self-approval is GOVERN (funding-wallet signature).
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | Governance challengeId from the first call |
| recipientId | string | yes | Recipient id from list_recipients or add_recipient |
| walletSignature | string | – | Funding-wallet signature over the challenge message |
No output schema declared.
No examples provided.
cancel_governance_change ~75
Veto/cancel a pending governance challenge before it is signed and applied. Cancelling TIGHTENS security, so it needs only the agent key (no signature). Also cancels legacy scheduled rows from before immediate-apply parity.
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | yes | The governance request id from list_governance_requests |
No output schema declared.
No examples provided.
cancel_hyperliquid_orders ~131
Propose cancelling resting Hyperliquid orders (limit orders and SL/TP triggers) on one market. Pass oids from list_hyperliquid_open_orders, or omit oids to cancel every resting order on that symbol. Moves no money, but cancelling a stop loss removes protection, so it follows the normal confirm_proposal flow.
| Name | Type | Req | Description |
|---|---|---|---|
| oids | array | – | Resting order ids on this symbol (max 50). Omit to cancel all of them. |
| symbol | string | yes | e.g. BTC, xyz:TSLA |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
cancel_payment_request ~28
Cancel an open payment request with no verified settlement.
| Name | Type | Req | Description |
|---|---|---|---|
| idOrPid | string | yes | – |
No output schema declared.
No examples provided.
cancel_pending_action ~47
Cancel a pending approval that you (the account owner) initiated.
| Name | Type | Req | Description |
|---|---|---|---|
| pendingApprovalId | string | yes | Pending approval id from list_pending_cosigner_approvals or list_audit_log |
No output schema declared.
No examples provided.
check_trade_allowance ~129
Check ERC-20 allowance for an upcoming CoW swap (cow_swap) or Fusion bridge (fusion_bridge). Call before propose_swap / propose_bridge; if insufficient, use propose_token_approve then confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| flow | string | yes | cow_swap = CoW VaultRelayer; fusion_bridge = 1inch Limit Order |
| fromWalletId | string | yes | Source EVM wallet id |
| requiredAmountSmallest | string | yes | Required allowance in token smallest units (e.g. USDC 6 decimals) |
| tokenAddress | string | yes | Sell token contract (0x…) |
No output schema declared.
No examples provided.
confirm_proposal ~98
Confirm a pending proposal returned by a propose_* tool. Reuses the same policy, risk, allowlist, vault-grant, delegated-authority, and cosign checks as POST /api/mcp/confirm. Returns executed, pending-approval, or passkey-required status.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | Optional proposal-bound confirmation token when one was returned |
| proposalId | string | yes | Proposal UUID returned by a propose_* tool |
No output schema declared.
No examples provided.
create_checkout_session ~239
Create a per-customer checkout session: resolves (or provisions) the customer's own vault from your externalCustomerId, mints a payment request that settles into it, and returns checkoutUrl + x402Url. The paid webhook then carries customer identity. Price from productSlug or ad-hoc amountUsd.
| Name | Type | Req | Description |
|---|---|---|---|
| amountSmallestUnit | string | – | Ad-hoc USDC amount in smallest units |
| amountUsd | number | – | Ad-hoc price in USD (alternative to productSlug) |
| chainId | string | – | Chain for ad-hoc sessions (default base-mainnet) |
| customer | object | yes | Your customer identity — vault is resolved per (namespace, externalId) |
| description | string | – | Optional checkout note |
| expiresInMinutes | number | – | Session TTL (default 60, product default wins if set) |
| idempotencyKey | string | – | Safe retries — same key returns the same session |
| metadata | object | – | Optional metadata object |
| productSlug | string | – | Price from an existing payment product (SKU) |
| reference | string | – | Your order/session id, echoed on every webhook |
No output schema declared.
No examples provided.
create_customer ~136
Create or sync one customer vault synchronously (treasury + wallets:write). Idempotent on externalCustomerId + namespace + chain. Returns wallet address immediately; Turnkey wallet creation may take a few seconds on first call.
| Name | Type | Req | Description |
|---|---|---|---|
| clientRequestId | string | yes | Caller idempotency id (unique per provisioning attempt) |
| credential | object | – | Optional vault-scoped credential to issue for this wallet |
| externalCustomerId | string | yes | Your platform customer id (stable across retries) |
| namespace | string | – | Optional mapping namespace (default: default) |
| wallet | object | yes | Wallet to create or reuse for this customer |
No output schema declared.
No examples provided.
create_merchant_webhook ~71
Register a webhook URL. FortFi generates a signing secret (returned once) for the merchant to verify HMAC on incoming POSTs. Not per-product — one endpoint receives all paid events.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | – |
| url | string | yes | HTTPS callback URL on the merchant's server |
No output schema declared.
No examples provided.
create_payment_product ~169
Create a persistent product checkout link (/pay/p/{slug}). Each visit mints a fresh payment request. One webhook endpoint receives paid events for all products.
| Name | Type | Req | Description |
|---|---|---|---|
| amountSmallestUnit | string | – | Alternative: amount in token smallest units |
| amountUsd | number | – | Price in USD/USDC |
| description | string | – | Checkout subtitle shown to buyers |
| imageUrl | string | – | HTTPS product image URL for checkout branding |
| merchantSiteUrl | string | – | Merchant homepage for checkout branding (optional) |
| name | string | yes | Product display name |
| slug | string | – | Optional URL slug (auto-generated if omitted) |
| successRedirectUrl | string | – | HTTPS buyer redirect after pay (optional) |
| walletMappingId | string | yes | USDC collection vault id |
No output schema declared.
No examples provided.
create_payment_request ~134
Create a shareable payment request for a vault. Returns pid, paymentUrl, and qrPayload for humans or agents.
| Name | Type | Req | Description |
|---|---|---|---|
| amountSmallestUnit | string | – | USDC amount in smallest units (alternative to amountUsd) |
| amountUsd | number | – | Invoice amount in USD (1 USD = 1 USDC) |
| description | string | – | Optional invoice note |
| expiryDays | number | – | Days until expiry (default 30) |
| externalReference | string | – | Optional external invoice id |
| metadata | object | – | Optional metadata object |
| walletMappingId | string | yes | Target collection vault id |
No output schema declared.
No examples provided.
create_provisioning_job ~101
Bulk-provision up to 20 customer vaults per job (treasury + keys:manage + wallets:write). Requires idempotencyKey in args. Poll get_provisioning_job until terminal; bearer secrets reveal once on first terminal GET.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotencyKey | string | yes | Unique key (8–200 chars) — same key + body replays the job |
| items | array | yes | Up to 20 provisioning items |
No output schema declared.
No examples provided.
create_vault_credential ~132
Mint a vault-scoped credential for an existing wallet (treasury + keys:manage). Returns bearerKey once when agentPublicKey is omitted. Requires FORTFI_VAULT_CREDENTIALS_ENABLED.
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | yes | – |
| agentPublicKey | string | – | Optional uncompressed P-256 public key (04… hex) for ECDSA auth |
| expiresAt | string | – | ISO-8601 expiry (optional) |
| name | string | yes | Credential label (2–100 chars) |
| vaultGrants | array | yes | Explicit wallet grants with optional USD micro caps |
No output schema declared.
No examples provided.
discover_tokens ~287
Market-wide token discovery on a FortFi chain (USD). Use for trending/gainers/losers/volume/mcap — NOT the browser Explore REST route. Sorts: gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d. No 7d or 30d-volume sort exists upstream — closest available gainers granularity to '1 week' is gainers_1d or gainers_30d; say so explicitly rather than silently picking one. Returns contract addresses for propose_swap / propose_bridge.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, ethereum-mainnet |
| limit | number | – | Max results (default 10, max 25) |
| query | string | – | Optional name/symbol filter, e.g. 'USDC' or 'wrapped' |
| sort | string | – | gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d (default market_cap) |
| verifiedOnly | boolean | – | Only verified tokens |
No output schema declared.
No examples provided.
extend_payment_request ~48
Extend an open payment request expiry (default extension window in days).
| Name | Type | Req | Description |
|---|---|---|---|
| expiryDays | number | yes | New expiry horizon from now (1-365) |
| idOrPid | string | yes | – |
No output schema declared.
No examples provided.
get_account_holdings ~40
Token holdings for a specific wallet, with USD values and 24h change.
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | Wallet id from list_wallets |
No output schema declared.
No examples provided.
get_copy_trade_wallet ~91
Deep dive on any Hyperliquid address: account value, leverage, open positions with share of book, PnL and volume for day, week, month and all time, and a copy preview per leverage cap (which positions would be copied, coverage, and the minimum account size so each copied position is at least $10).
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | 0x Hyperliquid address |
No output schema declared.
No examples provided.
get_cosigner_rules ~37
Amount-banded cosigner quorum rules for sends and swaps. Below-band amounts auto-execute; matching bands require N cosigner votes.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_fusion_order_status ~60
Track an owned Fusion+ cross-chain order by orderHash. Returns authoritative settlement/refund status, source and destination transactions, receiver, and the real destination token contract.
| Name | Type | Req | Description |
|---|---|---|---|
| orderHash | string | yes | Fusion+ order hash (0x…) |
No output schema declared.
No examples provided.
get_hyperliquid_balances ~108
Get Hyperliquid wallet balances: L1 perps margin (withdrawable), HL Spot USDC (MoonPay HyperCore lands here), and HyperEVM USDC/HYPE. Also returns a `perps` aggregate over open positions: openPositionCount, unrealizedPnlUsd, entryNotionalUsd, and unrealizedPnlPct (null when nothing is open).
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | FortFi wallet id on hyperliquid-mainnet |
No output schema declared.
No examples provided.
get_hyperliquid_cross_section ~272
Rank a Hyperliquid perp universe by trailing return in one call, for a dollar-neutral long/short book. Returns dex, assetClass, trailing returns, realized vol, funding, rank, percentile, and long/short/hold buckets. Default scope=core (validated trend desk); pass scope=all for HIP-3 cross-asset books. Read-only; never creates proposals.
| Name | Type | Req | Description |
|---|---|---|---|
| assetClass | – | – | Filter asset classes. Comma-separated string or array. |
| band | number | – | Hysteresis band, default 1.0. A held name stays eligible while inside the top legsPerSide*(1+band); surfaced as hold_long / hold_short. |
| dex | – | – | Filter dex ids. Comma-separated string or array. |
| includeAllDesks | boolean | – | When true, same as scope=all |
| legsPerSide | number | – | Legs per side, default 6 |
| limit | number | – | Max symbols ranked by volume, default 60 |
| lookbackDays | array | – | Trailing return windows in days. FIRST entry is the ranking signal. Default [14,7,30]. |
| minDayVolumeUsd | number | – | Liquidity floor, default 2000000 |
| scope | string | – | Default core |
No output schema declared.
No examples provided.
get_hyperliquid_history ~233
Long price history for one Hyperliquid perp, with no gap up to now: FortFi's stored candles (years for most markets, synced daily) plus live candles since the last sync. Returns the latest `limit` candles in the window, oldest first, as {t,o,h,l,c,v}. When older candles exist, olderEndTime is set: pass it as endTime to page back. includeFunding adds hourly funding rates for the same window. Use get_hyperliquid_market for a quick recent look, this for research.
| Name | Type | Req | Description |
|---|---|---|---|
| endTime | – | – | Window end, epoch ms or ISO date. Default: now. |
| includeFunding | boolean | – | Add hourly funding rates for the window |
| interval | string | – | Candle interval (default 1h) |
| limit | number | – | Max candles returned (default 500, max 5000) |
| startTime | – | – | Window start, epoch ms or ISO date. Default: limit candles before endTime. |
| symbol | string | yes | Market symbol, e.g. BTC, kPEPE, xyz:NVDA |
No output schema declared.
No examples provided.
get_hyperliquid_market ~59
Get a Hyperliquid perp market by symbol with mark/funding context and optional candle history.
| Name | Type | Req | Description |
|---|---|---|---|
| interval | string | – | Candle interval (default 1h) |
| symbol | string | yes | Coin symbol, e.g. BTC |
No output schema declared.
No examples provided.
get_hyperliquid_order_book ~169
Live order book for one Hyperliquid perp (core or HIP-3, e.g. BTC or xyz:NVDA): up to 20 levels a side, mid, spread, and USD resting within 0.5%, 1% and 2% of mid. Pass sizeUsd to see the average fill and price impact of a market buy and sell of that size. Use it before sizing an order or to compare liquidity across coins.
| Name | Type | Req | Description |
|---|---|---|---|
| nSigFigs | number | – | Group prices to this many significant figures to see deeper into the book (default: full precision) |
| sizeUsd | number | – | Optional order size in USD for the price impact estimate |
| symbol | string | yes | Coin symbol, e.g. BTC or xyz:NVDA |
No output schema declared.
No examples provided.
get_hyperliquid_outcome_market ~65
One HIP-4 outcome market. id is the numeric outcome id. Optional walletId reads that Hyperliquid account's share balance.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Outcome id, e.g. 9802 |
| walletId | string | – | – |
No output schema declared.
No examples provided.
get_hyperliquid_predicted_funding ~139
Next funding rate per Hyperliquid perp, per hour and annualized, with Binance and Bybit for the same coin and the gap between them. Positive means longs pay shorts. Without symbols: core coins sorted by the size of the Hyperliquid rate. HIP-3 coins (xyz:, …) need symbols and return the current hourly rate. For past funding use get_hyperliquid_history with includeFunding=true.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Rows to return, 1-300 (default 50) |
| symbols | – | – | Coins to return. Comma-separated string or array, up to 100. |
No output schema declared.
No examples provided.
get_hyperliquid_research_data_stats ~44
Row counts and last ingest time for hl_research_* tables (candles, funding, symbols). Use before backtests to confirm data freshness.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_hyperliquid_trading_desk ~127
One-shot Hyperliquid trading desk snapshot for agent loops: margin, balances, positions, open orders, recent fills, and a `performance` block with unrealizedPnlUsd, unrealizedPnlPct, entryNotionalUsd, openPositionCount, and realizedPnlUsdRecentFills. Prefer this over many separate reads every 30-60 minutes.
| Name | Type | Req | Description |
|---|---|---|---|
| fillLimit | number | – | Recent fills to include (default 100, max 500) |
| walletId | string | yes | FortFi wallet id on hyperliquid-mainnet |
No output schema declared.
No examples provided.
get_hyperliquid_user_fills ~73
Recent Hyperliquid trade fills with closedPnl per fill. Use for P&L review and trade history (up to 2000 from HL).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max fills to return (default 200, max 2000) |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
get_mcp_guide ~65
FortFi MCP capability guide: onboarding paths, pricing, limits, workflows, and full tool catalog. Call first when unsure which tool to use (e.g. market research → discover_tokens, not the Explore UI REST route).
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | – | Default overview |
No output schema declared.
No examples provided.
get_payment_product ~34
Get a payment product by internal id or public slug.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | – | – |
| slug | string | – | – |
No output schema declared.
No examples provided.
get_payment_request ~38
Get a payment request by internal id or public pid, including settlement attempts.
| Name | Type | Req | Description |
|---|---|---|---|
| idOrPid | string | yes | Internal id or public pid |
No output schema declared.
No examples provided.
get_policy_limits ~45
Current policy limits: per-tx/daily/monthly caps (USDC smallest units). Agent accounts also include agent cap tier limits, maxWallets, and credential access expiry.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_polymarket_market ~76
Get a Polymarket market by conditionId with optional outcome price history from the public CLOB API.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | yes | Market condition id |
| interval | string | – | Price history window (default 1w) |
| tokenId | string | – | Outcome token id for history (defaults to first outcome) |
No output schema declared.
No examples provided.
get_portfolio ~32
Full portfolio summary across all wallets: token balances with USD values, 24h change, and total net worth.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_provisioning_job ~54
Poll a bulk provisioning job (treasury + keys:manage + wallets:read). bearerKey appears once when secretsDelivery is revealed.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Job id from create_provisioning_job |
No output schema declared.
No examples provided.
get_strategy ~56
Get one strategy with its last 20 runs (each run lists the orders it placed and their result).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Strategy id from list_strategies |
| walletId | string | yes | Wallet the strategy runs on |
No output schema declared.
No examples provided.
get_swap_routing_guide ~59
Returns which swap/bridge tool to use for a given from→to chain pair, with notes on protocols supported.
| Name | Type | Req | Description |
|---|---|---|---|
| fromChainId | string | yes | Source chain id |
| toChainId | string | yes | Destination chain id |
No output schema declared.
No examples provided.
get_token_chart ~185
Fetch a compact Zerion chart summary plus deterministic EMA, RSI, MACD, Bollinger, return, max-drawdown, and data-quality analysis. Raw points are omitted by default; set includePoints:true only for visual charting or external analysis. Discontinuous pre-migration/launch samples are excluded from TA.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Token contract address or Solana mint (fallback) |
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, ethereum-mainnet |
| fungibleId | string | – | Zerion fungible id returned by discover_tokens (preferred) |
| includePoints | boolean | – | Include the raw chart points array. Default false. |
| indicators | array | – | Optional indicators to return; defaults to all. REST callers may pass a comma-separated value. |
| period | string | – | Chart window (default day) |
No output schema declared.
No examples provided.
get_treasury_context ~53
Who am I? Returns treasury email, user id, credential kind/scopes, vault summary, and policy limits for this API key. Call first to confirm you are on the correct account before money-moving tools.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_usage_balance ~40
Monthly UpTo product balance: cap, used, remaining, and period bounds. Billable writes consume this pool; unused budget is refunded at period end.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_wallet_loss_cap ~92
Read the loss cap on a Hyperliquid wallet: the max loss in percent, whether it is armed or tripped, the balance it was set at, and (live) how much the wallet has lost or made since. Deposits and withdrawals do not count as gains or losses. Returns lossCap null when none is set.
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | hyperliquid-mainnet wallet id |
No output schema declared.
No examples provided.
get_wallet_scoreboard ~156
Scoreboard for a Hyperliquid wallet from Hyperliquid's public data: balance, P&L in dollars and percent, win rate (closed trades that beat their fees), trades, fees, volume, worst drop, the loss cap, and BTC buy-and-hold over the same window (no leverage) as the bar to beat. Same numbers anyone can check on the Hyperliquid explorer (explorerUrl). Use it to review how your trading is going before changing anything.
| Name | Type | Req | Description |
|---|---|---|---|
| includeHistory | boolean | – | Add balance and P&L-over-time points [timestampMs, usd] |
| period | string | – | Window (default week) |
| walletId | string | yes | hyperliquid-mainnet wallet id |
No output schema declared.
No examples provided.
get_yield_market_detail ~214
Evidence for one Morpho vault: current net APY/TVL, historical APY and TVL series, period statistics, quality flags, allocation, instant-withdrawal liquidity, separated eligibility/readiness status, and timestamp. Rank on evidence.apy.medianPercent: the raw series contains upstream artifacts (points above 3000% APY) so averagePercent is filtered and medianPercent is the robust level. Check evidence.liquidity.redeemableUsd before sizing, since vaults typically run near 90% utilization and only unborrowed supply can be withdrawn on demand. Use before recommending or proposing a deposit.
| Name | Type | Req | Description |
|---|---|---|---|
| apyDays | number | – | APY history window, 7–365 days; default 30 |
| chainId | string | yes | FortFi yield-supported chain id |
| tvlDays | number | – | TVL history window, 7–365 days; default 90 |
| vaultAddress | string | yes | Vault address from list_yield_markets |
No output schema declared.
No examples provided.
invite_agent_cosigner ~150
Invite a co-signer. Agents: pass cosignerUserId (GOVERN / funding-wallet sign when using an agent API key). Humans: pass email — opens instructions for Security UI passkey provision (Turnkey dual-control with MCP DA).
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | Governance challengeId from the first call |
| cosignerUserId | string | – | Agent path: FortFi userId of the agent to invite as co-signer |
| string | – | Human path: invitee email for Security UI co-signer provision | |
| nickname | string | – | Optional nickname for this co-signer |
| walletSignature | string | – | Funding-wallet signature over the challenge message |
No output schema declared.
No examples provided.
invite_cosigner ~70
Alias of invite_agent_cosigner. Humans: email → Security UI. Agents: cosignerUserId.
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | – |
| cosignerUserId | string | – | – |
| string | – | – | |
| nickname | string | – | – |
| walletSignature | string | – | – |
No output schema declared.
No examples provided.
How do I install the FortFi Treasury MCP server?
FortFi Treasury MCP is a hosted endpoint at https://fortfiapp.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · fortfiapp.com
claude mcp add --transport http rebelartists-fortfi-treasury-mcp 'https://fortfiapp.com/api/mcp'
What is the FortFi Treasury MCP server?
FortFi Treasury MCP is listed in the public MCP registry as io.github.rebelArtists/fortfi-treasury-mcp. Policy-gated MCP treasury for AI agents, x402 subscribe, 50+ tools, multi-chain. This page covers its hosted endpoint (https://fortfiapp.com/api/mcp).
Is the FortFi Treasury MCP server safe to use?
FortFi Treasury MCP scores 62 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the FortFi Treasury MCP server expose?
FortFi Treasury MCP exposes 139 tools: get_mcp_guide, get_treasury_context, list_wallets, list_recipients, list_audit_log, and 134 more. Their descriptions and schemas cost roughly 15,209 tokens of context every time the server is loaded.
Does the FortFi Treasury MCP server require authentication?
No. We connected to FortFi Treasury MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the FortFi Treasury MCP server still maintained?
FortFi Treasury MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.