Server definition
- Hash
- sha256:0f7a688951608c045cbb569efc8e3d479bee36b7ab14d9b490ef36646bdf693d
- What it is
- What a remote MCP server returned when asked what it offers: 117 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Accept a pending co-signer invite. After accepting, you will be able to approve/reject pending actions for that account.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"inviteId": {
"description": "Invite id from list_incoming_cosigner_invites",
"type": "string"
}
},
"required": [
"inviteId"
],
"type": "object"
},
"name": "accept_cosigner_invite",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"address": {
"description": "Wallet address (0x… or Solana base58)",
"type": "string"
},
"chainId": {
"description": "FortFi chain id (e.g. hyperliquid-mainnet). Omit when fromWalletId is set — network is inferred from that wallet.",
"type": "string"
},
"challengeId": {
"description": "Agent GOVERN: challengeId from the first call",
"type": "string"
},
"fromWalletId": {
"description": "Optional source wallet id (list_wallets). Sets allowlist network to that wallet's chain — use for HL sends without passing chainId.",
"type": "string"
},
"nickname": {
"description": "Optional display name",
"type": "string"
},
"walletSignature": {
"description": "Agent GOVERN: funding-wallet signature",
"type": "string"
}
},
"required": [
"address",
"chainId"
],
"type": "object"
},
"name": "add_recipient",
"outputSchema": null
},
{
"description": "Approve a pending action as co-signer. Use with list_pending_cosigner_approvals.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pendingApprovalId": {
"type": "string"
}
},
"required": [
"pendingApprovalId"
],
"type": "object"
},
"name": "approve_cosigner_action",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId from the first call",
"type": "string"
},
"recipientId": {
"description": "Recipient id from list_recipients or add_recipient",
"type": "string"
},
"walletSignature": {
"description": "Funding-wallet signature over the challenge message",
"type": "string"
}
},
"required": [
"recipientId"
],
"type": "object"
},
"name": "approve_recipient",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "The governance request id from list_governance_requests",
"type": "string"
}
},
"required": [
"challengeId"
],
"type": "object"
},
"name": "cancel_governance_change",
"outputSchema": null
},
{
"description": "Cancel an open payment request with no verified settlement.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idOrPid": {
"type": "string"
}
},
"required": [
"idOrPid"
],
"type": "object"
},
"name": "cancel_payment_request",
"outputSchema": null
},
{
"description": "Cancel a pending approval that you (the account owner) initiated.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pendingApprovalId": {
"description": "Pending approval id from list_pending_cosigner_approvals or list_audit_log",
"type": "string"
}
},
"required": [
"pendingApprovalId"
],
"type": "object"
},
"name": "cancel_pending_action",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"flow": {
"description": "cow_swap = CoW VaultRelayer; fusion_bridge = 1inch Limit Order",
"enum": [
"cow_swap",
"fusion_bridge"
],
"type": "string"
},
"fromWalletId": {
"description": "Source EVM wallet id",
"type": "string"
},
"requiredAmountSmallest": {
"description": "Required allowance in token smallest units (e.g. USDC 6 decimals)",
"type": "string"
},
"tokenAddress": {
"description": "Sell token contract (0x…)",
"type": "string"
}
},
"required": [
"fromWalletId",
"tokenAddress",
"requiredAmountSmallest",
"flow"
],
"type": "object"
},
"name": "check_trade_allowance",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"confirmToken": {
"description": "Optional proposal-bound confirmation token when one was returned",
"type": "string"
},
"proposalId": {
"description": "Proposal UUID returned by a propose_* tool",
"type": "string"
}
},
"required": [
"proposalId"
],
"type": "object"
},
"name": "confirm_proposal",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountSmallestUnit": {
"description": "Ad-hoc USDC amount in smallest units",
"type": "string"
},
"amountUsd": {
"description": "Ad-hoc price in USD (alternative to productSlug)",
"type": "number"
},
"chainId": {
"description": "Chain for ad-hoc sessions (default base-mainnet)",
"type": "string"
},
"customer": {
"additionalProperties": false,
"description": "Your customer identity — vault is resolved per (namespace, externalId)",
"properties": {
"externalId": {
"description": "Your customer id (e.g. platform-customer-42)",
"type": "string"
},
"namespace": {
"description": "Mapping namespace (default 'default')",
"type": "string"
}
},
"required": [
"externalId"
],
"type": "object"
},
"description": {
"description": "Optional checkout note",
"type": "string"
},
"expiresInMinutes": {
"description": "Session TTL (default 60, product default wins if set)",
"type": "number"
},
"idempotencyKey": {
"description": "Safe retries — same key returns the same session",
"type": "string"
},
"metadata": {
"description": "Optional metadata object",
"type": "object"
},
"productSlug": {
"description": "Price from an existing payment product (SKU)",
"type": "string"
},
"reference": {
"description": "Your order/session id, echoed on every webhook",
"type": "string"
}
},
"required": [
"customer"
],
"type": "object"
},
"name": "create_checkout_session",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"clientRequestId": {
"description": "Caller idempotency id (unique per provisioning attempt)",
"type": "string"
},
"credential": {
"description": "Optional vault-scoped credential to issue for this wallet",
"type": "object"
},
"externalCustomerId": {
"description": "Your platform customer id (stable across retries)",
"type": "string"
},
"namespace": {
"description": "Optional mapping namespace (default: default)",
"type": "string"
},
"wallet": {
"description": "Wallet to create or reuse for this customer",
"properties": {
"chainId": {
"description": "e.g. base, ethereum, solana",
"type": "string"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"nickname": {
"type": "string"
},
"spendingPolicy": {
"type": "object"
}
},
"required": [
"chainId",
"nickname"
],
"type": "object"
}
},
"required": [
"clientRequestId",
"externalCustomerId",
"wallet"
],
"type": "object"
},
"name": "create_customer",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"url": {
"description": "HTTPS callback URL on the merchant's server",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "create_merchant_webhook",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountSmallestUnit": {
"description": "Alternative: amount in token smallest units",
"type": "string"
},
"amountUsd": {
"description": "Price in USD/USDC",
"type": "number"
},
"description": {
"description": "Checkout subtitle shown to buyers",
"type": "string"
},
"imageUrl": {
"description": "HTTPS product image URL for checkout branding",
"type": "string"
},
"merchantSiteUrl": {
"description": "Merchant homepage for checkout branding (optional)",
"type": "string"
},
"name": {
"description": "Product display name",
"type": "string"
},
"slug": {
"description": "Optional URL slug (auto-generated if omitted)",
"type": "string"
},
"successRedirectUrl": {
"description": "HTTPS buyer redirect after pay (optional)",
"type": "string"
},
"walletMappingId": {
"description": "USDC collection vault id",
"type": "string"
}
},
"required": [
"walletMappingId",
"name"
],
"type": "object"
},
"name": "create_payment_product",
"outputSchema": null
},
{
"description": "Create a shareable payment request for a vault. Returns pid, paymentUrl, and qrPayload for humans or agents.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountSmallestUnit": {
"description": "USDC amount in smallest units (alternative to amountUsd)",
"type": "string"
},
"amountUsd": {
"description": "Invoice amount in USD (1 USD = 1 USDC)",
"type": "number"
},
"description": {
"description": "Optional invoice note",
"type": "string"
},
"expiryDays": {
"description": "Days until expiry (default 30)",
"type": "number"
},
"externalReference": {
"description": "Optional external invoice id",
"type": "string"
},
"metadata": {
"description": "Optional metadata object",
"type": "object"
},
"walletMappingId": {
"description": "Target collection vault id",
"type": "string"
}
},
"required": [
"walletMappingId"
],
"type": "object"
},
"name": "create_payment_request",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idempotencyKey": {
"description": "Unique key (8–200 chars) — same key + body replays the job",
"type": "string"
},
"items": {
"description": "Up to 20 provisioning items",
"items": {
"type": "object"
},
"type": "array"
}
},
"required": [
"idempotencyKey",
"items"
],
"type": "object"
},
"name": "create_provisioning_job",
"outputSchema": null
},
{
"description": "Mint a vault-scoped credential for an existing wallet (treasury + keys:manage). Returns bearerKey once when agentPublicKey is omitted. Requires FORTFI_VAULT_CREDENTIALS_ENABLED.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"access": {
"enum": [
"read_only",
"read_write"
],
"type": "string"
},
"agentPublicKey": {
"description": "Optional uncompressed P-256 public key (04… hex) for ECDSA auth",
"type": "string"
},
"expiresAt": {
"description": "ISO-8601 expiry (optional)",
"type": "string"
},
"name": {
"description": "Credential label (2–100 chars)",
"type": "string"
},
"vaultGrants": {
"description": "Explicit wallet grants with optional USD micro caps",
"items": {
"properties": {
"dailyCapUsdMicros": {
"type": "string"
},
"maxTransactionsPerDay": {
"type": "number"
},
"monthlyCapUsdMicros": {
"type": "string"
},
"perTxCapUsdMicros": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"name",
"access",
"vaultGrants"
],
"type": "object"
},
"name": "create_vault_credential",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"chainId": {
"description": "FortFi chain id, e.g. base-mainnet, ethereum-mainnet",
"type": "string"
},
"limit": {
"description": "Max results (default 10, max 25)",
"type": "number"
},
"query": {
"description": "Optional name/symbol filter, e.g. 'USDC' or 'wrapped'",
"type": "string"
},
"sort": {
"description": "gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d (default market_cap)",
"type": "string"
},
"verifiedOnly": {
"description": "Only verified tokens",
"type": "boolean"
}
},
"required": [
"chainId"
],
"type": "object"
},
"name": "discover_tokens",
"outputSchema": null
},
{
"description": "Extend an open payment request expiry (default extension window in days).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"expiryDays": {
"description": "New expiry horizon from now (1-365)",
"type": "number"
},
"idOrPid": {
"type": "string"
}
},
"required": [
"idOrPid",
"expiryDays"
],
"type": "object"
},
"name": "extend_payment_request",
"outputSchema": null
},
{
"description": "Token holdings for a specific wallet, with USD values and 24h change.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletId": {
"description": "Wallet id from list_wallets",
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "get_account_holdings",
"outputSchema": null
},
{
"description": "Amount-banded cosigner quorum rules for sends and swaps. Below-band amounts auto-execute; matching bands require N cosigner votes.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_cosigner_rules",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"orderHash": {
"description": "Fusion+ order hash (0x…)",
"type": "string"
}
},
"required": [
"orderHash"
],
"type": "object"
},
"name": "get_fusion_order_status",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletId": {
"description": "FortFi wallet id on hyperliquid-mainnet",
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "get_hyperliquid_balances",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assetClass": {
"description": "Filter asset classes. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"enum": [
"crypto",
"equity",
"commodity",
"fx",
"index",
"pre_ipo",
"other"
],
"type": "string"
},
"type": "array"
}
]
},
"band": {
"description": "Hysteresis band, default 1.0. A held name stays eligible while inside the top legsPerSide*(1+band); surfaced as hold_long / hold_short.",
"type": "number"
},
"dex": {
"description": "Filter dex ids. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
]
},
"includeAllDesks": {
"description": "When true, same as scope=all",
"type": "boolean"
},
"legsPerSide": {
"description": "Legs per side, default 6",
"type": "number"
},
"limit": {
"description": "Max symbols ranked by volume, default 60",
"type": "number"
},
"lookbackDays": {
"description": "Trailing return windows in days. FIRST entry is the ranking signal. Default [14,7,30].",
"items": {
"type": "number"
},
"type": "array"
},
"minDayVolumeUsd": {
"description": "Liquidity floor, default 2000000",
"type": "number"
},
"scope": {
"description": "Default core",
"enum": [
"core",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_hyperliquid_cross_section",
"outputSchema": null
},
{
"description": "Get a Hyperliquid perp market by symbol with mark/funding context and optional candle history.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"interval": {
"description": "Candle interval (default 1h)",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"symbol": {
"description": "Coin symbol, e.g. BTC",
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "get_hyperliquid_market",
"outputSchema": null
},
{
"description": "Row counts and last ingest time for hl_research_* tables (candles, funding, symbols). Use before backtests to confirm data freshness.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_hyperliquid_research_data_stats",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fillLimit": {
"description": "Recent fills to include (default 100, max 500)",
"type": "number"
},
"walletId": {
"description": "FortFi wallet id on hyperliquid-mainnet",
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "get_hyperliquid_trading_desk",
"outputSchema": null
},
{
"description": "Recent Hyperliquid trade fills with closedPnl per fill. Use for P&L review and trade history (up to 2000 from HL).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max fills to return (default 200, max 2000)",
"type": "number"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "get_hyperliquid_user_fills",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"topic": {
"description": "Default overview",
"enum": [
"overview",
"tools",
"workflows",
"limits",
"pricing",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_mcp_guide",
"outputSchema": null
},
{
"description": "Get a payment product by internal id or public slug.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"type": "object"
},
"name": "get_payment_product",
"outputSchema": null
},
{
"description": "Get a payment request by internal id or public pid, including settlement attempts.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"idOrPid": {
"description": "Internal id or public pid",
"type": "string"
}
},
"required": [
"idOrPid"
],
"type": "object"
},
"name": "get_payment_request",
"outputSchema": null
},
{
"description": "Current policy limits: per-tx/daily/monthly caps (USDC smallest units). Agent accounts also include agent cap tier limits, maxWallets, and credential access expiry.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_policy_limits",
"outputSchema": null
},
{
"description": "Get a Polymarket market by conditionId with optional outcome price history from the public CLOB API.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"conditionId": {
"description": "Market condition id",
"type": "string"
},
"interval": {
"description": "Price history window (default 1w)",
"enum": [
"1h",
"6h",
"1d",
"1w",
"max"
],
"type": "string"
},
"tokenId": {
"description": "Outcome token id for history (defaults to first outcome)",
"type": "string"
}
},
"required": [
"conditionId"
],
"type": "object"
},
"name": "get_polymarket_market",
"outputSchema": null
},
{
"description": "Full portfolio summary across all wallets: token balances with USD values, 24h change, and total net worth.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_portfolio",
"outputSchema": null
},
{
"description": "Poll a bulk provisioning job (treasury + keys:manage + wallets:read). bearerKey appears once when secretsDelivery is revealed.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"jobId": {
"description": "Job id from create_provisioning_job",
"type": "string"
}
},
"required": [
"jobId"
],
"type": "object"
},
"name": "get_provisioning_job",
"outputSchema": null
},
{
"description": "Returns which swap/bridge tool to use for a given from→to chain pair, with notes on protocols supported.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fromChainId": {
"description": "Source chain id",
"type": "string"
},
"toChainId": {
"description": "Destination chain id",
"type": "string"
}
},
"required": [
"fromChainId",
"toChainId"
],
"type": "object"
},
"name": "get_swap_routing_guide",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"address": {
"description": "Token contract address or Solana mint (fallback)",
"type": "string"
},
"chainId": {
"description": "FortFi chain id, e.g. base-mainnet, ethereum-mainnet",
"type": "string"
},
"fungibleId": {
"description": "Zerion fungible id returned by discover_tokens (preferred)",
"type": "string"
},
"includePoints": {
"description": "Include the raw chart points array. Default false.",
"type": "boolean"
},
"indicators": {
"description": "Optional indicators to return; defaults to all. REST callers may pass a comma-separated value.",
"items": {
"enum": [
"return",
"drawdown",
"ema",
"rsi",
"macd",
"bollinger"
],
"type": "string"
},
"type": "array"
},
"period": {
"description": "Chart window (default day)",
"enum": [
"hour",
"day",
"week",
"month",
"3months",
"6months",
"year",
"5years",
"max"
],
"type": "string"
}
},
"required": [
"chainId"
],
"type": "object"
},
"name": "get_token_chart",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_treasury_context",
"outputSchema": null
},
{
"description": "Monthly UpTo product balance: cap, used, remaining, and period bounds. Billable writes consume this pool; unused budget is refunded at period end.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_usage_balance",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"apyDays": {
"description": "APY history window, 7–365 days; default 30",
"type": "number"
},
"chainId": {
"description": "FortFi yield-supported chain id",
"type": "string"
},
"tvlDays": {
"description": "TVL history window, 7–365 days; default 90",
"type": "number"
},
"vaultAddress": {
"description": "Vault address from list_yield_markets",
"type": "string"
}
},
"required": [
"chainId",
"vaultAddress"
],
"type": "object"
},
"name": "get_yield_market_detail",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId from the first call",
"type": "string"
},
"cosignerUserId": {
"description": "Agent path: FortFi userId of the agent to invite as co-signer",
"type": "string"
},
"email": {
"description": "Human path: invitee email for Security UI co-signer provision",
"type": "string"
},
"nickname": {
"description": "Optional nickname for this co-signer",
"type": "string"
},
"walletSignature": {
"description": "Funding-wallet signature over the challenge message",
"type": "string"
}
},
"type": "object"
},
"name": "invite_agent_cosigner",
"outputSchema": null
},
{
"description": "Alias of invite_agent_cosigner. Humans: email → Security UI. Agents: cosignerUserId.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"type": "string"
},
"cosignerUserId": {
"type": "string"
},
"email": {
"type": "string"
},
"nickname": {
"type": "string"
},
"walletSignature": {
"type": "string"
}
},
"type": "object"
},
"name": "invite_cosigner",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter timeline category (default all)",
"enum": [
"all",
"money",
"security",
"account"
],
"type": "string"
},
"walletId": {
"description": "Filter to one wallet mapping id",
"type": "string"
}
},
"type": "object"
},
"name": "list_activity_report",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"description": "Opaque cursor from a previous page's nextCursor. Passing this key (even as '') switches the response to { items, nextCursor }.",
"type": "string"
},
"limit": {
"description": "Max entries to return (default 20, max 100)",
"type": "number"
},
"walletId": {
"description": "Filter to audit entries for one wallet id",
"type": "string"
}
},
"type": "object"
},
"name": "list_audit_log",
"outputSchema": null
},
{
"description": "Active co-signers on this account.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_cosigner_memberships",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_funding_wallet_agents",
"outputSchema": null
},
{
"description": "List open governance requests on this account: pending (awaiting signature) and legacy scheduled rows. Use to monitor for unexpected loosening attempts.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_governance_requests",
"outputSchema": null
},
{
"description": "List Hyperliquid perpetual markets with live mark/mid/oracle prices, funding, open interest, and 24h volume. Public data; no proposal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Page size (default 30, max 100)",
"type": "number"
},
"offset": {
"description": "Pagination offset (default 0)",
"type": "number"
},
"search": {
"description": "Filter by coin symbol",
"type": "string"
}
},
"type": "object"
},
"name": "list_hyperliquid_markets",
"outputSchema": null
},
{
"description": "List resting Hyperliquid orders including SL/TP triggers for a wallet.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletId": {
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "list_hyperliquid_open_orders",
"outputSchema": null
},
{
"description": "List open Hyperliquid perp positions and margin summary for a hyperliquid-mainnet wallet (its address is used on the L1 order book).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletId": {
"description": "FortFi wallet id on hyperliquid-mainnet",
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "list_hyperliquid_positions",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assetClass": {
"description": "Filter asset classes. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"enum": [
"crypto",
"equity",
"commodity",
"fx",
"index",
"pre_ipo",
"other"
],
"type": "string"
},
"type": "array"
}
]
},
"dex": {
"description": "Filter dex ids (core, xyz, io, para). Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
]
},
"includeAllDesks": {
"description": "When true, same as scope=all",
"type": "boolean"
},
"limit": {
"description": "Max rows by 24h volume (default all, max 500)",
"type": "number"
},
"scope": {
"description": "Default core",
"enum": [
"core",
"all"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_hyperliquid_symbol_master",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_incoming_cosigner_invites",
"outputSchema": null
},
{
"description": "List webhook delivery log. Use status=failed for dead-letter queue rows. Filter by paymentRequestId to find deliveries for one checkout.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"endpointId": {
"type": "string"
},
"limit": {
"description": "Max rows (default 50, max 200)",
"type": "number"
},
"paymentRequestId": {
"description": "Internal payment request UUID",
"type": "string"
},
"status": {
"enum": [
"pending",
"delivered",
"failed"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_merchant_webhook_deliveries",
"outputSchema": null
},
{
"description": "List registered webhook endpoints (secrets are never returned).",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_merchant_webhooks",
"outputSchema": null
},
{
"description": "List persistent product checkout links for the account.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_payment_products",
"outputSchema": null
},
{
"description": "Buyer view: FortFi checkouts your vaults paid (what you bought). Matches settlements by payer wallet address across your fleet.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max rows (default 200, max 500)",
"type": "number"
},
"walletMappingId": {
"description": "Optional payer vault filter",
"type": "string"
}
},
"type": "object"
},
"name": "list_payment_purchases",
"outputSchema": null
},
{
"description": "List payment requests for the authenticated account.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"status": {
"enum": [
"open",
"processing",
"partially_paid",
"paid",
"expired",
"cancelled"
],
"type": "string"
},
"walletMappingId": {
"description": "Optional vault filter",
"type": "string"
}
},
"type": "object"
},
"name": "list_payment_requests",
"outputSchema": null
},
{
"description": "Merchant view: paid and partially paid invoices on your collection vaults (what you sold). Includes payer, method, and settlement details.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletMappingId": {
"description": "Optional collection vault filter",
"type": "string"
}
},
"type": "object"
},
"name": "list_payment_sales",
"outputSchema": null
},
{
"description": "Pending actions that require this account's co-signer approval. Use when this agent is a co-signer on another account.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max entries (default 10)",
"type": "number"
}
},
"type": "object"
},
"name": "list_pending_cosigner_approvals",
"outputSchema": null
},
{
"description": "List active Polymarket prediction markets on Polygon with volume, liquidity, and outcome prices.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"afterCursor": {
"description": "Pagination cursor from a prior list response",
"type": "string"
},
"limit": {
"description": "Max markets (default 25)",
"type": "number"
},
"minLiquidityUsd": {
"description": "Minimum liquidity USD (default 10000)",
"type": "number"
},
"search": {
"description": "Optional question/slug filter",
"type": "string"
},
"sortBy": {
"description": "volume_24hr (default), volume, liquidity, or end_date",
"type": "string"
},
"sortDirection": {
"enum": [
"asc",
"desc"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_polymarket_markets",
"outputSchema": null
},
{
"description": "List Polymarket outcome token positions for a Polygon wallet. walletId is required.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"walletId": {
"description": "FortFi Polygon wallet id",
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"name": "list_polymarket_positions",
"outputSchema": null
},
{
"description": "List all allowlisted recipients. Includes cooldown status: `cooldownActive: true` means the recipient cannot yet receive funds (24-hour gate).",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_recipients",
"outputSchema": null
},
{
"description": "List active ERC-20 token approvals (spender grants) on this account. Useful before proposing a swap to confirm the CoW vault is approved.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_token_spender_grants",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cursor": {
"description": "Opaque cursor from a previous page's nextCursor. Passing this (even empty) switches the response to { items, nextCursor }.",
"type": "string"
},
"limit": {
"description": "Page size when paginating (default 50, max 200)",
"type": "number"
},
"metadataKey": {
"description": "Filter wallets that include this metadata key (optional)",
"type": "string"
},
"metadataValue": {
"description": "When set with metadataKey, require an exact value match",
"type": "string"
}
},
"type": "object"
},
"name": "list_wallets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"asset": {
"description": "Asset symbol filter, default USDC",
"type": "string"
},
"chainId": {
"description": "FortFi chain id or omit for all yield chains",
"type": "string"
},
"limit": {
"description": "Max vaults (default 15, max 25)",
"type": "number"
},
"minTvlUsd": {
"description": "Minimum vault TVL in USD (default 500000)",
"type": "number"
},
"sortBy": {
"description": "net_apy (default) or tvl",
"type": "string"
},
"verifiedOnly": {
"description": "If true, only FortFi curated vaults; default false = open discovery",
"type": "boolean"
}
},
"type": "object"
},
"name": "list_yield_markets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_yield_positions",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fromWalletId": {
"description": "Payer vault id (must match invoice chain)",
"type": "string"
},
"paymentRequestPid": {
"description": "Public invoice pid from checkout URL or create_payment_request",
"type": "string"
}
},
"required": [
"paymentRequestPid",
"fromWalletId"
],
"type": "object"
},
"name": "pay_payment_request_x402",
"outputSchema": null
},
{
"description": "Read-only rebalance planner toward target weights. Returns suggested legs (swap, yield_deposit, yield_withdraw) without executing. Use propose_* + confirm_proposal to act.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"driftThresholdPercent": {
"description": "Ignore drift below this % (default 5)",
"type": "number"
},
"minLegUsd": {
"description": "Minimum leg size in USD (default 1)",
"type": "number"
},
"targets": {
"description": "Target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Example: 40% cash, 10% yield, 30% UNI, 20% other tokens.",
"items": {
"properties": {
"kind": {
"enum": [
"cash",
"yield",
"token",
"symbol"
],
"type": "string"
},
"label": {
"type": "string"
},
"symbol": {
"type": "string"
},
"weightPercent": {
"type": "number"
}
},
"required": [
"label",
"weightPercent",
"kind"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"targets"
],
"type": "object"
},
"name": "plan_rebalance",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"type": "string"
},
"buySymbol": {
"type": "string"
},
"fromWalletId": {
"type": "string"
},
"sellSymbol": {
"type": "string"
},
"toWalletId": {
"type": "string"
}
},
"required": [
"fromWalletId",
"toWalletId",
"sellSymbol",
"buySymbol",
"amountUsd"
],
"type": "object"
},
"name": "preview_bridge_quote",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"description": "Approximate sell amount in USD",
"type": "string"
},
"buyMint": {
"description": "Solana buy mint — omit for EVM",
"type": "string"
},
"buySymbol": {
"type": "string"
},
"buyTokenAddress": {
"description": "EVM buy token (0x…) — omit for Solana",
"type": "string"
},
"fromWalletId": {
"description": "Source wallet id",
"type": "string"
},
"sellMint": {
"description": "Solana sell mint — omit for EVM",
"type": "string"
},
"sellSymbol": {
"type": "string"
},
"sellTokenAddress": {
"description": "EVM sell token (0x…) — omit for Solana",
"type": "string"
},
"slippagePercent": {
"description": "Optional Jupiter slippage 0–50",
"type": "number"
},
"toWalletId": {
"description": "Optional Solana receive wallet",
"type": "string"
}
},
"required": [
"fromWalletId",
"sellSymbol",
"buySymbol",
"amountUsd"
],
"type": "object"
},
"name": "preview_swap_quote",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"description": "Bridge amount in USD",
"type": "string"
},
"buySymbol": {
"description": "Buy token symbol",
"type": "string"
},
"buyTokenAddress": {
"description": "Optional expected destination token contract; proposal fails if it differs from FortFi's verified chain resolution",
"type": "string"
},
"fromWalletId": {
"description": "Source wallet id",
"type": "string"
},
"previewQuoteId": {
"description": "Optional — from preview_bridge_quote for explicit quote review before propose",
"type": "string"
},
"sellSymbol": {
"description": "Sell token symbol",
"type": "string"
},
"sellTokenAddress": {
"description": "Optional expected source token contract; proposal fails if it differs from FortFi's verified chain resolution",
"type": "string"
},
"toWalletId": {
"description": "Destination wallet id (different chain)",
"type": "string"
}
},
"required": [
"fromWalletId",
"toWalletId",
"sellSymbol",
"buySymbol",
"amountUsd"
],
"type": "object"
},
"name": "propose_bridge",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"chainId": {
"description": "FortFi chain id, e.g. base-mainnet, robinhood-mainnet, solana-mainnet",
"type": "string"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Optional flat string tags (max 20 keys), e.g. { \"customer_id\": \"cust_123\" }",
"type": "object"
},
"walletName": {
"description": "Display name for the new wallet (2–64 chars)",
"type": "string"
}
},
"required": [
"chainId",
"walletName"
],
"type": "object"
},
"name": "propose_create_account",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"type": "string"
},
"perpDex": {
"description": "core | xyz | io | para (default core)",
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"amountUsd"
],
"type": "object"
},
"name": "propose_hyperliquid_deposit",
"outputSchema": null
},
{
"description": "Propose closing a Hyperliquid perp position (reduce-only). Omit size to close the whole position. Returns a proposalId for confirm_proposal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"size": {
"description": "Optional; omit to close all",
"type": "string"
},
"symbol": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"symbol"
],
"type": "object"
},
"name": "propose_hyperliquid_perp_close",
"outputSchema": null
},
{
"description": "Propose modifying a Hyperliquid perp position's protective stop-loss / take-profit (reduce-only). Returns a proposalId for confirm_proposal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"stopLoss": {
"type": "string"
},
"symbol": {
"type": "string"
},
"takeProfit": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"symbol"
],
"type": "object"
},
"name": "propose_hyperliquid_perp_modify",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"leverage": {
"type": "number"
},
"side": {
"enum": [
"long",
"short"
],
"type": "string"
},
"size": {
"description": "Coin-unit size (string). Use sizeUsd instead for USD notional.",
"type": "string"
},
"sizeUsd": {
"description": "USD notional target (min $10 on HL). Preferred for agents.",
"type": "string"
},
"stopLoss": {
"type": "string"
},
"symbol": {
"description": "e.g. BTC, ETH, xyz:TSLA, xyz:GOLD",
"type": "string"
},
"takeProfit": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"symbol",
"side"
],
"type": "object"
},
"name": "propose_hyperliquid_perp_open",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"type": "string"
},
"destinationDex": {
"description": "core | or any HIP-3 builder dex (not spot)",
"type": "string"
},
"sourceDex": {
"description": "core | spot | or any HIP-3 builder dex (xyz, io, para, mkts, …)",
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"amountUsd",
"sourceDex",
"destinationDex"
],
"type": "object"
},
"name": "propose_hyperliquid_send_asset",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"amountUsd"
],
"type": "object"
},
"name": "propose_hyperliquid_spot_to_perp",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId",
"amountUsd"
],
"type": "object"
},
"name": "propose_hyperliquid_withdraw",
"outputSchema": null
},
{
"description": "Execute a validated payout manifest sequentially (one ActionIntent per line). Requires Delegated Access or agent wallet. Set dryRun:true to validate only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"dryRun": {
"description": "If true, validate only — no sends",
"type": "boolean"
},
"fromWalletId": {
"type": "string"
},
"lines": {
"items": {
"properties": {
"amountUsdc": {
"type": "string"
},
"memo": {
"type": "string"
},
"recipientId": {
"type": "string"
}
},
"required": [
"recipientId",
"amountUsdc"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"fromWalletId",
"lines"
],
"type": "object"
},
"name": "propose_payout_manifest",
"outputSchema": null
},
{
"description": "Propose buying Polymarket outcome shares, then call confirm_proposal. Requires Polygon wallet.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"conditionId": {
"description": "Market condition id from list_polymarket_markets",
"type": "string"
},
"fromAccountQuery": {
"type": "string"
},
"fromWalletId": {
"type": "string"
},
"outcomeIndex": {
"description": "0-based outcome index",
"type": "number"
},
"price": {
"description": "Limit price 0-1 (e.g. 0.52)",
"type": "string"
},
"sizeDisplay": {
"description": "Share count (e.g. 10)",
"type": "string"
}
},
"required": [
"conditionId",
"outcomeIndex",
"price",
"sizeDisplay"
],
"type": "object"
},
"name": "propose_polymarket_buy",
"outputSchema": null
},
{
"description": "Propose redeeming winning shares from a resolved Polymarket market (CTF on Polygon), then call confirm_proposal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"conditionId": {
"type": "string"
},
"fromAccountQuery": {
"type": "string"
},
"fromWalletId": {
"type": "string"
},
"outcomeIndex": {
"type": "number"
}
},
"required": [
"conditionId"
],
"type": "object"
},
"name": "propose_polymarket_redeem",
"outputSchema": null
},
{
"description": "Propose selling Polymarket outcome shares (redeem collateral), then call confirm_proposal.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"conditionId": {
"type": "string"
},
"fromAccountQuery": {
"type": "string"
},
"fromWalletId": {
"type": "string"
},
"outcomeIndex": {
"type": "number"
},
"price": {
"type": "string"
},
"sizeDisplay": {
"type": "string"
}
},
"required": [
"conditionId",
"outcomeIndex",
"price",
"sizeDisplay"
],
"type": "object"
},
"name": "propose_polymarket_sell",
"outputSchema": null
},
{
"description": "Apply a validated recipient manifest (human/developer key). Adds new allowlist rows with normal 24h cooldown. Agent keys: use add_recipient per row (GOVERN).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"recipients": {
"items": {
"properties": {
"address": {
"type": "string"
},
"chainId": {
"type": "string"
},
"nickname": {
"type": "string"
}
},
"required": [
"address",
"chainId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"recipients"
],
"type": "object"
},
"name": "propose_recipient_manifest",
"outputSchema": null
},
{
"description": "Rename a wallet (account nickname), then call confirm_proposal with the returned proposalId.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accountId": {
"description": "Wallet id from list_wallets",
"type": "string"
},
"nickname": {
"description": "New nickname (2–64 characters)",
"type": "string"
}
},
"required": [
"accountId",
"nickname"
],
"type": "object"
},
"name": "propose_rename_account",
"outputSchema": null
},
{
"description": "Propose a Solana Jupiter swap. Autonomous agents: inline quote by default, or previewQuoteId for two-step review. confirm signs the bound quote.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"description": "Sell amount in USD",
"type": "string"
},
"buyMint": {
"description": "Mint address of token to buy",
"type": "string"
},
"buySymbol": {
"description": "Human-readable buy symbol",
"type": "string"
},
"fromWalletId": {
"description": "Solana wallet id to sell from",
"type": "string"
},
"previewQuoteId": {
"description": "Optional — from preview_swap_quote for explicit quote review before propose",
"type": "string"
},
"sellMint": {
"description": "Mint address of token to sell",
"type": "string"
},
"sellSymbol": {
"description": "Human-readable sell symbol",
"type": "string"
},
"slippagePercent": {
"description": "Optional slippage tolerance 0–50 (default 0.5)",
"type": "number"
},
"toWalletId": {
"description": "Solana wallet id to receive (can be same as fromWalletId)",
"type": "string"
}
},
"required": [
"fromWalletId",
"toWalletId",
"sellMint",
"buyMint",
"sellSymbol",
"buySymbol",
"amountUsd"
],
"type": "object"
},
"name": "propose_solana_swap",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"description": "Sell amount in USD",
"type": "string"
},
"buySymbol": {
"description": "Human-readable symbol of buy token, e.g. ETH",
"type": "string"
},
"buyTokenAddress": {
"description": "Token contract address to buy (0x…)",
"type": "string"
},
"fromWalletId": {
"description": "Source wallet id (must be EVM, CoW-supported chain)",
"type": "string"
},
"previewQuoteId": {
"description": "Optional — from preview_swap_quote for explicit quote review before propose",
"type": "string"
},
"sellSymbol": {
"description": "Human-readable symbol of sell token, e.g. USDC",
"type": "string"
},
"sellTokenAddress": {
"description": "Token contract address to sell (0x…)",
"type": "string"
},
"slippagePercent": {
"description": "Optional slippage tolerance 0–50 (default 0.5)",
"type": "number"
}
},
"required": [
"fromWalletId",
"sellTokenAddress",
"buyTokenAddress",
"sellSymbol",
"buySymbol",
"amountUsd"
],
"type": "object"
},
"name": "propose_swap",
"outputSchema": null
},
{
"description": "Propose max ERC-20 approval for CoW or Fusion spenders. Returns proposalId — call confirm_proposal before swap/bridge.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"flow": {
"enum": [
"cow_swap",
"fusion_bridge"
],
"type": "string"
},
"fromWalletId": {
"description": "EVM wallet id",
"type": "string"
},
"tokenAddress": {
"description": "Token to approve (0x…)",
"type": "string"
}
},
"required": [
"fromWalletId",
"tokenAddress",
"flow"
],
"type": "object"
},
"name": "propose_token_approve",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsdc": {
"description": "Amount in USDC as a decimal string, e.g. '5.00'. Required for recipient sends; optional for invoice pay (defaults to remaining balance).",
"type": "string"
},
"fromWalletId": {
"description": "Source wallet id from list_wallets",
"type": "string"
},
"memo": {
"description": "Optional transfer note (max 256 chars)",
"type": "string"
},
"paymentRequestPid": {
"description": "Public invoice pid from checkout URL — pays merchant vault with pid-bound settlement",
"type": "string"
},
"recipientId": {
"description": "Allowlisted recipient id (omit when using paymentRequestPid)",
"type": "string"
}
},
"required": [
"fromWalletId"
],
"type": "object"
},
"name": "propose_transfer",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountUsd": {
"description": "USDC amount e.g. 100.00",
"type": "string"
},
"assetSymbol": {
"enum": [
"USDC",
"USDT"
],
"type": "string"
},
"fromAccountQuery": {
"description": "Wallet nickname (alternative to fromWalletId)",
"type": "string"
},
"fromWalletId": {
"description": "FortFi wallet id",
"type": "string"
},
"vaultAddress": {
"description": "Morpho vault contract (0x…)",
"type": "string"
}
},
"required": [
"vaultAddress",
"amountUsd"
],
"type": "object"
},
"name": "propose_yield_deposit",
"outputSchema": null
},
{
"description": "Propose Morpho vault withdraw, then call confirm_proposal. With Delegated Access this executes server-side when policy permits. Use list_yield_positions for vaultAddress.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"amountDisplay": {
"type": "string"
},
"assetSymbol": {
"enum": [
"USDC",
"USDT"
],
"type": "string"
},
"fromAccountQuery": {
"type": "string"
},
"fromWalletId": {
"type": "string"
},
"vaultAddress": {
"type": "string"
},
"vaultName": {
"type": "string"
}
},
"required": [
"vaultAddress",
"amountDisplay"
],
"type": "object"
},
"name": "propose_yield_withdraw",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assetClass": {
"description": "Filter asset classes. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"enum": [
"crypto",
"equity",
"commodity",
"fx",
"index",
"pre_ipo",
"other"
],
"type": "string"
},
"type": "array"
}
]
},
"dex": {
"description": "Filter dex ids. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
]
},
"direction": {
"description": "Default desc",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"includeAllDesks": {
"description": "When true, same as scope=all",
"type": "boolean"
},
"limit": {
"description": "Default 20",
"type": "number"
},
"scope": {
"description": "Default core",
"enum": [
"core",
"all"
],
"type": "string"
},
"sort": {
"description": "Default volume",
"enum": [
"volume",
"pctChange",
"funding"
],
"type": "string"
}
},
"type": "object"
},
"name": "rank_hyperliquid_markets",
"outputSchema": null
},
{
"description": "Rank Polymarket markets by volume, liquidity, or 24h volume.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"type": "number"
},
"sortBy": {
"type": "string"
}
},
"type": "object"
},
"name": "rank_polymarket_markets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"candidateLimit": {
"description": "Override merged candidate cap, max 100",
"type": "number"
},
"chains": {
"items": {
"type": "string"
},
"type": "array"
},
"chartCandidateLimit": {
"description": "Override chart cap, max 20",
"type": "number"
},
"deepOptIn": {
"description": "Required when mode=deep",
"type": "boolean"
},
"includeUnverified": {
"description": "Default false",
"type": "boolean"
},
"minMarketCapUsd": {
"description": "Default 5000000",
"type": "number"
},
"minVolume1dUsd": {
"description": "Default 50000",
"type": "number"
},
"mode": {
"enum": [
"quick",
"standard",
"deep"
],
"type": "string"
},
"periods": {
"items": {
"enum": [
"hour",
"day",
"week",
"month",
"3months",
"6months",
"year",
"5years",
"max"
],
"type": "string"
},
"type": "array"
},
"sorts": {
"description": "Defaults to gainers_30d + volume_1d. Optional supplements: gainers_1d, gainers_90d, gainers_365d, market_cap.",
"items": {
"enum": [
"gainers_1d",
"gainers_30d",
"gainers_90d",
"gainers_365d",
"volume_1d",
"market_cap"
],
"type": "string"
},
"type": "array"
},
"verifiedOnly": {
"description": "Default true",
"type": "boolean"
}
},
"required": [
"chains"
],
"type": "object"
},
"name": "rank_tokens",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"apyDays": {
"description": "Default 30",
"type": "number"
},
"asset": {
"description": "Asset symbol, default USDC",
"type": "string"
},
"chainId": {
"description": "FortFi chain id or all",
"type": "string"
},
"limit": {
"description": "Default 10, max 25",
"type": "number"
},
"minTvlUsd": {
"description": "Default 500000",
"type": "number"
},
"tvlDays": {
"description": "Default 90",
"type": "number"
}
},
"type": "object"
},
"name": "rank_yield_markets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId from the first call",
"type": "string"
},
"walletAddress": {
"description": "The backup wallet address (0x…) to register",
"type": "string"
},
"walletSignature": {
"description": "CURRENT funding-wallet signature over the challenge message",
"type": "string"
}
},
"required": [
"walletAddress"
],
"type": "object"
},
"name": "register_backup_governance_wallet",
"outputSchema": null
},
{
"description": "Reject a pending action as co-signer.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"pendingApprovalId": {
"type": "string"
},
"reason": {
"description": "Optional rejection reason",
"type": "string"
}
},
"required": [
"pendingApprovalId"
],
"type": "object"
},
"name": "reject_cosigner_action",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId from the first call",
"type": "string"
},
"walletSignature": {
"description": "Funding-wallet signature over the challenge message",
"type": "string"
}
},
"type": "object"
},
"name": "remove_backup_governance_wallet",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId from the first call",
"type": "string"
},
"membershipId": {
"description": "Membership id from list_cosigner_memberships",
"type": "string"
},
"walletSignature": {
"description": "Funding-wallet signature over the challenge message",
"type": "string"
}
},
"required": [
"membershipId"
],
"type": "object"
},
"name": "remove_cosigner",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"recipientId": {
"description": "Recipient id from list_recipients",
"type": "string"
}
},
"required": [
"recipientId"
],
"type": "object"
},
"name": "remove_recipient",
"outputSchema": null
},
{
"description": "Replay a dead-lettered or failed webhook delivery after fixing your endpoint. Re-sends the same event id and body for idempotent handlers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"deliveryId": {
"description": "Delivery row id from list_merchant_webhook_deliveries",
"type": "string"
}
},
"required": [
"deliveryId"
],
"type": "object"
},
"name": "replay_merchant_webhook_delivery",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "resend_claim_link",
"outputSchema": null
},
{
"description": "Read-only treasury review: allocation buckets (cash, yield, tokens), top holdings, and optional drift vs target weights. Safe for cron — no proposals created.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"driftThresholdPercent": {
"description": "Hysteresis band in percentage points (default 5)",
"type": "number"
},
"minLegUsd": {
"description": "Minimum USD for rebalance legs (default 1)",
"type": "number"
},
"targets": {
"description": "Optional target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Weights must sum to 100.",
"items": {
"properties": {
"kind": {
"enum": [
"cash",
"yield",
"token",
"symbol"
],
"type": "string"
},
"label": {
"type": "string"
},
"symbol": {
"description": "Required when kind=symbol (e.g. UNI)",
"type": "string"
},
"weightPercent": {
"type": "number"
}
},
"required": [
"label",
"weightPercent",
"kind"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"name": "review_portfolio",
"outputSchema": null
},
{
"description": "Revoke a pending outbound co-signer invite before it is accepted.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"inviteId": {
"description": "Invite id from the invite you sent",
"type": "string"
}
},
"required": [
"inviteId"
],
"type": "object"
},
"name": "revoke_cosigner_invite",
"outputSchema": null
},
{
"description": "Revoke a vault-scoped credential (treasury + keys:manage). Idempotent if already revoked.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"credentialId": {
"description": "Vault credential id",
"type": "string"
}
},
"required": [
"credentialId"
],
"type": "object"
},
"name": "revoke_vault_credential",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"coins": {
"description": "Optional fixed symbol list (e.g. BTC, ETH). Omit for volume-filtered universe",
"items": {
"type": "string"
},
"type": "array"
},
"holdBars": {
"description": "Hold period in bars. Default 24",
"type": "number"
},
"interval": {
"description": "Candle interval in research DB. Default 1h",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"legsPerSide": {
"description": "Long/short leg count. Default 6",
"type": "number"
},
"lookbackBars": {
"description": "Trailing return lookback. Default 336 on 1h (~14d)",
"type": "number"
},
"minDayVolumeUsd": {
"description": "Universe liquidity floor when coins omitted. Default 1000000",
"type": "number"
},
"oosFraction": {
"description": "Out-of-sample tail fraction. Default 0.35",
"type": "number"
},
"strategy": {
"description": "Default momentum_cross",
"enum": [
"momentum_cross",
"trailing_return_rank"
],
"type": "string"
}
},
"type": "object"
},
"name": "run_hyperliquid_research_backtest",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": true,
"properties": {
"prod": {
"description": "Use production Supabase (default false in dev)",
"type": "boolean"
},
"spec": {
"description": "Strategy Spec: name, universe {dex, minDayVolumeUsd, includeCoins, excludeCoins, maxSymbols}, interval, signal {type rank|pattern, factor|pattern, params}, portfolio, costs, validation",
"type": "object"
}
},
"type": "object"
},
"name": "run_hyperliquid_research_backtest_spec",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assetClass": {
"description": "Filter asset classes. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"enum": [
"crypto",
"equity",
"commodity",
"fx",
"index",
"pre_ipo",
"other"
],
"type": "string"
},
"type": "array"
}
]
},
"chartLimit": {
"description": "TA depth, default 10",
"type": "number"
},
"dex": {
"description": "Filter dex ids. Comma-separated string or array.",
"oneOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
}
]
},
"direction": {
"description": "desc=gainers, asc=losers/short ideas",
"enum": [
"asc",
"desc"
],
"type": "string"
},
"includeAllDesks": {
"description": "When true, same as scope=all",
"type": "boolean"
},
"includeCharts": {
"type": "boolean"
},
"indicators": {
"items": {
"enum": [
"return",
"drawdown",
"ema",
"rsi",
"macd",
"bollinger"
],
"type": "string"
},
"type": "array"
},
"interval": {
"description": "Default 1h",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string"
},
"limit": {
"description": "Default 40",
"type": "number"
},
"minDayVolumeUsd": {
"description": "Default 1000000",
"type": "number"
},
"scope": {
"description": "Default core",
"enum": [
"core",
"all"
],
"type": "string"
},
"sideBias": {
"enum": [
"long",
"short",
"both"
],
"type": "string"
},
"sort": {
"description": "Default pctChange",
"enum": [
"volume",
"pctChange",
"funding"
],
"type": "string"
}
},
"type": "object"
},
"name": "screen_hyperliquid_markets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"candidateLimit": {
"description": "Override merged candidate cap, max 100",
"type": "number"
},
"chains": {
"items": {
"type": "string"
},
"type": "array"
},
"deepOptIn": {
"description": "Required when mode=deep",
"type": "boolean"
},
"includeUnverified": {
"description": "Default false; unverified results are labeled and need execution opt-in",
"type": "boolean"
},
"minMarketCapUsd": {
"description": "Default 5000000",
"type": "number"
},
"minVolume1dUsd": {
"description": "Default 50000",
"type": "number"
},
"mode": {
"enum": [
"quick",
"standard",
"deep"
],
"type": "string"
},
"sorts": {
"description": "Defaults to gainers_30d + volume_1d. Add gainers_1d, gainers_90d, gainers_365d, or market_cap when requested.",
"items": {
"enum": [
"gainers_1d",
"gainers_30d",
"gainers_90d",
"gainers_365d",
"volume_1d",
"market_cap"
],
"type": "string"
},
"type": "array"
},
"verifiedOnly": {
"description": "Default true",
"type": "boolean"
}
},
"required": [
"chains"
],
"type": "object"
},
"name": "screen_tokens",
"outputSchema": null
},
{
"description": "Parent-treasury key-centric credential search (treasury credential + keys:manage + wallets:read). Complements search_vaults. Never returns raw bearer keys.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"access": {
"enum": [
"read_only",
"read_write"
],
"type": "string"
},
"credentialKind": {
"enum": [
"treasury",
"vault"
],
"type": "string"
},
"cursor": {
"description": "Pagination cursor",
"type": "string"
},
"externalCustomerId": {
"description": "Exact external customer id",
"type": "string"
},
"limit": {
"description": "Page size (default 50, max 100)",
"type": "number"
},
"metadataKey": {
"description": "Exact metadata key (requires metadataValue)",
"type": "string"
},
"metadataValue": {
"description": "Exact metadata value (requires metadataKey)",
"type": "string"
},
"query": {
"description": "Free-text search",
"type": "string"
},
"status": {
"enum": [
"active",
"revoked"
],
"type": "string"
},
"walletId": {
"description": "Filter by vault wallet id",
"type": "string"
}
},
"type": "object"
},
"name": "search_credentials",
"outputSchema": null
},
{
"description": "Search Polymarket markets by question text.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"type": "number"
},
"query": {
"description": "Search text",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_polymarket_markets",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"chainId": {
"description": "Exact chain filter",
"type": "string"
},
"credentialAccess": {
"description": "Filter by linked credential access mode",
"enum": [
"read_only",
"read_write"
],
"type": "string"
},
"credentialStatus": {
"description": "Filter by linked credential status",
"enum": [
"active",
"revoked"
],
"type": "string"
},
"cursor": {
"description": "Pagination cursor from prior response",
"type": "string"
},
"externalCustomerId": {
"description": "Exact external customer id",
"type": "string"
},
"limit": {
"description": "Page size (default 50, max 100)",
"type": "number"
},
"metadataKey": {
"description": "Exact metadata key (requires metadataValue)",
"type": "string"
},
"metadataValue": {
"description": "Exact metadata value (requires metadataKey)",
"type": "string"
},
"query": {
"description": "Free-text search",
"type": "string"
}
},
"type": "object"
},
"name": "search_vaults",
"outputSchema": null
},
{
"description": "Send a signed webhook.test event to an endpoint.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"endpointId": {
"type": "string"
}
},
"required": [
"endpointId"
],
"type": "object"
},
"name": "send_merchant_webhook_test",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"additionalProperties": false,
"properties": {
"challengeId": {
"description": "Governance challengeId (only needed when weakening rules)",
"type": "string"
},
"rules": {
"items": {
"type": "object"
},
"type": "array"
},
"walletSignature": {
"description": "Funding-wallet signature over the challenge message",
"type": "string"
}
},
"required": [
"rules"
],
"type": "object"
},
"name": "update_cosigner_rules",
"outputSchema": null
},
{
"description": "Atomically replace a vault credential's name, access mode, grants, and expiry (treasury + keys:manage). Revoked credentials cannot be updated.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"access": {
"enum": [
"read_only",
"read_write"
],
"type": "string"
},
"credentialId": {
"description": "Vault credential id",
"type": "string"
},
"expiresAt": {
"description": "ISO-8601 expiry, or null to clear",
"type": "string"
},
"name": {
"type": "string"
},
"vaultGrants": {
"items": {
"properties": {
"dailyCapUsdMicros": {
"type": "string"
},
"maxTransactionsPerDay": {
"type": "number"
},
"monthlyCapUsdMicros": {
"type": "string"
},
"perTxCapUsdMicros": {
"type": "string"
},
"walletId": {
"type": "string"
}
},
"required": [
"walletId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"credentialId",
"name",
"access",
"vaultGrants"
],
"type": "object"
},
"name": "update_vault_credential",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accountId": {
"description": "Wallet id from list_wallets",
"type": "string"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Full metadata object, e.g. { \"customer_id\": \"cust_123\", \"agent_id\": \"ag_1\" }",
"type": "object"
}
},
"required": [
"accountId",
"metadata"
],
"type": "object"
},
"name": "update_wallet_metadata",
"outputSchema": null
},
{
"description": "Preview batch payroll/payout (max 50 lines). Each line: { recipientId, amountUsdc, memo? }. All recipients must be allowlisted, same chain as fromWalletId, and past cooldown.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fromWalletId": {
"description": "Wallet id from list_wallets",
"type": "string"
},
"lines": {
"items": {
"properties": {
"amountUsdc": {
"description": "Decimal USD amount e.g. 125.50",
"type": "string"
},
"memo": {
"type": "string"
},
"recipientId": {
"type": "string"
}
},
"required": [
"recipientId",
"amountUsdc"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"fromWalletId",
"lines"
],
"type": "object"
},
"name": "validate_payout_manifest",
"outputSchema": null
},
{
"description": "Preview a batch recipient import (max 50 rows). Each row: { address, chainId, nickname? }. Returns ready_new, already_exists, or invalid per line. Read-only.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"recipients": {
"items": {
"properties": {
"address": {
"type": "string"
},
"chainId": {
"type": "string"
},
"nickname": {
"type": "string"
}
},
"required": [
"address",
"chainId"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"recipients"
],
"type": "object"
},
"name": "validate_recipient_manifest",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:0f7a688951608c045cbb569efc8e3d479bee36b7ab14d9b490ef36646bdf693d | sha256sum