FortFi Treasury MCP
REMOTE · FORTFIAPP.COM
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Available components
Last scanned (7 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 →
list_activity_report ~76
Treasury activity timeline (JSON) for reconciliation: normalized labels, USD hints, vault scope, and categories. Optional walletId narrows to one vault. Requires reporting:read (or account:read).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter timeline category (default all) |
| walletId | string | – | Filter to one wallet mapping id |
No output schema declared.
No examples provided.
list_audit_log ~240
Recent account activity: one row per money move (sends, swaps, bridges), blocked attempt, or account change (keys, recipients). Money rows and blocked rows carry a confirmationNumber (FF-XXXX-XXXX) the owner can quote to FortFi support. Blocked rows carry the reasons. Pass view: 'full' for every internal step. Optional walletId filters to one vault's history. Pass cursor (from a previous page's nextCursor, even as an empty string on the first call) to switch the response to { items, nextCursor } and page back through full history instead of only the most recent entries.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous page's nextCursor. Passing this key (even as '') switches the response to { items, nextCursor }. |
| limit | number | – | Max entries to return (default 20, max 100) |
| view | string | – | activity (default): one row per money move, blocked attempt, or account change. full: every audit step, including internal ones. |
| walletId | string | – | Filter to audit entries for one wallet id |
No output schema declared.
No examples provided.
list_copy_trade_leaders ~120
Top Hyperliquid accounts by profit over a window (week, month, allTime), from Hyperliquid's public leaderboard. Only accounts over $25k that traded this month and are profitable all-time. Use get_copy_trade_wallet before copying one.
| Name | Type | Req | Description |
|---|---|---|---|
| page | number | – | 0-based page, default 0 |
| pageSize | number | – | 1 to 50, default 20 |
| query | string | – | Address prefix (0x...) or display name fragment |
| window | string | – | Default month |
No output schema declared.
No examples provided.
list_cosigner_memberships ~19
Active co-signers on this account.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_funding_wallet_agents ~47
List all FortFi agent accounts funded by the same payment wallet as this agent. Use to discover agentLabel / userId when renewing or spawning siblings (treasury multi-agent setups).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_governance_requests ~39
List open governance requests on this account: pending (awaiting signature) and legacy scheduled rows. Use to monitor for unexpected loosening attempts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_hyperliquid_markets ~86
List Hyperliquid perpetual markets with live mark/mid/oracle prices, funding, open interest, and 24h volume. Public data; no proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Page size (default 30, max 100) |
| offset | number | – | Pagination offset (default 0) |
| search | string | – | Filter by coin symbol |
No output schema declared.
No examples provided.
list_hyperliquid_open_orders ~36
List resting Hyperliquid orders including SL/TP triggers for a wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | – |
No output schema declared.
No examples provided.
list_hyperliquid_outcome_markets ~109
List Hyperliquid HIP-4 outcome markets on the same account as perps. Prices are quote-micro (650000 = $0.65) from exchange mids. volumeUsd is 0 because outcomeMeta does not publish volume.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | marketId from the previous page nextCursor |
| limit | number | – | Page size, default 50, max 300 |
| q | string | – | Search question, name, or description |
No output schema declared.
No examples provided.
list_hyperliquid_positions ~60
List open Hyperliquid perp positions and margin summary for a hyperliquid-mainnet wallet (its address is used on the L1 order book).
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | FortFi wallet id on hyperliquid-mainnet |
No output schema declared.
No examples provided.
list_hyperliquid_symbol_master ~158
Security master for Hyperliquid perps: symbol, dex, desk label, short symbol, display name, asset class (crypto/equity/commodity/fx/index/pre_ipo), plus live volume and funding. Default scope=core; pass scope=all for HIP-3.
| Name | Type | Req | Description |
|---|---|---|---|
| assetClass | – | – | Filter asset classes. Comma-separated string or array. |
| dex | – | – | Filter dex ids (core, xyz, io, para). Comma-separated string or array. |
| includeAllDesks | boolean | – | When true, same as scope=all |
| limit | number | – | Max rows by 24h volume (default all, max 500) |
| scope | string | – | Default core |
No output schema declared.
No examples provided.
list_incoming_cosigner_invites ~45
List pending co-signer invites sent TO this account (where this account is the invitee). Use to discover accounts you can become a co-signer for.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_merchant_webhook_deliveries ~86
List webhook delivery log. Use status=failed for dead-letter queue rows. Filter by paymentRequestId to find deliveries for one checkout.
| Name | Type | Req | Description |
|---|---|---|---|
| endpointId | string | – | – |
| limit | number | – | Max rows (default 50, max 200) |
| paymentRequestId | string | – | Internal payment request UUID |
| status | string | – | – |
No output schema declared.
No examples provided.
list_merchant_webhooks ~22
List registered webhook endpoints (secrets are never returned).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_payment_products ~18
List persistent product checkout links for the account.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_payment_purchases ~66
Buyer view: FortFi checkouts your vaults paid (what you bought). Matches settlements by payer wallet address across your fleet.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max rows (default 200, max 500) |
| walletMappingId | string | – | Optional payer vault filter |
No output schema declared.
No examples provided.
list_payment_requests ~36
List payment requests for the authenticated account.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | – |
| walletMappingId | string | – | Optional vault filter |
No output schema declared.
No examples provided.
list_payment_sales ~49
Merchant view: paid and partially paid invoices on your collection vaults (what you sold). Includes payer, method, and settlement details.
| Name | Type | Req | Description |
|---|---|---|---|
| walletMappingId | string | – | Optional collection vault filter |
No output schema declared.
No examples provided.
list_pending_cosigner_approvals ~51
Pending actions that require this account's co-signer approval. Use when this agent is a co-signer on another account.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max entries (default 10) |
No output schema declared.
No examples provided.
list_polymarket_markets ~117
List active Polymarket prediction markets on Polygon with volume, liquidity, and outcome prices.
| Name | Type | Req | Description |
|---|---|---|---|
| afterCursor | string | – | Pagination cursor from a prior list response |
| limit | number | – | Max markets (default 25) |
| minLiquidityUsd | number | – | Minimum liquidity USD (default 10000) |
| search | string | – | Optional question/slug filter |
| sortBy | string | – | volume_24hr (default), volume, liquidity, or end_date |
| sortDirection | string | – | – |
No output schema declared.
No examples provided.
list_polymarket_positions ~41
List Polymarket outcome token positions for a Polygon wallet. walletId is required.
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | FortFi Polygon wallet id |
No output schema declared.
No examples provided.
list_recipients ~39
List all allowlisted recipients. Includes cooldown status: `cooldownActive: true` means the recipient cannot yet receive funds (24-hour gate).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_strategies ~84
List strategies running on your Hyperliquid accounts (presets and copy trades): status, leverage, cap, next rebalance, and whether an API key started it. Stopped strategies are hidden unless includeStopped is true.
| Name | Type | Req | Description |
|---|---|---|---|
| includeStopped | boolean | – | Include stopped strategies |
| walletId | string | – | Optional: only this hyperliquid-mainnet wallet |
No output schema declared.
No examples provided.
list_strategy_presets ~80
List FortFi autonomous Hyperliquid strategies (house presets) with their published backtest: out-of-sample return, Sharpe and drawdown at 1x, walk-forward windows, every leverage scenario, tested leverage (start_strategy accepts these), high-risk leverage (owner passkey only), and the minimum account size per leverage. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_token_spender_grants ~41
List active ERC-20 token approvals (spender grants) on this account. Useful before proposing a swap to confirm the CoW vault is approved.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_wallets ~165
List FortFi wallets for this account: chain, address, nickname, metadata tags, and default flag. Optional metadataKey/metadataValue filter (exact match). Pass cursor and/or limit to page through large fleets — response becomes { items, nextCursor } when either is set; omit both for the plain array of all wallets.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous page's nextCursor. Passing this (even empty) switches the response to { items, nextCursor }. |
| limit | number | – | Page size when paginating (default 50, max 200) |
| metadataKey | string | – | Filter wallets that include this metadata key (optional) |
| metadataValue | string | – | When set with metadataKey, require an exact value match |
No output schema declared.
No examples provided.
list_yield_markets ~187
Open Morpho yield discovery by chain with discovered, policyEligible, manuallyCurated, executionReady, and eligibilityReasons. Default minimum TVL is $500K everywhere (listing, policy, Turnkey). executionReady means TVL qualifies and you have a wallet on that chain; POLICY_SYNC_RECOMMENDED is advisory only.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | Asset symbol filter, default USDC |
| chainId | string | – | FortFi chain id or omit for all yield chains |
| limit | number | – | Max vaults (default 15, max 25) |
| minTvlUsd | number | – | Minimum vault TVL in USD (default 500000) |
| sortBy | string | – | net_apy (default) or tvl |
| verifiedOnly | boolean | – | If true, only FortFi curated vaults; default false = open discovery |
No output schema declared.
No examples provided.
list_yield_positions ~90
Active Morpho yield positions with per-vault valueUsd, earnedUsd (Morpho pnlUsd), netApy, and a summary block. summary.cumulativeEarnedUsd matches Morpho pnl on the open vaults when the ledger cannot explain the balance. A deposit missing from the ledger is principal, not earnings. Use at the start of every yield desk run to report standing P&L.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pause_strategy ~37
Pause a strategy. Positions stay open; no more orders until resumed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
pay_payment_request_x402 ~87
Pay an open FortFi invoice via x402 EIP-3009 from a governed Turnkey vault. Requires Delegated Access on human developer keys or an agent account. Base mainnet first.
| Name | Type | Req | Description |
|---|---|---|---|
| fromWalletId | string | yes | Payer vault id (must match invoice chain) |
| paymentRequestPid | string | yes | Public invoice pid from checkout URL or create_payment_request |
No output schema declared.
No examples provided.
plan_rebalance ~135
Read-only rebalance planner toward target weights. Returns suggested legs (swap, yield_deposit, yield_withdraw) without executing. Use propose_* + confirm_proposal to act.
| Name | Type | Req | Description |
|---|---|---|---|
| driftThresholdPercent | number | – | Ignore drift below this % (default 5) |
| minLegUsd | number | – | Minimum leg size in USD (default 1) |
| targets | array | yes | Target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Example: 40% cash, 10% yield, 30% UNI, 20% other tokens. |
No output schema declared.
No examples provided.
preview_bridge_quote ~91
Optional advanced step: fetch a cross-chain bridge quote (Fusion+ or deBridge) and return previewQuoteId. Omit previewQuoteId on propose_bridge to bundle quote+proposal in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| buySymbol | string | yes | – |
| fromWalletId | string | yes | – |
| sellSymbol | string | yes | – |
| toWalletId | string | yes | – |
No output schema declared.
No examples provided.
preview_swap_quote ~212
Optional advanced step: fetch a same-chain swap quote (CoW on EVM, Jupiter on Solana) and return previewQuoteId. Omit previewQuoteId on propose_* to bundle quote+proposal in one call. Does not execute or move funds.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Approximate sell amount in USD |
| buyMint | string | – | Solana buy mint — omit for EVM |
| buySymbol | string | yes | – |
| buyTokenAddress | string | – | EVM buy token (0x…) — omit for Solana |
| fromWalletId | string | yes | Source wallet id |
| sellMint | string | – | Solana sell mint — omit for EVM |
| sellSymbol | string | yes | – |
| sellTokenAddress | string | – | EVM sell token (0x…) — omit for Solana |
| slippagePercent | number | – | Optional Jupiter slippage 0–50 |
| toWalletId | string | – | Optional Solana receive wallet |
No output schema declared.
No examples provided.
propose_bridge ~242
Propose a Fusion+ or deBridge cross-chain swap. FortFi resolves chain-specific verified token contracts from sellSymbol/buySymbol; optional token addresses are mismatch assertions, never routing overrides. Inline quote by default, or use previewQuoteId for two-step review. Agent wallets execute on confirm_proposal. API keys on a passkey account cannot bridge: this returns OWNER_PASSKEY_REQUIRED, and the owner bridges in the FortFi app with their passkey (preview_bridge_quote still works).
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Bridge amount in USD |
| buySymbol | string | yes | Buy token symbol |
| buyTokenAddress | string | – | Optional expected destination token contract; proposal fails if it differs from FortFi's verified chain resolution |
| fromWalletId | string | yes | Source wallet id |
| previewQuoteId | string | – | Optional — from preview_bridge_quote for explicit quote review before propose |
| sellSymbol | string | yes | Sell token symbol |
| sellTokenAddress | string | – | Optional expected source token contract; proposal fails if it differs from FortFi's verified chain resolution |
| toWalletId | string | yes | Destination wallet id (different chain) |
No output schema declared.
No examples provided.
propose_create_account ~130
Create a new wallet on a supported chain. Optional metadata tags (e.g. customer_id). Then call confirm_proposal with the returned proposalId. Agent accounts execute server-side when no cosigners are configured.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, robinhood-mainnet, solana-mainnet |
| metadata | object | – | Optional flat string tags (max 20 keys), e.g. { "customer_id": "cust_123" } |
| walletName | string | yes | Display name for the new wallet (2–64 chars) |
No output schema declared.
No examples provided.
propose_hyperliquid_deposit ~100
Propose moving HyperEVM USDC into Hyperliquid perp margin (top up). Set perpDex for HIP-3 desks (xyz, io, para). Returns proposalId; execute with confirm_proposal (server-side when Delegated Access or agent credential).
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| perpDex | string | – | core | xyz | io | para (default core) |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_outcome_order ~181
Propose a HIP-4 buy or sell on the Hyperliquid account. size is micro-USDC collateral (10000000 = $10). limitPrice is quote-micro. Runs outcome policy (no leverage, max notional) before any signature. Confirm with confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| limitPrice | string | – | Quote-micro. Required for limit. 650000 is $0.65. |
| marketId | string | yes | Outcome id, e.g. 9802 |
| orderType | string | yes | – |
| outcomeId | string | yes | Side id outcomeId:sideIndex, e.g. 9802:0 |
| side | string | yes | – |
| size | string | yes | Collateral in micro-USDC. Minimum 10000000 ($10). |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_perp_close ~73
Propose closing a Hyperliquid perp position (reduce-only). Omit size to close the whole position. Returns a proposalId for confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| size | string | – | Optional; omit to close all |
| symbol | string | yes | – |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_perp_modify ~259
Propose modifying an open Hyperliquid perp position: its stop-loss / take-profit and/or its leverage. Only the exit you pass is replaced: changing stopLoss keeps the resting take-profit(s), and vice versa. leverage changes the open position's leverage in place (keeps its cross / isolated mode, size unchanged). Raising leverage runs FortFi perp policy (max leverage) and the wallet loss cap; lowering it needs enough margin on Hyperliquid. Returns a proposalId for confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| leverage | integer | – | New leverage for the open position (whole number, up to the market max and the owner's policy max). Must differ from the current leverage. |
| stopLoss | string | – | New stop-loss trigger for the whole position. Replaces the resting stop only. |
| symbol | string | yes | – |
| takeProfit | string | – | New take-profit trigger. Replaces the resting take-profit(s) only. |
| takeProfitSizePercent | integer | – | Close only this % of the position at takeProfit (e.g. 50 to bank half at 2R and let the rest run). Default 100. The stop keeps covering the full position. |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_perp_open ~398
Propose opening a Hyperliquid perp position. Runs FortFi perp policy (max leverage, max notional) and rejects non-hyperliquid-mainnet wallets. Optional marginMode picks cross or isolated margin. Returns a proposalId for confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledgePriceImpact | boolean | – | Set true only after a HYPERLIQUID_PRICE_IMPACT_CONFIRM_REQUIRED error, to accept >=1% book impact on a market order. Prefer limitPrice or a smaller size. |
| leverage | number | – | – |
| limitPrice | string | – | Optional resting limit price (GTC). Must be within 5% of mid when it crosses the book. Omit for a market order. |
| marginMode | string | – | Optional. cross shares the wallet's margin across positions; isolated caps the loss at the margin put into this position. Omit for cross (isolated on isolated-only markets). An already-open position… |
| side | string | yes | – |
| size | string | – | Coin-unit size (string). Use sizeUsd instead for USD notional. |
| sizeUsd | string | – | USD notional target (min $10 on HL). Preferred for agents. |
| stopLoss | string | – | Optional stop-loss trigger. With limitPrice it attaches to the order (normalTpsl) and arms once it fills, validated against the limit price. |
| symbol | string | yes | e.g. BTC, ETH, xyz:TSLA, xyz:GOLD |
| takeProfit | string | – | Optional take-profit trigger. With limitPrice it attaches to the order (normalTpsl) and arms once it fills, validated against the limit price. |
| timeInForce | string | – | Limit orders only. Gtc (default), Alo (post only, rejected if it would cross), Ioc. |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_send_asset ~135
Move USDC between Hyperliquid margin desks without HyperEVM (any perp book: core, xyz, io, para, mkts, …, or spot → any perp desk). Use list_hyperliquid_balances perpDesks[].dex for valid dex ids.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| destinationDex | string | yes | core | or any HIP-3 builder dex (not spot) |
| sourceDex | string | yes | core | spot | or any HIP-3 builder dex (xyz, io, para, mkts, …) |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_spot_to_perp ~75
Propose moving USDC from HL Spot into core perps margin (required after MoonPay HyperCore on-ramp). Returns proposalId; human confirms via Perps Deposit to tradable balance or confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_hyperliquid_withdraw ~95
Propose moving Hyperliquid perp USDC to the owner's own HyperEVM wallet (same address; perp to HL Spot, then sendAsset to the USDC system address). Funds cannot go to any other recipient. Returns proposalId; human confirms with passkey via Perps Withdraw to HyperEVM or confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| walletId | string | yes | – |
No output schema declared.
No examples provided.
propose_payout_manifest ~72
Execute a validated payout manifest sequentially (one ActionIntent per line). Requires Delegated Access or agent wallet. Set dryRun:true to validate only.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | If true, validate only — no sends |
| fromWalletId | string | yes | – |
| lines | array | yes | – |
No output schema declared.
No examples provided.
propose_polymarket_buy ~116
Propose buying Polymarket outcome shares, then call confirm_proposal. Requires Polygon wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | yes | Market condition id from list_polymarket_markets |
| fromAccountQuery | string | – | – |
| fromWalletId | string | – | – |
| outcomeIndex | number | yes | 0-based outcome index |
| price | string | yes | Limit price 0-1 (e.g. 0.52) |
| sizeDisplay | string | yes | Share count (e.g. 10) |
No output schema declared.
No examples provided.
propose_polymarket_redeem ~72
Propose redeeming winning shares from a resolved Polymarket market (CTF on Polygon), then call confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | yes | – |
| fromAccountQuery | string | – | – |
| fromWalletId | string | – | – |
| outcomeIndex | number | – | – |
No output schema declared.
No examples provided.
propose_polymarket_sell ~79
Propose selling Polymarket outcome shares (redeem collateral), then call confirm_proposal.
| Name | Type | Req | Description |
|---|---|---|---|
| conditionId | string | yes | – |
| fromAccountQuery | string | – | – |
| fromWalletId | string | – | – |
| outcomeIndex | number | yes | – |
| price | string | yes | – |
| sizeDisplay | string | yes | – |
No output schema declared.
No examples provided.
propose_recipient_manifest ~54
Apply a validated recipient manifest (human/developer key). Adds new allowlist rows with normal 24h cooldown. Agent keys: use add_recipient per row (GOVERN).
| Name | Type | Req | Description |
|---|---|---|---|
| recipients | array | yes | – |
No output schema declared.
No examples provided.
propose_rename_account ~56
Rename a wallet (account nickname), then call confirm_proposal with the returned proposalId.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | yes | Wallet id from list_wallets |
| nickname | string | yes | New nickname (2–64 characters) |
No output schema declared.
No examples provided.
propose_solana_swap ~188
Propose a Solana Jupiter swap. Autonomous agents: inline quote by default, or previewQuoteId for two-step review. confirm signs the bound quote.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Sell amount in USD |
| buyMint | string | yes | Mint address of token to buy |
| buySymbol | string | yes | Human-readable buy symbol |
| fromWalletId | string | yes | Solana wallet id to sell from |
| previewQuoteId | string | – | Optional — from preview_swap_quote for explicit quote review before propose |
| sellMint | string | yes | Mint address of token to sell |
| sellSymbol | string | yes | Human-readable sell symbol |
| slippagePercent | number | – | Optional slippage tolerance 0–50 (default 0.5) |
| toWalletId | string | yes | Solana wallet id to receive (can be same as fromWalletId) |
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.