MCP 服务器

FortFi Treasury MCP

io.github.rebelArtists/fortfi-treasury-mcp

此 MCP 可以做什么

Provides policy-controlled crypto treasury operations across chains, including wallets, payments, token discovery, swaps, bridges, trading data, approvals, and customer vaults.

accept_cosigner_invite
Accept a pending co-signer invite. After accepting, you will be able to approve/reject pending actions for that account.
输入模式
{'type': 'object', 'required': ['inviteId'], 'properties': {'inviteId': {'type': 'string', 'description': 'Invite id from list_incoming_cosigner_invites'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['address', 'chainId'], 'properties': {'address': {'type': 'string', 'description': 'Wallet address (0x… or Solana base58)'}, 'chainId': {'type': 'string', 'description': 'FortFi chain id, e.g. base-mainnet, ethereum-mainnet, robinhood-mainnet, solana-mainnet'}, 'nickname': {'type': 'string', 'description': 'Optional display name'}, 'challengeId': {'type': 'string', 'description': 'Agent GOVERN: challengeId from the first call'}, 'walletSignature': {'type': 'string', 'description': 'Agent GOVERN: funding-wallet signature'}}, 'additionalProperties': False}
approve_cosigner_action
Approve a pending action as co-signer. Use with list_pending_cosigner_approvals.
输入模式
{'type': 'object', 'required': ['pendingApprovalId'], 'properties': {'pendingApprovalId': {'type': 'string'}}, 'additionalProperties': False}
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 self-approval is GOVERN (funding-wallet signature).
输入模式
{'type': 'object', 'required': ['recipientId'], 'properties': {'challengeId': {'type': 'string', 'description': 'Governance challengeId from the first call'}, 'recipientId': {'type': 'string', 'description': 'Recipient id from list_recipients or add_recipient'}, 'walletSignature': {'type': 'string', 'description': 'Funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['challengeId'], 'properties': {'challengeId': {'type': 'string', 'description': 'The governance request id from list_governance_requests'}}, 'additionalProperties': False}
cancel_payment_request
Cancel an open payment request with no verified settlement.
输入模式
{'type': 'object', 'required': ['idOrPid'], 'properties': {'idOrPid': {'type': 'string'}}, 'additionalProperties': False}
cancel_pending_action
Cancel a pending approval that you (the account owner) initiated.
输入模式
{'type': 'object', 'required': ['pendingApprovalId'], 'properties': {'pendingApprovalId': {'type': 'string', 'description': 'Pending approval id from list_pending_cosigner_approvals or list_audit_log'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'tokenAddress', 'requiredAmountSmallest', 'flow'], 'properties': {'flow': {'enum': ['cow_swap', 'fusion_bridge'], 'type': 'string', 'description': 'cow_swap = CoW VaultRelayer; fusion_bridge = 1inch Limit Order'}, 'fromWalletId': {'type': 'string', 'description': 'Source EVM wallet id'}, 'tokenAddress': {'type': 'string', 'description': 'Sell token contract (0x…)'}, 'requiredAmountSmallest': {'type': 'string', 'description': 'Required allowance in token smallest units (e.g. USDC 6 decimals)'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['proposalId'], 'properties': {'proposalId': {'type': 'string', 'description': 'Proposal UUID returned by a propose_* tool'}, 'confirmToken': {'type': 'string', 'description': 'Optional proposal-bound confirmation token when one was returned'}}, 'additionalProperties': False}
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 identity. Price from productSlug or ad-hoc amountUsd.
输入模式
{'type': 'object', 'required': ['customer'], 'properties': {'chainId': {'type': 'string', 'description': 'Chain for ad-hoc sessions (default base-mainnet)'}, 'customer': {'type': 'object', 'required': ['externalId'], 'properties': {'namespace': {'type': 'string', 'description': "Mapping namespace (default 'default')"}, 'externalId': {'type': 'string', 'description': 'Your customer id (e.g. platform-customer-42)'}}, 'description': 'Your customer identity — vault is resolved per (namespace, externalId)', 'additionalProperties': False}, 'metadata': {'type': 'object', 'description': 'Optional metadata object'}, 'amountUsd': {'type': 'number', 'description': 'Ad-hoc price in USD (alternative to productSlug)'}, 'reference': {'type': 'string', 'description': 'Your order/session id, echoed on every webhook'}, 'description': {'type': 'string', 'description': 'Optional checkout note'}, 'productSlug': {'type': 'string', 'description': 'Price from an existing payment product (SKU)'}, 'idempotencyKey': {'type': 'string', 'description': 'Safe retries — same key returns the same session'}, 'expiresInMinutes': {'type': 'number', 'description': 'Session TTL (default 60, product default wins if set)'}, 'amountSmallestUnit': {'type': 'string', 'description': 'Ad-hoc USDC amount in smallest units'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['clientRequestId', 'externalCustomerId', 'wallet'], 'properties': {'wallet': {'type': 'object', 'required': ['chainId', 'nickname'], 'properties': {'chainId': {'type': 'string', 'description': 'e.g. base, ethereum, solana'}, 'metadata': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'nickname': {'type': 'string'}, 'spendingPolicy': {'type': 'object'}}, 'description': 'Wallet to create or reuse for this customer'}, 'namespace': {'type': 'string', 'description': 'Optional mapping namespace (default: default)'}, 'credential': {'type': 'object', 'description': 'Optional vault-scoped credential to issue for this wallet'}, 'clientRequestId': {'type': 'string', 'description': 'Caller idempotency id (unique per provisioning attempt)'}, 'externalCustomerId': {'type': 'string', 'description': 'Your platform customer id (stable across retries)'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': "HTTPS callback URL on the merchant's server"}, 'description': {'type': 'string'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['walletMappingId', 'name'], 'properties': {'name': {'type': 'string', 'description': 'Product display name'}, 'slug': {'type': 'string', 'description': 'Optional URL slug (auto-generated if omitted)'}, 'imageUrl': {'type': 'string', 'description': 'HTTPS product image URL for checkout branding'}, 'amountUsd': {'type': 'number', 'description': 'Price in USD/USDC'}, 'description': {'type': 'string', 'description': 'Checkout subtitle shown to buyers'}, 'merchantSiteUrl': {'type': 'string', 'description': 'Merchant homepage for checkout branding (optional)'}, 'walletMappingId': {'type': 'string', 'description': 'USDC collection vault id'}, 'amountSmallestUnit': {'type': 'string', 'description': 'Alternative: amount in token smallest units'}, 'successRedirectUrl': {'type': 'string', 'description': 'HTTPS buyer redirect after pay (optional)'}}, 'additionalProperties': False}
create_payment_request
Create a shareable payment request for a vault. Returns pid, paymentUrl, and qrPayload for humans or agents.
输入模式
{'type': 'object', 'required': ['walletMappingId'], 'properties': {'metadata': {'type': 'object', 'description': 'Optional metadata object'}, 'amountUsd': {'type': 'number', 'description': 'Invoice amount in USD (1 USD = 1 USDC)'}, 'expiryDays': {'type': 'number', 'description': 'Days until expiry (default 30)'}, 'description': {'type': 'string', 'description': 'Optional invoice note'}, 'walletMappingId': {'type': 'string', 'description': 'Target collection vault id'}, 'externalReference': {'type': 'string', 'description': 'Optional external invoice id'}, 'amountSmallestUnit': {'type': 'string', 'description': 'USDC amount in smallest units (alternative to amountUsd)'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['idempotencyKey', 'items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Up to 20 provisioning items'}, 'idempotencyKey': {'type': 'string', 'description': 'Unique key (8–200 chars) — same key + body replays the job'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['name', 'access', 'vaultGrants'], 'properties': {'name': {'type': 'string', 'description': 'Credential label (2–100 chars)'}, 'access': {'enum': ['read_only', 'read_write'], 'type': 'string'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 expiry (optional)'}, 'vaultGrants': {'type': 'array', 'items': {'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string'}, 'dailyCapUsdMicros': {'type': 'string'}, 'perTxCapUsdMicros': {'type': 'string'}, 'monthlyCapUsdMicros': {'type': 'string'}, 'maxTransactionsPerDay': {'type': 'number'}}}, 'description': 'Explicit wallet grants with optional USD micro caps'}, 'agentPublicKey': {'type': 'string', 'description': 'Optional uncompressed P-256 public key (04… hex) for ECDSA auth'}}, 'additionalProperties': False}
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, 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.
输入模式
{'type': 'object', 'required': ['chainId'], 'properties': {'sort': {'type': 'string', 'description': 'gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d (default market_cap)'}, 'limit': {'type': 'number', 'description': 'Max results (default 10, max 25)'}, 'query': {'type': 'string', 'description': "Optional name/symbol filter, e.g. 'USDC' or 'wrapped'"}, 'chainId': {'type': 'string', 'description': 'FortFi chain id, e.g. base-mainnet, ethereum-mainnet'}, 'verifiedOnly': {'type': 'boolean', 'description': 'Only verified tokens'}}, 'additionalProperties': False}
extend_payment_request
Extend an open payment request expiry (default extension window in days).
输入模式
{'type': 'object', 'required': ['idOrPid', 'expiryDays'], 'properties': {'idOrPid': {'type': 'string'}, 'expiryDays': {'type': 'number', 'description': 'New expiry horizon from now (1-365)'}}, 'additionalProperties': False}
get_account_holdings
Token holdings for a specific wallet, with USD values and 24h change.
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string', 'description': 'Wallet id from list_wallets'}}, 'additionalProperties': False}
get_cosigner_rules
Amount-banded cosigner quorum rules for sends and swaps. Below-band amounts auto-execute; matching bands require N cosigner votes.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'required': ['orderHash'], 'properties': {'orderHash': {'type': 'string', 'description': 'Fusion+ order hash (0x…)'}}, 'additionalProperties': False}
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, entryNotionalUsd, and unrealizedPnlPct (null when nothing is open).
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string', 'description': 'FortFi wallet id on hyperliquid-mainnet'}}, 'additionalProperties': False}
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 (validated trend desk); pass scope=all for HIP-3 cross-asset books. Read-only; never creates proposals.
输入模式
{'type': 'object', 'properties': {'dex': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Filter dex ids. Comma-separated string or array.'}, 'band': {'type': 'number', 'description': 'Hysteresis band, default 1.0. A held name stays eligible while inside the top legsPerSide*(1+band); surfaced as hold_long / hold_short.'}, 'limit': {'type': 'number', 'description': 'Max symbols ranked by volume, default 60'}, 'scope': {'enum': ['core', 'all'], 'type': 'string', 'description': 'Default core'}, 'assetClass': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'enum': ['crypto', 'equity', 'commodity', 'fx', 'index', 'pre_ipo', 'other'], 'type': 'string'}}], 'description': 'Filter asset classes. Comma-separated string or array.'}, 'legsPerSide': {'type': 'number', 'description': 'Legs per side, default 6'}, 'lookbackDays': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Trailing return windows in days. FIRST entry is the ranking signal. Default [14,7,30].'}, 'includeAllDesks': {'type': 'boolean', 'description': 'When true, same as scope=all'}, 'minDayVolumeUsd': {'type': 'number', 'description': 'Liquidity floor, default 2000000'}}, 'additionalProperties': False}
get_hyperliquid_market
Get a Hyperliquid perp market by symbol with mark/funding context and optional candle history.
输入模式
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Coin symbol, e.g. BTC'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'description': 'Candle interval (default 1h)'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
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 realizedPnlUsdRecentFills. Prefer this over many separate reads every 30-60 minutes.
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string', 'description': 'FortFi wallet id on hyperliquid-mainnet'}, 'fillLimit': {'type': 'number', 'description': 'Recent fills to include (default 100, max 500)'}}, 'additionalProperties': False}
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).
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'limit': {'type': 'number', 'description': 'Max fills to return (default 200, max 2000)'}, 'walletId': {'type': 'string'}}, 'additionalProperties': False}
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).
输入模式
{'type': 'object', 'properties': {'topic': {'enum': ['overview', 'tools', 'workflows', 'limits', 'pricing', 'all'], 'type': 'string', 'description': 'Default overview'}}, 'additionalProperties': False}
get_payment_product
Get a payment product by internal id or public slug.
输入模式
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': False}
get_payment_request
Get a payment request by internal id or public pid, including settlement attempts.
输入模式
{'type': 'object', 'required': ['idOrPid'], 'properties': {'idOrPid': {'type': 'string', 'description': 'Internal id or public pid'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_polymarket_market
Get a Polymarket market by conditionId with optional outcome price history from the public CLOB API.
输入模式
{'type': 'object', 'required': ['conditionId'], 'properties': {'tokenId': {'type': 'string', 'description': 'Outcome token id for history (defaults to first outcome)'}, 'interval': {'enum': ['1h', '6h', '1d', '1w', 'max'], 'type': 'string', 'description': 'Price history window (default 1w)'}, 'conditionId': {'type': 'string', 'description': 'Market condition id'}}, 'additionalProperties': False}
get_portfolio
Full portfolio summary across all wallets: token balances with USD values, 24h change, and total net worth.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_provisioning_job
Poll a bulk provisioning job (treasury + keys:manage + wallets:read). bearerKey appears once when secretsDelivery is revealed.
输入模式
{'type': 'object', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'description': 'Job id from create_provisioning_job'}}, 'additionalProperties': False}
get_swap_routing_guide
Returns which swap/bridge tool to use for a given from→to chain pair, with notes on protocols supported.
输入模式
{'type': 'object', 'required': ['fromChainId', 'toChainId'], 'properties': {'toChainId': {'type': 'string', 'description': 'Destination chain id'}, 'fromChainId': {'type': 'string', 'description': 'Source chain id'}}, 'additionalProperties': False}
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. Discontinuous pre-migration/launch samples are excluded from TA.
输入模式
{'type': 'object', 'required': ['chainId'], 'properties': {'period': {'enum': ['hour', 'day', 'week', 'month', '3months', '6months', 'year', '5years', 'max'], 'type': 'string', 'description': 'Chart window (default day)'}, 'address': {'type': 'string', 'description': 'Token contract address or Solana mint (fallback)'}, 'chainId': {'type': 'string', 'description': 'FortFi chain id, e.g. base-mainnet, ethereum-mainnet'}, 'fungibleId': {'type': 'string', 'description': 'Zerion fungible id returned by discover_tokens (preferred)'}, 'indicators': {'type': 'array', 'items': {'enum': ['return', 'drawdown', 'ema', 'rsi', 'macd', 'bollinger'], 'type': 'string'}, 'description': 'Optional indicators to return; defaults to all. REST callers may pass a comma-separated value.'}, 'includePoints': {'type': 'boolean', 'description': 'Include the raw chart points array. Default false.'}}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
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.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
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.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.
输入模式
{'type': 'object', 'required': ['chainId', 'vaultAddress'], 'properties': {'apyDays': {'type': 'number', 'description': 'APY history window, 7–365 days; default 30'}, 'chainId': {'type': 'string', 'description': 'FortFi yield-supported chain id'}, 'tvlDays': {'type': 'number', 'description': 'TVL history window, 7–365 days; default 90'}, 'vaultAddress': {'type': 'string', 'description': 'Vault address from list_yield_markets'}}, 'additionalProperties': False}
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).
输入模式
{'type': 'object', 'properties': {'email': {'type': 'string', 'description': 'Human path: invitee email for Security UI co-signer provision'}, 'nickname': {'type': 'string', 'description': 'Optional nickname for this co-signer'}, 'challengeId': {'type': 'string', 'description': 'Governance challengeId from the first call'}, 'cosignerUserId': {'type': 'string', 'description': 'Agent path: FortFi userId of the agent to invite as co-signer'}, 'walletSignature': {'type': 'string', 'description': 'Funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
invite_cosigner
Alias of invite_agent_cosigner. Humans: email → Security UI. Agents: cosignerUserId.
输入模式
{'type': 'object', 'properties': {'email': {'type': 'string'}, 'nickname': {'type': 'string'}, 'challengeId': {'type': 'string'}, 'cosignerUserId': {'type': 'string'}, 'walletSignature': {'type': 'string'}}, 'additionalProperties': False}
list_activity_report
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).
输入模式
{'type': 'object', 'properties': {'category': {'enum': ['all', 'money', 'security', 'account'], 'type': 'string', 'description': 'Filter timeline category (default all)'}, 'walletId': {'type': 'string', 'description': 'Filter to one wallet mapping id'}}, 'additionalProperties': False}
list_audit_log
Recent account activity: transfers, swaps, security events. 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.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max entries to return (default 20, max 100)'}, 'cursor': {'type': 'string', 'description': "Opaque cursor from a previous page's nextCursor. Passing this key (even as '') switches the response to { items, nextCursor }."}, 'walletId': {'type': 'string', 'description': 'Filter to audit entries for one wallet id'}}, 'additionalProperties': False}
list_cosigner_memberships
Active co-signers on this account.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_funding_wallet_agents
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).
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_governance_requests
List open governance requests on this account: pending (awaiting signature) and legacy scheduled rows. Use to monitor for unexpected loosening attempts.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_hyperliquid_markets
List Hyperliquid perpetual markets with live mark/mid/oracle prices, funding, open interest, and 24h volume. Public data; no proposal.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Page size (default 30, max 100)'}, 'offset': {'type': 'number', 'description': 'Pagination offset (default 0)'}, 'search': {'type': 'string', 'description': 'Filter by coin symbol'}}, 'additionalProperties': False}
list_hyperliquid_open_orders
List resting Hyperliquid orders including SL/TP triggers for a wallet.
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string'}}, 'additionalProperties': False}
list_hyperliquid_positions
List open Hyperliquid perp positions and margin summary for a hyperliquid-mainnet wallet (its address is used on the L1 order book).
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string', 'description': 'FortFi wallet id on hyperliquid-mainnet'}}, 'additionalProperties': False}
list_hyperliquid_symbol_master
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.
输入模式
{'type': 'object', 'properties': {'dex': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Filter dex ids (core, xyz, io, para). Comma-separated string or array.'}, 'limit': {'type': 'number', 'description': 'Max rows by 24h volume (default all, max 500)'}, 'scope': {'enum': ['core', 'all'], 'type': 'string', 'description': 'Default core'}, 'assetClass': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'enum': ['crypto', 'equity', 'commodity', 'fx', 'index', 'pre_ipo', 'other'], 'type': 'string'}}], 'description': 'Filter asset classes. Comma-separated string or array.'}, 'includeAllDesks': {'type': 'boolean', 'description': 'When true, same as scope=all'}}, 'additionalProperties': False}
list_incoming_cosigner_invites
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.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_merchant_webhook_deliveries
List webhook delivery log. Use status=failed for dead-letter queue rows. Filter by paymentRequestId to find deliveries for one checkout.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max rows (default 50, max 200)'}, 'status': {'enum': ['pending', 'delivered', 'failed'], 'type': 'string'}, 'endpointId': {'type': 'string'}, 'paymentRequestId': {'type': 'string', 'description': 'Internal payment request UUID'}}, 'additionalProperties': False}
list_merchant_webhooks
List registered webhook endpoints (secrets are never returned).
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_payment_products
List persistent product checkout links for the account.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_payment_purchases
Buyer view: FortFi checkouts your vaults paid (what you bought). Matches settlements by payer wallet address across your fleet.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max rows (default 200, max 500)'}, 'walletMappingId': {'type': 'string', 'description': 'Optional payer vault filter'}}, 'additionalProperties': False}
list_payment_requests
List payment requests for the authenticated account.
输入模式
{'type': 'object', 'properties': {'status': {'enum': ['open', 'processing', 'partially_paid', 'paid', 'expired', 'cancelled'], 'type': 'string'}, 'walletMappingId': {'type': 'string', 'description': 'Optional vault filter'}}, 'additionalProperties': False}
list_payment_sales
Merchant view: paid and partially paid invoices on your collection vaults (what you sold). Includes payer, method, and settlement details.
输入模式
{'type': 'object', 'properties': {'walletMappingId': {'type': 'string', 'description': 'Optional collection vault filter'}}, 'additionalProperties': False}
list_pending_cosigner_approvals
Pending actions that require this account's co-signer approval. Use when this agent is a co-signer on another account.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max entries (default 10)'}}, 'additionalProperties': False}
list_polymarket_markets
List active Polymarket prediction markets on Polygon with volume, liquidity, and outcome prices.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max markets (default 25)'}, 'search': {'type': 'string', 'description': 'Optional question/slug filter'}, 'sortBy': {'type': 'string', 'description': 'volume_24hr (default), volume, liquidity, or end_date'}, 'afterCursor': {'type': 'string', 'description': 'Pagination cursor from a prior list response'}, 'sortDirection': {'enum': ['asc', 'desc'], 'type': 'string'}, 'minLiquidityUsd': {'type': 'number', 'description': 'Minimum liquidity USD (default 10000)'}}, 'additionalProperties': False}
list_polymarket_positions
List Polymarket outcome token positions for a Polygon wallet. walletId is required.
输入模式
{'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string', 'description': 'FortFi Polygon wallet id'}}, 'additionalProperties': False}
list_recipients
List all allowlisted recipients. Includes cooldown status: `cooldownActive: true` means the recipient cannot yet receive funds (24-hour gate).
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_token_spender_grants
List active ERC-20 token approvals (spender grants) on this account. Useful before proposing a swap to confirm the CoW vault is approved.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
list_wallets
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.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Page size when paginating (default 50, max 200)'}, 'cursor': {'type': 'string', 'description': "Opaque cursor from a previous page's nextCursor. Passing this (even empty) switches the response to { items, nextCursor }."}, 'metadataKey': {'type': 'string', 'description': 'Filter wallets that include this metadata key (optional)'}, 'metadataValue': {'type': 'string', 'description': 'When set with metadataKey, require an exact value match'}}, 'additionalProperties': False}
list_yield_markets
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.
输入模式
{'type': 'object', 'properties': {'asset': {'type': 'string', 'description': 'Asset symbol filter, default USDC'}, 'limit': {'type': 'number', 'description': 'Max vaults (default 15, max 25)'}, 'sortBy': {'type': 'string', 'description': 'net_apy (default) or tvl'}, 'chainId': {'type': 'string', 'description': 'FortFi chain id or omit for all yield chains'}, 'minTvlUsd': {'type': 'number', 'description': 'Minimum vault TVL in USD (default 500000)'}, 'verifiedOnly': {'type': 'boolean', 'description': 'If true, only FortFi curated vaults; default false = open discovery'}}, 'additionalProperties': False}
list_yield_positions
Active Morpho yield positions with per-vault valueUsd, earnedUsd (Morpho pnlUsd), netApy, and a summary block. summary.cumulativeEarnedUsd is the lifetime yield estimate from FortFi ledger cash flow: current value + total withdrawn − total deposited. Use at the start of every yield desk run to report standing P&L.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
pay_payment_request_x402
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.
输入模式
{'type': 'object', 'required': ['paymentRequestPid', 'fromWalletId'], 'properties': {'fromWalletId': {'type': 'string', 'description': 'Payer vault id (must match invoice chain)'}, 'paymentRequestPid': {'type': 'string', 'description': 'Public invoice pid from checkout URL or create_payment_request'}}, 'additionalProperties': False}
plan_rebalance
Read-only rebalance planner toward target weights. Returns suggested legs (swap, yield_deposit, yield_withdraw) without executing. Use propose_* + confirm_proposal to act.
输入模式
{'type': 'object', 'required': ['targets'], 'properties': {'targets': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'weightPercent', 'kind'], 'properties': {'kind': {'enum': ['cash', 'yield', 'token', 'symbol'], 'type': 'string'}, 'label': {'type': 'string'}, 'symbol': {'type': 'string'}, 'weightPercent': {'type': 'number'}}}, 'description': 'Target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Example: 40% cash, 10% yield, 30% UNI, 20% other tokens.'}, 'minLegUsd': {'type': 'number', 'description': 'Minimum leg size in USD (default 1)'}, 'driftThresholdPercent': {'type': 'number', 'description': 'Ignore drift below this % (default 5)'}}, 'additionalProperties': False}
preview_bridge_quote
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.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'toWalletId', 'sellSymbol', 'buySymbol', 'amountUsd'], 'properties': {'amountUsd': {'type': 'string'}, 'buySymbol': {'type': 'string'}, 'sellSymbol': {'type': 'string'}, 'toWalletId': {'type': 'string'}, 'fromWalletId': {'type': 'string'}}, 'additionalProperties': False}
preview_swap_quote
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.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'sellSymbol', 'buySymbol', 'amountUsd'], 'properties': {'buyMint': {'type': 'string', 'description': 'Solana buy mint — omit for EVM'}, 'sellMint': {'type': 'string', 'description': 'Solana sell mint — omit for EVM'}, 'amountUsd': {'type': 'string', 'description': 'Approximate sell amount in USD'}, 'buySymbol': {'type': 'string'}, 'sellSymbol': {'type': 'string'}, 'toWalletId': {'type': 'string', 'description': 'Optional Solana receive wallet'}, 'fromWalletId': {'type': 'string', 'description': 'Source wallet id'}, 'buyTokenAddress': {'type': 'string', 'description': 'EVM buy token (0x…) — omit for Solana'}, 'slippagePercent': {'type': 'number', 'description': 'Optional Jupiter slippage 0–50'}, 'sellTokenAddress': {'type': 'string', 'description': 'EVM sell token (0x…) — omit for Solana'}}, 'additionalProperties': False}
propose_bridge
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.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'toWalletId', 'sellSymbol', 'buySymbol', 'amountUsd'], 'properties': {'amountUsd': {'type': 'string', 'description': 'Bridge amount in USD'}, 'buySymbol': {'type': 'string', 'description': 'Buy token symbol'}, 'sellSymbol': {'type': 'string', 'description': 'Sell token symbol'}, 'toWalletId': {'type': 'string', 'description': 'Destination wallet id (different chain)'}, 'fromWalletId': {'type': 'string', 'description': 'Source wallet id'}, 'previewQuoteId': {'type': 'string', 'description': 'Optional — from preview_bridge_quote for explicit quote review before propose'}, 'buyTokenAddress': {'type': 'string', 'description': "Optional expected destination token contract; proposal fails if it differs from FortFi's verified chain resolution"}, 'sellTokenAddress': {'type': 'string', 'description': "Optional expected source token contract; proposal fails if it differs from FortFi's verified chain resolution"}}, 'additionalProperties': False}
propose_create_account
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.
输入模式
{'type': 'object', 'required': ['chainId', 'walletName'], 'properties': {'chainId': {'type': 'string', 'description': 'FortFi chain id, e.g. base-mainnet, robinhood-mainnet, solana-mainnet'}, 'metadata': {'type': 'object', 'description': 'Optional flat string tags (max 20 keys), e.g. { "customer_id": "cust_123" }', 'additionalProperties': {'type': 'string'}}, 'walletName': {'type': 'string', 'description': 'Display name for the new wallet (2–64 chars)'}}, 'additionalProperties': False}
propose_hyperliquid_deposit
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).
输入模式
{'type': 'object', 'required': ['walletId', 'amountUsd'], 'properties': {'perpDex': {'type': 'string', 'description': 'core | xyz | io | para (default core)'}, 'walletId': {'type': 'string'}, 'amountUsd': {'type': 'string'}}, 'additionalProperties': False}
propose_hyperliquid_perp_close
Propose closing a Hyperliquid perp position (reduce-only). Omit size to close the whole position. Returns a proposalId for confirm_proposal.
输入模式
{'type': 'object', 'required': ['walletId', 'symbol'], 'properties': {'size': {'type': 'string', 'description': 'Optional; omit to close all'}, 'symbol': {'type': 'string'}, 'walletId': {'type': 'string'}}, 'additionalProperties': False}
propose_hyperliquid_perp_modify
Propose modifying a Hyperliquid perp position's protective stop-loss / take-profit (reduce-only). Returns a proposalId for confirm_proposal.
输入模式
{'type': 'object', 'required': ['walletId', 'symbol'], 'properties': {'symbol': {'type': 'string'}, 'stopLoss': {'type': 'string'}, 'walletId': {'type': 'string'}, 'takeProfit': {'type': 'string'}}, 'additionalProperties': False}
propose_hyperliquid_perp_open
Propose opening a Hyperliquid perp position. Runs FortFi perp policy (max leverage, max notional) and rejects non-hyperliquid-mainnet wallets. Returns a proposalId for confirm_proposal.
输入模式
{'type': 'object', 'required': ['walletId', 'symbol', 'side'], 'properties': {'side': {'enum': ['long', 'short'], 'type': 'string'}, 'size': {'type': 'string', 'description': 'Coin-unit size (string). Use sizeUsd instead for USD notional.'}, 'symbol': {'type': 'string', 'description': 'e.g. BTC, ETH, xyz:TSLA, xyz:GOLD'}, 'sizeUsd': {'type': 'string', 'description': 'USD notional target (min $10 on HL). Preferred for agents.'}, 'leverage': {'type': 'number'}, 'stopLoss': {'type': 'string'}, 'walletId': {'type': 'string'}, 'takeProfit': {'type': 'string'}}, 'additionalProperties': False}
propose_hyperliquid_send_asset
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.
输入模式
{'type': 'object', 'required': ['walletId', 'amountUsd', 'sourceDex', 'destinationDex'], 'properties': {'walletId': {'type': 'string'}, 'amountUsd': {'type': 'string'}, 'sourceDex': {'type': 'string', 'description': 'core | spot | or any HIP-3 builder dex (xyz, io, para, mkts, …)'}, 'destinationDex': {'type': 'string', 'description': 'core | or any HIP-3 builder dex (not spot)'}}, 'additionalProperties': False}
propose_hyperliquid_spot_to_perp
Propose moving USDC from HL Spot into core perps margin (required after MoonPay HyperCore on-ramp). Returns proposalId; human confirms via Perps Top up or confirm_proposal.
输入模式
{'type': 'object', 'required': ['walletId', 'amountUsd'], 'properties': {'walletId': {'type': 'string'}, 'amountUsd': {'type': 'string'}}, 'additionalProperties': False}
propose_hyperliquid_withdraw
Propose withdrawing Hyperliquid L1 USDC margin back to HyperEVM (cash out). Returns proposalId; human confirms via Perps Cash out or confirm_proposal.
输入模式
{'type': 'object', 'required': ['walletId', 'amountUsd'], 'properties': {'walletId': {'type': 'string'}, 'amountUsd': {'type': 'string'}}, 'additionalProperties': False}
propose_payout_manifest
Execute a validated payout manifest sequentially (one ActionIntent per line). Requires Delegated Access or agent wallet. Set dryRun:true to validate only.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['recipientId', 'amountUsdc'], 'properties': {'memo': {'type': 'string'}, 'amountUsdc': {'type': 'string'}, 'recipientId': {'type': 'string'}}}}, 'dryRun': {'type': 'boolean', 'description': 'If true, validate only — no sends'}, 'fromWalletId': {'type': 'string'}}, 'additionalProperties': False}
propose_polymarket_buy
Propose buying Polymarket outcome shares, then call confirm_proposal. Requires Polygon wallet.
输入模式
{'type': 'object', 'required': ['conditionId', 'outcomeIndex', 'price', 'sizeDisplay'], 'properties': {'price': {'type': 'string', 'description': 'Limit price 0-1 (e.g. 0.52)'}, 'conditionId': {'type': 'string', 'description': 'Market condition id from list_polymarket_markets'}, 'sizeDisplay': {'type': 'string', 'description': 'Share count (e.g. 10)'}, 'fromWalletId': {'type': 'string'}, 'outcomeIndex': {'type': 'number', 'description': '0-based outcome index'}, 'fromAccountQuery': {'type': 'string'}}, 'additionalProperties': False}
propose_polymarket_redeem
Propose redeeming winning shares from a resolved Polymarket market (CTF on Polygon), then call confirm_proposal.
输入模式
{'type': 'object', 'required': ['conditionId'], 'properties': {'conditionId': {'type': 'string'}, 'fromWalletId': {'type': 'string'}, 'outcomeIndex': {'type': 'number'}, 'fromAccountQuery': {'type': 'string'}}, 'additionalProperties': False}
propose_polymarket_sell
Propose selling Polymarket outcome shares (redeem collateral), then call confirm_proposal.
输入模式
{'type': 'object', 'required': ['conditionId', 'outcomeIndex', 'price', 'sizeDisplay'], 'properties': {'price': {'type': 'string'}, 'conditionId': {'type': 'string'}, 'sizeDisplay': {'type': 'string'}, 'fromWalletId': {'type': 'string'}, 'outcomeIndex': {'type': 'number'}, 'fromAccountQuery': {'type': 'string'}}, 'additionalProperties': False}
propose_recipient_manifest
Apply a validated recipient manifest (human/developer key). Adds new allowlist rows with normal 24h cooldown. Agent keys: use add_recipient per row (GOVERN).
输入模式
{'type': 'object', 'required': ['recipients'], 'properties': {'recipients': {'type': 'array', 'items': {'type': 'object', 'required': ['address', 'chainId'], 'properties': {'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'nickname': {'type': 'string'}}}}}, 'additionalProperties': False}
propose_rename_account
Rename a wallet (account nickname), then call confirm_proposal with the returned proposalId.
输入模式
{'type': 'object', 'required': ['accountId', 'nickname'], 'properties': {'nickname': {'type': 'string', 'description': 'New nickname (2–64 characters)'}, 'accountId': {'type': 'string', 'description': 'Wallet id from list_wallets'}}, 'additionalProperties': False}
propose_solana_swap
Propose a Solana Jupiter swap. Autonomous agents: inline quote by default, or previewQuoteId for two-step review. confirm signs the bound quote.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'toWalletId', 'sellMint', 'buyMint', 'sellSymbol', 'buySymbol', 'amountUsd'], 'properties': {'buyMint': {'type': 'string', 'description': 'Mint address of token to buy'}, 'sellMint': {'type': 'string', 'description': 'Mint address of token to sell'}, 'amountUsd': {'type': 'string', 'description': 'Sell amount in USD'}, 'buySymbol': {'type': 'string', 'description': 'Human-readable buy symbol'}, 'sellSymbol': {'type': 'string', 'description': 'Human-readable sell symbol'}, 'toWalletId': {'type': 'string', 'description': 'Solana wallet id to receive (can be same as fromWalletId)'}, 'fromWalletId': {'type': 'string', 'description': 'Solana wallet id to sell from'}, 'previewQuoteId': {'type': 'string', 'description': 'Optional — from preview_swap_quote for explicit quote review before propose'}, 'slippagePercent': {'type': 'number', 'description': 'Optional slippage tolerance 0–50 (default 0.5)'}}, 'additionalProperties': False}
propose_swap
Propose an EVM CoW swap. Autonomous agents: fetches and binds a quote inline (default), or pass previewQuoteId from preview_swap_quote for a two-step review. confirm always signs the bound quote — same principle as FortFi Assist. Human session MCP: confirm requires passkey in the app.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'sellTokenAddress', 'buyTokenAddress', 'sellSymbol', 'buySymbol', 'amountUsd'], 'properties': {'amountUsd': {'type': 'string', 'description': 'Sell amount in USD'}, 'buySymbol': {'type': 'string', 'description': 'Human-readable symbol of buy token, e.g. ETH'}, 'sellSymbol': {'type': 'string', 'description': 'Human-readable symbol of sell token, e.g. USDC'}, 'fromWalletId': {'type': 'string', 'description': 'Source wallet id (must be EVM, CoW-supported chain)'}, 'previewQuoteId': {'type': 'string', 'description': 'Optional — from preview_swap_quote for explicit quote review before propose'}, 'buyTokenAddress': {'type': 'string', 'description': 'Token contract address to buy (0x…)'}, 'slippagePercent': {'type': 'number', 'description': 'Optional slippage tolerance 0–50 (default 0.5)'}, 'sellTokenAddress': {'type': 'string', 'description': 'Token contract address to sell (0x…)'}}, 'additionalProperties': False}
propose_token_approve
Propose max ERC-20 approval for CoW or Fusion spenders. Returns proposalId — call confirm_proposal before swap/bridge.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'tokenAddress', 'flow'], 'properties': {'flow': {'enum': ['cow_swap', 'fusion_bridge'], 'type': 'string'}, 'fromWalletId': {'type': 'string', 'description': 'EVM wallet id'}, 'tokenAddress': {'type': 'string', 'description': 'Token to approve (0x…)'}}, 'additionalProperties': False}
propose_transfer
Transfer USDC to an allowlisted recipient, OR pay a FortFi invoice by public pid (paymentRequestPid + fromWalletId — amount optional for partial pay). Recipient path requires allowlist approval. Invoice path binds settlement to the pid (Delegated Access / agent accounts execute server-side when configured).
输入模式
{'type': 'object', 'required': ['fromWalletId'], 'properties': {'memo': {'type': 'string', 'description': 'Optional transfer note (max 256 chars)'}, 'amountUsdc': {'type': 'string', 'description': "Amount in USDC as a decimal string, e.g. '5.00'. Required for recipient sends; optional for invoice pay (defaults to remaining balance)."}, 'recipientId': {'type': 'string', 'description': 'Allowlisted recipient id (omit when using paymentRequestPid)'}, 'fromWalletId': {'type': 'string', 'description': 'Source wallet id from list_wallets'}, 'paymentRequestPid': {'type': 'string', 'description': 'Public invoice pid from checkout URL — pays merchant vault with pid-bound settlement'}}, 'additionalProperties': False}
propose_yield_deposit
Propose Morpho vault deposit, then call confirm_proposal. With Delegated Access / agent key this executes server-side when policy permits. Use list_yield_markets for vaultAddress.
输入模式
{'type': 'object', 'required': ['vaultAddress', 'amountUsd'], 'properties': {'amountUsd': {'type': 'string', 'description': 'USDC amount e.g. 100.00'}, 'assetSymbol': {'enum': ['USDC', 'USDT'], 'type': 'string'}, 'fromWalletId': {'type': 'string', 'description': 'FortFi wallet id'}, 'vaultAddress': {'type': 'string', 'description': 'Morpho vault contract (0x…)'}, 'fromAccountQuery': {'type': 'string', 'description': 'Wallet nickname (alternative to fromWalletId)'}}, 'additionalProperties': False}
propose_yield_withdraw
Propose Morpho vault withdraw, then call confirm_proposal. With Delegated Access this executes server-side when policy permits. Use list_yield_positions for vaultAddress.
输入模式
{'type': 'object', 'required': ['vaultAddress', 'amountDisplay'], 'properties': {'vaultName': {'type': 'string'}, 'assetSymbol': {'enum': ['USDC', 'USDT'], 'type': 'string'}, 'fromWalletId': {'type': 'string'}, 'vaultAddress': {'type': 'string'}, 'amountDisplay': {'type': 'string'}, 'fromAccountQuery': {'type': 'string'}}, 'additionalProperties': False}
rank_hyperliquid_markets
Rank Hyperliquid perp markets by 24h volume, pctChange, or funding. Returns dex + assetClass tags. Default scope=core; pass scope=all for HIP-3. Cheap filter only — use screen_hyperliquid_markets for breakout TA.
输入模式
{'type': 'object', 'properties': {'dex': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Filter dex ids. Comma-separated string or array.'}, 'sort': {'enum': ['volume', 'pctChange', 'funding'], 'type': 'string', 'description': 'Default volume'}, 'limit': {'type': 'number', 'description': 'Default 20'}, 'scope': {'enum': ['core', 'all'], 'type': 'string', 'description': 'Default core'}, 'direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Default desc'}, 'assetClass': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'enum': ['crypto', 'equity', 'commodity', 'fx', 'index', 'pre_ipo', 'other'], 'type': 'string'}}], 'description': 'Filter asset classes. Comma-separated string or array.'}, 'includeAllDesks': {'type': 'boolean', 'description': 'When true, same as scope=all'}}, 'additionalProperties': False}
rank_polymarket_markets
Rank Polymarket markets by volume, liquidity, or 24h volume.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number'}, 'sortBy': {'type': 'string'}}, 'additionalProperties': False}
rank_tokens
Two-stage token ranking: run the cheap screen, then concurrently fetch deterministic chart evidence only for the strongest candidates. Quick charts 5 candidates over month+3months; standard charts 10 over day+month+3months+year; deep charts 20 and requires explicit opt-in. Returns evidence for user review and never creates a proposal.
输入模式
{'type': 'object', 'required': ['chains'], 'properties': {'mode': {'enum': ['quick', 'standard', 'deep'], 'type': 'string'}, 'sorts': {'type': 'array', 'items': {'enum': ['gainers_1d', 'gainers_30d', 'gainers_90d', 'gainers_365d', 'volume_1d', 'market_cap'], 'type': 'string'}, 'description': 'Defaults to gainers_30d + volume_1d. Optional supplements: gainers_1d, gainers_90d, gainers_365d, market_cap.'}, 'chains': {'type': 'array', 'items': {'type': 'string'}}, 'periods': {'type': 'array', 'items': {'enum': ['hour', 'day', 'week', 'month', '3months', '6months', 'year', '5years', 'max'], 'type': 'string'}}, 'deepOptIn': {'type': 'boolean', 'description': 'Required when mode=deep'}, 'verifiedOnly': {'type': 'boolean', 'description': 'Default true'}, 'candidateLimit': {'type': 'number', 'description': 'Override merged candidate cap, max 100'}, 'minVolume1dUsd': {'type': 'number', 'description': 'Default 50000'}, 'minMarketCapUsd': {'type': 'number', 'description': 'Default 5000000'}, 'includeUnverified': {'type': 'boolean', 'description': 'Default false'}, 'chartCandidateLimit': {'type': 'number', 'description': 'Override chart cap, max 20'}}, 'additionalProperties': False}
rank_yield_markets
Batch-rank Morpho markets using current net APY, APY median/average/range/volatility, TVL trend/drawdown, vault age, curation, instant-withdrawal liquidity, warnings, and current-user execution eligibility. Results are ordered by current net APY, which is a spot rate that spikes: re-rank on evidence.apy.medianPercent before acting, since a vault printing 12% today commonly pays under 5% tomorrow. Runs evidence requests concurrently and never creates a proposal.
输入模式
{'type': 'object', 'properties': {'asset': {'type': 'string', 'description': 'Asset symbol, default USDC'}, 'limit': {'type': 'number', 'description': 'Default 10, max 25'}, 'apyDays': {'type': 'number', 'description': 'Default 30'}, 'chainId': {'type': 'string', 'description': 'FortFi chain id or all'}, 'tvlDays': {'type': 'number', 'description': 'Default 90'}, 'minTvlUsd': {'type': 'number', 'description': 'Default 500000'}}, 'additionalProperties': False}
register_backup_governance_wallet
Register (or replace) a single backup governance wallet — the agentic equivalent of a backup passkey. Either the funding wallet or this backup can authorize future governance. GOVERN action: sign the challenge with your CURRENT funding wallet (challengeId + walletSignature); applies immediately once signed. Max one backup.
输入模式
{'type': 'object', 'required': ['walletAddress'], 'properties': {'challengeId': {'type': 'string', 'description': 'Governance challengeId from the first call'}, 'walletAddress': {'type': 'string', 'description': 'The backup wallet address (0x…) to register'}, 'walletSignature': {'type': 'string', 'description': 'CURRENT funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
reject_cosigner_action
Reject a pending action as co-signer.
输入模式
{'type': 'object', 'required': ['pendingApprovalId'], 'properties': {'reason': {'type': 'string', 'description': 'Optional rejection reason'}, 'pendingApprovalId': {'type': 'string'}}, 'additionalProperties': False}
remove_backup_governance_wallet
Remove the registered backup governance wallet. GOVERN action: sign with your funding wallet (challengeId + walletSignature); applies immediately once signed. After removal, only the funding wallet may authorize governance.
输入模式
{'type': 'object', 'properties': {'challengeId': {'type': 'string', 'description': 'Governance challengeId from the first call'}, 'walletSignature': {'type': 'string', 'description': 'Funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
remove_cosigner
Remove an active co-signer from this account. GOVERN action (it shrinks the approver set): via an agent key, sign a challenge with your funding wallet (challengeId + walletSignature); applies immediately once signed.
输入模式
{'type': 'object', 'required': ['membershipId'], 'properties': {'challengeId': {'type': 'string', 'description': 'Governance challengeId from the first call'}, 'membershipId': {'type': 'string', 'description': 'Membership id from list_cosigner_memberships'}, 'walletSignature': {'type': 'string', 'description': 'Funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
remove_recipient
Remove a recipient from the FortFi allowlist (tightening policy — no funding-wallet GOVERN). Human developer key, session, or agent treasury key. Re-sync Turnkey policies in the app so the enclave matches.
输入模式
{'type': 'object', 'required': ['recipientId'], 'properties': {'recipientId': {'type': 'string', 'description': 'Recipient id from list_recipients'}}, 'additionalProperties': False}
replay_merchant_webhook_delivery
Replay a dead-lettered or failed webhook delivery after fixing your endpoint. Re-sends the same event id and body for idempotent handlers.
输入模式
{'type': 'object', 'required': ['deliveryId'], 'properties': {'deliveryId': {'type': 'string', 'description': 'Delivery row id from list_merchant_webhook_deliveries'}}, 'additionalProperties': False}
resend_claim_link
Resend the dashboard claim email to contactEmail (MCP agent API key only; keys:manage scope). Use when the original link expired (72h) or was lost. Rate limit: 3/hour.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
review_portfolio
Read-only treasury review: allocation buckets (cash, yield, tokens), top holdings, and optional drift vs target weights. Safe for cron — no proposals created.
输入模式
{'type': 'object', 'properties': {'targets': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'weightPercent', 'kind'], 'properties': {'kind': {'enum': ['cash', 'yield', 'token', 'symbol'], 'type': 'string'}, 'label': {'type': 'string'}, 'symbol': {'type': 'string', 'description': 'Required when kind=symbol (e.g. UNI)'}, 'weightPercent': {'type': 'number'}}}, 'description': 'Optional target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Weights must sum to 100.'}, 'minLegUsd': {'type': 'number', 'description': 'Minimum USD for rebalance legs (default 1)'}, 'driftThresholdPercent': {'type': 'number', 'description': 'Hysteresis band in percentage points (default 5)'}}, 'additionalProperties': False}
revoke_cosigner_invite
Revoke a pending outbound co-signer invite before it is accepted.
输入模式
{'type': 'object', 'required': ['inviteId'], 'properties': {'inviteId': {'type': 'string', 'description': 'Invite id from the invite you sent'}}, 'additionalProperties': False}
revoke_vault_credential
Revoke a vault-scoped credential (treasury + keys:manage). Idempotent if already revoked.
输入模式
{'type': 'object', 'required': ['credentialId'], 'properties': {'credentialId': {'type': 'string', 'description': 'Vault credential id'}}, 'additionalProperties': False}
run_hyperliquid_research_backtest
Run an out-of-sample backtest on Hyperliquid perp OHLCV stored in FortFi research Postgres (hl_research_candles). Returns IS/OOS metrics and a pass/fail verdict. Read-only; uses synced historical data, not live HL API for bars. Strategies: momentum_cross (default).
输入模式
{'type': 'object', 'properties': {'coins': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional fixed symbol list (e.g. BTC, ETH). Omit for volume-filtered universe'}, 'holdBars': {'type': 'number', 'description': 'Hold period in bars. Default 24'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'description': 'Candle interval in research DB. Default 1h'}, 'strategy': {'enum': ['momentum_cross', 'trailing_return_rank'], 'type': 'string', 'description': 'Default momentum_cross'}, 'legsPerSide': {'type': 'number', 'description': 'Long/short leg count. Default 6'}, 'oosFraction': {'type': 'number', 'description': 'Out-of-sample tail fraction. Default 0.35'}, 'lookbackBars': {'type': 'number', 'description': 'Trailing return lookback. Default 336 on 1h (~14d)'}, 'minDayVolumeUsd': {'type': 'number', 'description': 'Universe liquidity floor when coins omitted. Default 1000000'}}, 'additionalProperties': False}
run_hyperliquid_research_backtest_spec
Run an out-of-sample backtest from a Strategy Spec JSON (universe + rank factor or named pattern + portfolio rules). Deterministic; reads hl_research_* Postgres. Agent should translate natural-language strategy ideas into the spec object before calling.
输入模式
{'type': 'object', 'properties': {'prod': {'type': 'boolean', 'description': 'Use production Supabase (default false in dev)'}, 'spec': {'type': 'object', 'description': 'Strategy Spec: name, universe {dex, minDayVolumeUsd, includeCoins, excludeCoins, maxSymbols}, interval, signal {type rank|pattern, factor|pattern, params}, portfolio, costs, validation'}}, 'additionalProperties': True}
screen_hyperliquid_markets
Breakout screener for Hyperliquid perps: min volume filter, rank, HL candle TA (RSI, MACD, Bollinger). Returns dex + assetClass tags and long/short/neutral bias. Default scope=core; scope=all for HIP-3. Never creates proposals.
输入模式
{'type': 'object', 'properties': {'dex': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Filter dex ids. Comma-separated string or array.'}, 'sort': {'enum': ['volume', 'pctChange', 'funding'], 'type': 'string', 'description': 'Default pctChange'}, 'limit': {'type': 'number', 'description': 'Default 40'}, 'scope': {'enum': ['core', 'all'], 'type': 'string', 'description': 'Default core'}, 'interval': {'enum': ['1m', '5m', '15m', '1h', '4h', '1d'], 'type': 'string', 'description': 'Default 1h'}, 'sideBias': {'enum': ['long', 'short', 'both'], 'type': 'string'}, 'direction': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'desc=gainers, asc=losers/short ideas'}, 'assetClass': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'enum': ['crypto', 'equity', 'commodity', 'fx', 'index', 'pre_ipo', 'other'], 'type': 'string'}}], 'description': 'Filter asset classes. Comma-separated string or array.'}, 'chartLimit': {'type': 'number', 'description': 'TA depth, default 10'}, 'indicators': {'type': 'array', 'items': {'enum': ['return', 'drawdown', 'ema', 'rsi', 'macd', 'bollinger'], 'type': 'string'}}, 'includeCharts': {'type': 'boolean'}, 'includeAllDesks': {'type': 'boolean', 'description': 'When true, same as scope=all'}, 'minDayVolumeUsd': {'type': 'number', 'description': 'Default 1000000'}}, 'additionalProperties': False}
screen_tokens
Batch cheap-screen tokens across requested chains. Defaults to verified assets, $5M market cap, $50K daily volume, top 30-day performers plus volume leaders, stablecoin removal, and cross-chain deduplication. Returns no proposal.
输入模式
{'type': 'object', 'required': ['chains'], 'properties': {'mode': {'enum': ['quick', 'standard', 'deep'], 'type': 'string'}, 'sorts': {'type': 'array', 'items': {'enum': ['gainers_1d', 'gainers_30d', 'gainers_90d', 'gainers_365d', 'volume_1d', 'market_cap'], 'type': 'string'}, 'description': 'Defaults to gainers_30d + volume_1d. Add gainers_1d, gainers_90d, gainers_365d, or market_cap when requested.'}, 'chains': {'type': 'array', 'items': {'type': 'string'}}, 'deepOptIn': {'type': 'boolean', 'description': 'Required when mode=deep'}, 'verifiedOnly': {'type': 'boolean', 'description': 'Default true'}, 'candidateLimit': {'type': 'number', 'description': 'Override merged candidate cap, max 100'}, 'minVolume1dUsd': {'type': 'number', 'description': 'Default 50000'}, 'minMarketCapUsd': {'type': 'number', 'description': 'Default 5000000'}, 'includeUnverified': {'type': 'boolean', 'description': 'Default false; unverified results are labeled and need execution opt-in'}}, 'additionalProperties': False}
search_credentials
Parent-treasury key-centric credential search (treasury credential + keys:manage + wallets:read). Complements search_vaults. Never returns raw bearer keys.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Page size (default 50, max 100)'}, 'query': {'type': 'string', 'description': 'Free-text search'}, 'access': {'enum': ['read_only', 'read_write'], 'type': 'string'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor'}, 'status': {'enum': ['active', 'revoked'], 'type': 'string'}, 'walletId': {'type': 'string', 'description': 'Filter by vault wallet id'}, 'metadataKey': {'type': 'string', 'description': 'Exact metadata key (requires metadataValue)'}, 'metadataValue': {'type': 'string', 'description': 'Exact metadata value (requires metadataKey)'}, 'credentialKind': {'enum': ['treasury', 'vault'], 'type': 'string'}, 'externalCustomerId': {'type': 'string', 'description': 'Exact external customer id'}}, 'additionalProperties': False}
search_polymarket_markets
Search Polymarket markets by question text.
输入模式
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string', 'description': 'Search text'}}, 'additionalProperties': False}
search_vaults
Parent-treasury vault inventory search (treasury credential + keys:manage + wallets:read). Matches nicknames, wallet IDs, addresses, external customer IDs, credential names, and prefixes. Never returns raw bearer keys.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Page size (default 50, max 100)'}, 'query': {'type': 'string', 'description': 'Free-text search'}, 'cursor': {'type': 'string', 'description': 'Pagination cursor from prior response'}, 'chainId': {'type': 'string', 'description': 'Exact chain filter'}, 'metadataKey': {'type': 'string', 'description': 'Exact metadata key (requires metadataValue)'}, 'metadataValue': {'type': 'string', 'description': 'Exact metadata value (requires metadataKey)'}, 'credentialAccess': {'enum': ['read_only', 'read_write'], 'type': 'string', 'description': 'Filter by linked credential access mode'}, 'credentialStatus': {'enum': ['active', 'revoked'], 'type': 'string', 'description': 'Filter by linked credential status'}, 'externalCustomerId': {'type': 'string', 'description': 'Exact external customer id'}}, 'additionalProperties': False}
send_merchant_webhook_test
Send a signed webhook.test event to an endpoint.
输入模式
{'type': 'object', 'required': ['endpointId'], 'properties': {'endpointId': {'type': 'string'}}, 'additionalProperties': False}
update_cosigner_rules
Set cosigner quorum rules (send + swap USD bands). Tightening rules works with the agent key alone. WEAKENING them (lower required cosigners / raise the amount floor) is a GOVERN action: sign a challenge with your funding wallet (challengeId + walletSignature); applies immediately once signed (same as passkey in the UI). Amounts use USDC micro-units (1 USDC = 1000000).
输入模式
{'type': 'object', 'required': ['rules'], 'properties': {'rules': {'type': 'array', 'items': {'type': 'object'}}, 'challengeId': {'type': 'string', 'description': 'Governance challengeId (only needed when weakening rules)'}, 'walletSignature': {'type': 'string', 'description': 'Funding-wallet signature over the challenge message'}}, 'additionalProperties': False}
update_vault_credential
Atomically replace a vault credential's name, access mode, grants, and expiry (treasury + keys:manage). Revoked credentials cannot be updated.
输入模式
{'type': 'object', 'required': ['credentialId', 'name', 'access', 'vaultGrants'], 'properties': {'name': {'type': 'string'}, 'access': {'enum': ['read_only', 'read_write'], 'type': 'string'}, 'expiresAt': {'type': 'string', 'description': 'ISO-8601 expiry, or null to clear'}, 'vaultGrants': {'type': 'array', 'items': {'type': 'object', 'required': ['walletId'], 'properties': {'walletId': {'type': 'string'}, 'dailyCapUsdMicros': {'type': 'string'}, 'perTxCapUsdMicros': {'type': 'string'}, 'monthlyCapUsdMicros': {'type': 'string'}, 'maxTransactionsPerDay': {'type': 'number'}}}}, 'credentialId': {'type': 'string', 'description': 'Vault credential id'}}, 'additionalProperties': False}
update_wallet_metadata
Propose updating wallet metadata tags (flat string key/value pairs; replaces existing tags on confirm). Returns proposalId; call confirm_proposal to apply. Not a money-moving action.
输入模式
{'type': 'object', 'required': ['accountId', 'metadata'], 'properties': {'metadata': {'type': 'object', 'description': 'Full metadata object, e.g. { "customer_id": "cust_123", "agent_id": "ag_1" }', 'additionalProperties': {'type': 'string'}}, 'accountId': {'type': 'string', 'description': 'Wallet id from list_wallets'}}, 'additionalProperties': False}
validate_payout_manifest
Preview batch payroll/payout (max 50 lines). Each line: { recipientId, amountUsdc, memo? }. All recipients must be allowlisted, same chain as fromWalletId, and past cooldown.
输入模式
{'type': 'object', 'required': ['fromWalletId', 'lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['recipientId', 'amountUsdc'], 'properties': {'memo': {'type': 'string'}, 'amountUsdc': {'type': 'string', 'description': 'Decimal USD amount e.g. 125.50'}, 'recipientId': {'type': 'string'}}}}, 'fromWalletId': {'type': 'string', 'description': 'Wallet id from list_wallets'}}, 'additionalProperties': False}
validate_recipient_manifest
Preview a batch recipient import (max 50 rows). Each row: { address, chainId, nickname? }. Returns ready_new, already_exists, or invalid per line. Read-only.
输入模式
{'type': 'object', 'required': ['recipients'], 'properties': {'recipients': {'type': 'array', 'items': {'type': 'object', 'required': ['address', 'chainId'], 'properties': {'address': {'type': 'string'}, 'chainId': {'type': 'string'}, 'nickname': {'type': 'string'}}}}}, 'additionalProperties': False}
已添加
create_customer
2026年9月17日 12:49
已添加
get_provisioning_job
2026年9月17日 12:49
已添加
create_provisioning_job
2026年9月17日 12:49
已添加
revoke_vault_credential
2026年9月17日 12:49
已添加
update_vault_credential
2026年9月17日 12:49
已添加
create_vault_credential
2026年9月17日 12:49
已添加
search_credentials
2026年9月17日 12:49
已添加
search_vaults
2026年9月17日 12:49
已添加
send_merchant_webhook_test
2026年9月17日 12:49
已添加
replay_merchant_webhook_delivery
2026年9月17日 12:49
已添加
list_merchant_webhook_deliveries
2026年9月17日 12:49
已添加
list_merchant_webhooks
2026年9月17日 12:49
已添加
create_merchant_webhook
2026年9月17日 12:49
已添加
get_payment_product
2026年9月17日 12:49
已添加
list_payment_products
2026年9月17日 12:49
已添加
create_payment_product
2026年9月17日 12:49
已添加
list_payment_purchases
2026年9月17日 12:49
已添加
list_payment_sales
2026年9月17日 12:49
已添加
pay_payment_request_x402
2026年9月17日 12:49
已添加
extend_payment_request
2026年9月17日 12:49
已添加
cancel_payment_request
2026年9月17日 12:49
已添加
list_payment_requests
2026年9月17日 12:49
已添加
get_payment_request
2026年9月17日 12:49
已添加
create_payment_request
2026年9月17日 12:49
已添加
create_checkout_session
2026年9月17日 12:49
已添加
propose_hyperliquid_send_asset
2026年9月17日 12:49
已添加
propose_hyperliquid_spot_to_perp
2026年9月17日 12:49
已添加
propose_hyperliquid_withdraw
2026年9月17日 12:49
已添加
propose_hyperliquid_deposit
2026年9月17日 12:49
已添加
propose_hyperliquid_perp_modify
2026年9月17日 12:49