FortFi Treasury is a remote MCP server that gives an AI agent 117 tools, among them accept_cosigner_invite, add_recipient, approve_cosigner_action. It answers at https://fortfiapp.com/api/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 23 October 2026, succeeded.
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
accept_cosigner_invite | Accept a pending co-signer invite. After accepting, you will be able to approve/reject pending actions for that account. Inputs: inviteId |
add_recipient | 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. Inputs: address, chainId, nickname, challengeId, walletSignature |
approve_cosigner_action | Approve a pending action as co-signer. Use with list_pending_cosigner_approvals. Inputs: pendingApprovalId |
approve_recipient | 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 se Inputs: recipientId, challengeId, walletSignature |
cancel_governance_change | 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. Inputs: challengeId |
cancel_payment_request | Cancel an open payment request with no verified settlement. Inputs: idOrPid |
cancel_pending_action | Cancel a pending approval that you (the account owner) initiated. Inputs: pendingApprovalId |
check_trade_allowance | 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. Inputs: fromWalletId, tokenAddress, requiredAmountSmallest, flow |
confirm_proposal | 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. Inputs: proposalId, confirmToken |
create_checkout_session | 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 Inputs: customer, productSlug, amountUsd, amountSmallestUnit, description, reference |
create_customer | 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. Inputs: clientRequestId, externalCustomerId, namespace, wallet, credential |
create_merchant_webhook | 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. Inputs: url, description |
create_payment_product | 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. Inputs: walletMappingId, name, slug, amountUsd, amountSmallestUnit, description |
create_payment_request | Create a shareable payment request for a vault. Returns pid, paymentUrl, and qrPayload for humans or agents. Inputs: walletMappingId, amountSmallestUnit, amountUsd, description, externalReference, metadata |
create_provisioning_job | 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. Inputs: idempotencyKey, items |
create_vault_credential | Mint a vault-scoped credential for an existing wallet (treasury + keys:manage). Returns bearerKey once when agentPublicKey is omitted. Requires FORTFI_VAULT_CREDENTIALS_ENABLED. Inputs: name, access, agentPublicKey, vaultGrants, expiresAt |
discover_tokens | 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 Inputs: chainId, query, limit, sort, verifiedOnly |
extend_payment_request | Extend an open payment request expiry (default extension window in days). Inputs: idOrPid, expiryDays |
get_account_holdings | Token holdings for a specific wallet, with USD values and 24h change. Inputs: walletId |
get_cosigner_rules | Amount-banded cosigner quorum rules for sends and swaps. Below-band amounts auto-execute; matching bands require N cosigner votes. |
get_fusion_order_status | 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. Inputs: orderHash |
get_hyperliquid_balances | 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, entryNotionalUs Inputs: walletId |
get_hyperliquid_cross_section | 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 (vali Inputs: scope, includeAllDesks, dex, assetClass, minDayVolumeUsd, lookbackDays |
get_hyperliquid_market | Get a Hyperliquid perp market by symbol with mark/funding context and optional candle history. Inputs: symbol, interval |
get_hyperliquid_research_data_stats | Row counts and last ingest time for hl_research_* tables (candles, funding, symbols). Use before backtests to confirm data freshness. |
get_hyperliquid_trading_desk | 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 realizedPnlUsdRe Inputs: walletId, fillLimit |
get_hyperliquid_user_fills | Recent Hyperliquid trade fills with closedPnl per fill. Use for P&L review and trade history (up to 2000 from HL). Inputs: walletId, limit |
get_mcp_guide | 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). Inputs: topic |
get_payment_product | Get a payment product by internal id or public slug. Inputs: id, slug |
get_payment_request | Get a payment request by internal id or public pid, including settlement attempts. Inputs: idOrPid |
get_policy_limits | Current policy limits: per-tx/daily/monthly caps (USDC smallest units). Agent accounts include billingPlan (personal|startup), billingPlanName, maxWallets, tier, and subscription expiry. |
get_polymarket_market | Get a Polymarket market by conditionId with optional outcome price history from the public CLOB API. Inputs: conditionId, tokenId, interval |
get_portfolio | Full portfolio summary across all wallets: token balances with USD values, 24h change, and total net worth. |
get_provisioning_job | Poll a bulk provisioning job (treasury + keys:manage + wallets:read). bearerKey appears once when secretsDelivery is revealed. Inputs: jobId |
get_swap_routing_guide | Returns which swap/bridge tool to use for a given from→to chain pair, with notes on protocols supported. Inputs: fromChainId, toChainId |
get_token_chart | 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. Dis Inputs: chainId, fungibleId, address, period, indicators, includePoints |
get_treasury_context | 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. |
get_usage_balance | Monthly UpTo product balance: cap, used, remaining, and period bounds. Billable writes consume this pool; unused budget is refunded at period end. |
get_yield_market_detail | 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.media Inputs: chainId, vaultAddress, apyDays, tvlDays |
invite_agent_cosigner | 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). Inputs: cosignerUserId, email, nickname, challengeId, walletSignature |
invite_cosigner, list_activity_report, list_audit_log, list_cosigner_memberships, list_funding_wallet_agents, list_governance_requests, list_hyperliquid_markets, list_hyperliquid_open_orders, list_hyperliquid_positions, list_hyperliquid_symbol_master, list_incoming_cosigner_invites, list_merchant_webhook_deliveries, list_merchant_webhooks, list_payment_products, list_payment_purchases, list_payment_requests, list_payment_sales, list_pending_cosigner_approvals, list_polymarket_markets, list_polymarket_positions, list_recipients, list_token_spender_grants, list_wallets, list_yield_markets, list_yield_positions, pay_payment_request_x402, plan_rebalance, preview_bridge_quote, preview_swap_quote, propose_bridge, propose_create_account, propose_hyperliquid_deposit, propose_hyperliquid_perp_close, propose_hyperliquid_perp_modify, propose_hyperliquid_perp_open, propose_hyperliquid_send_asset, propose_hyperliquid_spot_to_perp, propose_hyperliquid_withdraw, propose_payout_manifest, propose_polymarket_buy, propose_polymarket_redeem, propose_polymarket_sell, propose_recipient_manifest, propose_rename_account, propose_solana_swap, propose_swap, propose_token_approve, propose_transfer, propose_yield_deposit, propose_yield_withdraw, rank_hyperliquid_markets, rank_polymarket_markets, rank_tokens, rank_yield_markets, register_backup_governance_wallet, reject_cosigner_action, remove_backup_governance_wallet, remove_cosigner, remove_recipient, replay_merchant_webhook_delivery, resend_claim_link, review_portfolio, revoke_cosigner_invite, revoke_vault_credential, run_hyperliquid_research_backtest, run_hyperliquid_research_backtest_spec, screen_hyperliquid_markets, screen_tokens, search_credentials, search_polymarket_markets, search_vaults, send_merchant_webhook_test, update_cosigner_rules, update_vault_credential, update_wallet_metadata, validate_payout_manifest, validate_recipient_manifest
Every block below points at https://fortfiapp.com/api/mcp. Pick your client and copy.
claude mcp add --transport http fortfi-treasury https://fortfiapp.com/api/mcp
{
"mcpServers": {
"fortfi-treasury": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://fortfiapp.com/api/mcp"]
}
}
}{
"mcpServers": {
"fortfi-treasury": {
"url": "https://fortfiapp.com/api/mcp"
}
}
}{
"servers": {
"fortfi-treasury": {
"type": "http",
"url": "https://fortfiapp.com/api/mcp"
}
}
}{
"context_servers": {
"fortfi-treasury": {
"url": "https://fortfiapp.com/api/mcp"
}
}
}{
"mcpServers": {
"fortfi-treasury": {
"serverUrl": "https://fortfiapp.com/api/mcp"
}
}
}{
"mcpServers": {
"fortfi-treasury": {
"url": "https://fortfiapp.com/api/mcp"
}
}
}name: FortFi Treasury
version: 0.0.1
schema: v1
mcpServers:
- name: FortFi Treasury
type: streamable-http
url: https://fortfiapp.com/api/mcp{
"mcpServers": {
"fortfi-treasury": {
"httpUrl": "https://fortfiapp.com/api/mcp"
}
}
}{
"mcpServers": {
"fortfi-treasury": {
"type": "http",
"url": "https://fortfiapp.com/api/mcp"
}
}
}{
"mcpServers": {
"fortfi-treasury": {
"url": "https://fortfiapp.com/api/mcp"
}
}
}goose://extension?url=https%3A%2F%2Ffortfiapp.com%2Fapi%2Fmcp&type=streamable_http&id=fortfi-treasury&name=FortFi%20Treasury
It answered our last check on 23 October 2026 in 512 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
117, as returned by the server's own tools/list on 20 September 2026: accept_cosigner_invite, add_recipient, approve_cosigner_action, approve_recipient, cancel_governance_change, cancel_payment_request, cancel_pending_action, check_trade_allowance, and 109 more.
It answered our last check on 23 October 2026 in 512 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://fortfiapp.com/api/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
No: the publisher declares paid use. {"protocols": ["x402"], "price": 1.0, "currency": "USDC", "networks": ["base"], "verified": "live", "priceSource": "live", "checked": 1792774964}
Publisher: io.github.rebelartists. Endpoint host: fortfiapp.com. ARD identifier: urn:air:io.github.rebelartists:mcp:fortfi-treasury-mcp.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.