FortFi Treasury MCP
REMOTE · FORTFIAPP.COM · SCANNED SEP 20
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes. View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability0
- Schema not yet verified: we couldn't read the endpoint's schema.Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage not yet verified: we couldn't read the endpoint's tools.Unverified
Tool Safety0
- Tool safety not yet verified: we couldn't read the endpoint's tools.Unverified
Capabilities0
- Capabilities not yet verified: we couldn't read the endpoint's capabilities.Unverified
Unverified: 5 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.
How do I install the FortFi Treasury MCP server?
FortFi Treasury MCP is a hosted endpoint at https://fortfiapp.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · fortfiapp.com
claude mcp add --transport http rebelartists-fortfi-treasury-mcp 'https://fortfiapp.com/api/mcp'
{
"mcpServers": {
"rebelartists-fortfi-treasury-mcp": {
"url": "https://fortfiapp.com/api/mcp"
}
}
} {
"servers": {
"rebelartists-fortfi-treasury-mcp": {
"type": "http",
"url": "https://fortfiapp.com/api/mcp"
}
}
} [mcp_servers.rebelartists-fortfi-treasury-mcp] url = "https://fortfiapp.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"rebelartists-fortfi-treasury-mcp": {
"type": "remote",
"url": "https://fortfiapp.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add rebelartists-fortfi-treasury-mcp --url 'https://fortfiapp.com/api/mcp' --transport streamable-http
mcp_servers:
rebelartists-fortfi-treasury-mcp:
url: "https://fortfiapp.com/api/mcp" {
"McpServers": {
"rebelartists-fortfi-treasury-mcp": {
"Transport": "http",
"Url": "https://fortfiapp.com/api/mcp"
}
}
} assistant mcp add rebelartists-fortfi-treasury-mcp -t streamable-http -u 'https://fortfiapp.com/api/mcp'
{
"mcpServers": {
"rebelartists-fortfi-treasury-mcp": {
"type": "http",
"url": "https://fortfiapp.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 11 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 7 Aug 26 0
- Endpoint reachability: reachable → not serving MCP ▼ security
- Stability: 0.30 → unverified ▼ security
- Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes. security
- Capabilities: fail → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- 4 Aug 26 0
- Tool “discover_tokens” rewrote its description, which is the text the model reads security
- Tool “list_yield_markets” rewrote its description, which is the text the model reads security
- Tool “propose_bridge” rewrote its description, which is the text the model reads security
- Tool “propose_create_account” rewrote its description, which is the text the model reads security
- Tool “propose_rename_account” rewrote its description, which is the text the model reads security
- Tool “propose_token_approve” rewrote its description, which is the text the model reads security
- Tool “propose_yield_deposit” rewrote its description, which is the text the model reads security
- Tool “propose_yield_withdraw” rewrote its description, which is the text the model reads security
- Schema quality: 86 → 95 ▼ functional
- New tool “confirm_proposal” functional
- New tool “get_fusion_order_status” functional
- New tool “get_token_chart” functional
- New tool “get_yield_market_detail” functional
- New tool “plan_rebalance” functional
- New tool “propose_payout_manifest” functional
- New tool “propose_recipient_manifest” functional
- New tool “rank_tokens” functional
- New tool “rank_yield_markets” functional
- New tool “review_portfolio” functional
- New tool “screen_tokens” functional
- New tool “validate_payout_manifest” functional
- New tool “validate_recipient_manifest” functional
- “discover_tokens” reworded the description of “sort” cosmetic
- “list_yield_markets” reworded the description of “minTvlUsd” cosmetic
- “propose_bridge” reworded the description of “buyTokenAddress” cosmetic
- “propose_bridge” reworded the description of “sellTokenAddress” cosmetic
- “propose_bridge” made “buyTokenAddress” optional cosmetic
- “propose_bridge” made “sellTokenAddress” optional cosmetic
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 0
- Stability: unverified → 0.03 ▲ functional
- 28 Jul 26 0
- Transport: fail → pass ▲ security
- Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 59 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. security
- MCP protocol: unverified → fail ▼ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: pass functional
- First check of Schema quality: good functional
- First check of Tool coverage: 81 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Probed https://fortfiapp.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=fortfiapp.com | CN=YE2,O=Let's Encrypt,C=US | 25 Jul 2026 | 23 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 68aa4096872883a481674d7ce83287368e3 |
| SANs: *.fortfiapp.com, fortfiapp.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of fortfiapp.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| fortfiapp.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=*, microphone=*, accelerometer=*, gyroscope=*, payment=*, geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://fortfiapp.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://fortfiapp.com/api/mcp | HTTPS enforced | 301 | https://fortfiapp.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_cosigner_invite ~54
Accept a pending co-signer invite. After accepting, you will be able to approve/reject pending actions for that account.
| Name | Type | Req | Description |
|---|---|---|---|
| inviteId | string | yes | Invite id from list_incoming_cosigner_invites |
No output schema declared.
No examples provided.
add_recipient ~150
Add a payout address to the allowlist. Human developer key (frtfi_hu_* + DA): added with 24h cooldown (no Assist passkey). Agent key (frtfi_ag_*): GOVERN — funding-wallet signature required; then approved immediately.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet address (0x… or Solana base58) |
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, ethereum-mainnet, solana-mainnet |
| challengeId | string | – | Agent GOVERN: challengeId from the first call |
| nickname | string | – | Optional display name |
| walletSignature | string | – | Agent GOVERN: funding-wallet signature |
No output schema declared.
No examples provided.
approve_cosigner_action ~39
Approve a pending action as co-signer. Use with list_pending_cosigner_approvals.
| Name | Type | Req | Description |
|---|---|---|---|
| pendingApprovalId | string | yes | – |
No output schema declared.
No examples provided.
approve_recipient ~102
Approve a recipient still in cooldown (early release). A distinct active cosigner may approve directly; owner self-approval via an agent key is a GOVERN action requiring a funding-wallet signature (challengeId + walletSignature).
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | Governance challengeId from the first call |
| recipientId | string | yes | Recipient id from list_recipients or add_recipient |
| walletSignature | string | – | Funding-wallet signature over the challenge message |
No output schema declared.
No examples provided.
cancel_governance_change ~75
Veto/cancel a pending governance challenge before it is signed and applied. Cancelling TIGHTENS security, so it needs only the agent key (no signature). Also cancels legacy scheduled rows from before immediate-apply parity.
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | yes | The governance request id from list_governance_requests |
No output schema declared.
No examples provided.
cancel_payment_request ~28
Cancel an open payment request with no verified settlement.
| Name | Type | Req | Description |
|---|---|---|---|
| idOrPid | string | yes | – |
No output schema declared.
No examples provided.
cancel_pending_action ~47
Cancel a pending approval that you (the account owner) initiated.
| Name | Type | Req | Description |
|---|---|---|---|
| pendingApprovalId | string | yes | Pending approval id from list_pending_cosigner_approvals or list_audit_log |
No output schema declared.
No examples provided.
check_trade_allowance ~129
Check ERC-20 allowance for an upcoming CoW swap (cow_swap) or Fusion bridge (fusion_bridge). Call before propose_swap / propose_bridge; if insufficient, use propose_token_approve then confirm.
| Name | Type | Req | Description |
|---|---|---|---|
| flow | string | yes | cow_swap = CoW VaultRelayer; fusion_bridge = 1inch Limit Order |
| fromWalletId | string | yes | Source EVM wallet id |
| requiredAmountSmallest | string | yes | Required allowance in token smallest units (e.g. USDC 6 decimals) |
| tokenAddress | string | yes | Sell token contract (0x…) |
No output schema declared.
No examples provided.
confirm_proposal ~98
Confirm a pending proposal returned by a propose_* tool. Reuses the same policy, risk, allowlist, vault-grant, delegated-authority, and cosign checks as POST /api/mcp/confirm. Returns executed, pending-approval, or passkey-required status.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmToken | string | – | Optional proposal-bound confirmation token when one was returned |
| proposalId | string | yes | Proposal UUID returned by a propose_* tool |
No output schema declared.
No examples provided.
create_payment_request ~134
Create a shareable payment request for a vault. Returns pid, paymentUrl, and qrPayload for humans or agents.
| Name | Type | Req | Description |
|---|---|---|---|
| amountSmallestUnit | string | – | USDC amount in smallest units (alternative to amountUsd) |
| amountUsd | number | – | Invoice amount in USD (1 USD = 1 USDC) |
| description | string | – | Optional invoice note |
| expiryDays | number | – | Days until expiry (default 30) |
| externalReference | string | – | Optional external invoice id |
| metadata | object | – | Optional metadata object |
| walletMappingId | string | yes | Target collection vault id |
No output schema declared.
No examples provided.
create_provisioning_job ~101
Bulk-provision up to 20 customer vaults per job (treasury + keys:manage + wallets:write). Requires idempotencyKey in args. Poll get_provisioning_job until terminal; bearer secrets reveal once on first terminal GET.
| Name | Type | Req | Description |
|---|---|---|---|
| idempotencyKey | string | yes | Unique key (8–200 chars) — same key + body replays the job |
| items | array | yes | Up to 20 provisioning items |
No output schema declared.
No examples provided.
create_vault_credential ~132
Mint a vault-scoped credential for an existing wallet (treasury + keys:manage). Returns bearerKey once when agentPublicKey is omitted. Requires FORTFI_VAULT_CREDENTIALS_ENABLED.
| Name | Type | Req | Description |
|---|---|---|---|
| access | string | yes | – |
| agentPublicKey | string | – | Optional uncompressed P-256 public key (04… hex) for ECDSA auth |
| expiresAt | string | – | ISO-8601 expiry (optional) |
| name | string | yes | Credential label (2–100 chars) |
| vaultGrants | array | yes | Explicit wallet grants with optional USD micro caps |
No output schema declared.
No examples provided.
discover_tokens ~287
Market-wide token discovery on a FortFi chain (USD). Use for trending/gainers/losers/volume/mcap — NOT the browser Explore REST route. Sorts: gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d. No 7d or 30d-volume sort exists upstream — closest available gainers granularity to '1 week' is gainers_1d or gainers_30d; say so explicitly rather than silently picking one. Returns contract addresses for propose_swap / propose_bridge.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, ethereum-mainnet |
| limit | number | – | Max results (default 10, max 25) |
| query | string | – | Optional name/symbol filter, e.g. 'USDC' or 'wrapped' |
| sort | string | – | gainers_1d, gainers_30d, gainers_90d, gainers_365d, losers_1d, losers_30d, losers_90d, losers_365d, market_cap, volume_1d (default market_cap) |
| verifiedOnly | boolean | – | Only verified tokens |
No output schema declared.
No examples provided.
extend_payment_request ~48
Extend an open payment request expiry (default extension window in days).
| Name | Type | Req | Description |
|---|---|---|---|
| expiryDays | number | yes | New expiry horizon from now (1-365) |
| idOrPid | string | yes | – |
No output schema declared.
No examples provided.
get_account_holdings ~40
Token holdings for a specific wallet, with USD values and 24h change.
| Name | Type | Req | Description |
|---|---|---|---|
| walletId | string | yes | Wallet id from list_wallets |
No output schema declared.
No examples provided.
get_cosigner_rules ~37
Amount-banded cosigner quorum rules for sends and swaps. Below-band amounts auto-execute; matching bands require N cosigner votes.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_fusion_order_status ~60
Track an owned Fusion+ cross-chain order by orderHash. Returns authoritative settlement/refund status, source and destination transactions, receiver, and the real destination token contract.
| Name | Type | Req | Description |
|---|---|---|---|
| orderHash | string | yes | Fusion+ order hash (0x…) |
No output schema declared.
No examples provided.
get_mcp_guide ~65
FortFi MCP capability guide: onboarding paths, pricing, limits, workflows, and full tool catalog. Call first when unsure which tool to use (e.g. market research → discover_tokens, not the Explore UI REST route).
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | – | Default overview |
No output schema declared.
No examples provided.
get_payment_request ~38
Get a payment request by internal id or public pid, including settlement attempts.
| Name | Type | Req | Description |
|---|---|---|---|
| idOrPid | string | yes | Internal id or public pid |
No output schema declared.
No examples provided.
get_policy_limits ~51
Current policy limits: per-tx/daily/monthly caps (USDC smallest units). Agent accounts include billingPlan (personal|startup), billingPlanName, maxWallets, tier, and subscription expiry.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_portfolio ~32
Full portfolio summary across all wallets: token balances with USD values, 24h change, and total net worth.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_provisioning_job ~54
Poll a bulk provisioning job (treasury + keys:manage + wallets:read). bearerKey appears once when secretsDelivery is revealed.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Job id from create_provisioning_job |
No output schema declared.
No examples provided.
get_swap_routing_guide ~59
Returns which swap/bridge tool to use for a given from→to chain pair, with notes on protocols supported.
| Name | Type | Req | Description |
|---|---|---|---|
| fromChainId | string | yes | Source chain id |
| toChainId | string | yes | Destination chain id |
No output schema declared.
No examples provided.
get_token_chart ~185
Fetch a compact Zerion chart summary plus deterministic EMA, RSI, MACD, Bollinger, return, max-drawdown, and data-quality analysis. Raw points are omitted by default; set includePoints:true only for visual charting or external analysis. Discontinuous pre-migration/launch samples are excluded from TA.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | Token contract address or Solana mint (fallback) |
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, ethereum-mainnet |
| fungibleId | string | – | Zerion fungible id returned by discover_tokens (preferred) |
| includePoints | boolean | – | Include the raw chart points array. Default false. |
| indicators | array | – | Optional indicators to return; defaults to all. REST callers may pass a comma-separated value. |
| period | string | – | Chart window (default day) |
No output schema declared.
No examples provided.
get_yield_market_detail ~141
Evidence for one Morpho vault: current net APY/TVL, historical APY and TVL series, period averages/volatility/drawdown, quality flags, allocation, separated eligibility/readiness status, and timestamp. Use before recommending or proposing a deposit.
| Name | Type | Req | Description |
|---|---|---|---|
| apyDays | number | – | APY history window, 7–365 days; default 30 |
| chainId | string | yes | FortFi yield-supported chain id |
| tvlDays | number | – | TVL history window, 7–365 days; default 90 |
| vaultAddress | string | yes | Vault address from list_yield_markets |
No output schema declared.
No examples provided.
invite_agent_cosigner ~150
Invite a co-signer. Agents: pass cosignerUserId (GOVERN / funding-wallet sign when using an agent API key). Humans: pass email — opens instructions for Security UI passkey provision (Turnkey dual-control with MCP DA).
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | Governance challengeId from the first call |
| cosignerUserId | string | – | Agent path: FortFi userId of the agent to invite as co-signer |
| string | – | Human path: invitee email for Security UI co-signer provision | |
| nickname | string | – | Optional nickname for this co-signer |
| walletSignature | string | – | Funding-wallet signature over the challenge message |
No output schema declared.
No examples provided.
invite_cosigner ~70
Alias of invite_agent_cosigner. Humans: email → Security UI. Agents: cosignerUserId.
| Name | Type | Req | Description |
|---|---|---|---|
| challengeId | string | – | – |
| cosignerUserId | string | – | – |
| string | – | – | |
| nickname | string | – | – |
| walletSignature | string | – | – |
No output schema declared.
No examples provided.
list_audit_log ~40
Recent account activity: transfers, swaps, security events.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max entries to return (default 20, max 100) |
No output schema declared.
No examples provided.
list_cosigner_memberships ~19
Active co-signers on this account.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_funding_wallet_agents ~47
List all FortFi agent accounts funded by the same payment wallet as this agent. Use to discover agentLabel / userId when renewing or spawning siblings (treasury multi-agent setups).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_governance_requests ~39
List open governance requests on this account: pending (awaiting signature) and legacy scheduled rows. Use to monitor for unexpected loosening attempts.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_incoming_cosigner_invites ~45
List pending co-signer invites sent TO this account (where this account is the invitee). Use to discover accounts you can become a co-signer for.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_payment_requests ~36
List payment requests for the authenticated account.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | – |
| walletMappingId | string | – | Optional vault filter |
No output schema declared.
No examples provided.
list_pending_cosigner_approvals ~51
Pending actions that require this account's co-signer approval. Use when this agent is a co-signer on another account.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max entries (default 10) |
No output schema declared.
No examples provided.
list_recipients ~39
List all allowlisted recipients. Includes cooldown status: `cooldownActive: true` means the recipient cannot yet receive funds (24-hour gate).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_token_spender_grants ~41
List active ERC-20 token approvals (spender grants) on this account. Useful before proposing a swap to confirm the CoW vault is approved.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_wallets ~77
List FortFi wallets for this account: chain, address, nickname, metadata tags, and default flag. Optional metadataKey/metadataValue filter (exact match).
| Name | Type | Req | Description |
|---|---|---|---|
| metadataKey | string | – | Filter wallets that include this metadata key (optional) |
| metadataValue | string | – | When set with metadataKey, require an exact value match |
No output schema declared.
No examples provided.
list_yield_markets ~187
Open Morpho yield discovery by chain with discovered, policyEligible, manuallyCurated, executionReady, and eligibilityReasons. Default minimum TVL is $500K everywhere (listing, policy, Turnkey). executionReady means TVL qualifies and you have a wallet on that chain; POLICY_SYNC_RECOMMENDED is advisory only.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | Asset symbol filter, default USDC |
| chainId | string | – | FortFi chain id or omit for all yield chains |
| limit | number | – | Max vaults (default 15, max 25) |
| minTvlUsd | number | – | Minimum vault TVL in USD (default 500000) |
| sortBy | string | – | net_apy (default) or tvl |
| verifiedOnly | boolean | – | If true, only FortFi curated vaults; default false = open discovery |
No output schema declared.
No examples provided.
list_yield_positions ~21
User's Morpho yield positions from FortFi history.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
plan_rebalance ~135
Read-only rebalance planner toward target weights. Returns suggested legs (swap, yield_deposit, yield_withdraw) without executing. Use propose_* + confirm_proposal to act.
| Name | Type | Req | Description |
|---|---|---|---|
| driftThresholdPercent | number | – | Ignore drift below this % (default 5) |
| minLegUsd | number | – | Minimum leg size in USD (default 1) |
| targets | array | yes | Target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Example: 40% cash, 10% yield, 30% UNI, 20% other tokens. |
No output schema declared.
No examples provided.
preview_bridge_quote ~91
Optional advanced step: fetch a cross-chain bridge quote (Fusion+ or deBridge) and return previewQuoteId. Omit previewQuoteId on propose_bridge to bundle quote+proposal in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | – |
| buySymbol | string | yes | – |
| fromWalletId | string | yes | – |
| sellSymbol | string | yes | – |
| toWalletId | string | yes | – |
No output schema declared.
No examples provided.
preview_swap_quote ~212
Optional advanced step: fetch a same-chain swap quote (CoW on EVM, Jupiter on Solana) and return previewQuoteId. Omit previewQuoteId on propose_* to bundle quote+proposal in one call. Does not execute or move funds.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Approximate sell amount in USD |
| buyMint | string | – | Solana buy mint — omit for EVM |
| buySymbol | string | yes | – |
| buyTokenAddress | string | – | EVM buy token (0x…) — omit for Solana |
| fromWalletId | string | yes | Source wallet id |
| sellMint | string | – | Solana sell mint — omit for EVM |
| sellSymbol | string | yes | – |
| sellTokenAddress | string | – | EVM sell token (0x…) — omit for Solana |
| slippagePercent | number | – | Optional Jupiter slippage 0–50 |
| toWalletId | string | – | Optional Solana receive wallet |
No output schema declared.
No examples provided.
propose_bridge ~197
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Bridge amount in USD |
| buySymbol | string | yes | Buy token symbol |
| buyTokenAddress | string | – | Optional expected destination token contract; proposal fails if it differs from FortFi's verified chain resolution |
| fromWalletId | string | yes | Source wallet id |
| previewQuoteId | string | – | Optional — from preview_bridge_quote for explicit quote review before propose |
| sellSymbol | string | yes | Sell token symbol |
| sellTokenAddress | string | – | Optional expected source token contract; proposal fails if it differs from FortFi's verified chain resolution |
| toWalletId | string | yes | Destination wallet id (different chain) |
No output schema declared.
No examples provided.
propose_create_account ~125
Create a new wallet on a supported chain. Optional metadata tags (e.g. customer_id). Then call confirm_proposal with the returned proposalId. Agent accounts execute server-side when no cosigners are configured.
| Name | Type | Req | Description |
|---|---|---|---|
| chainId | string | yes | FortFi chain id, e.g. base-mainnet, solana-mainnet |
| metadata | object | – | Optional flat string tags (max 20 keys), e.g. { "customer_id": "cust_123" } |
| walletName | string | yes | Display name for the new wallet (2–64 chars) |
No output schema declared.
No examples provided.
propose_payout_manifest ~72
Execute a validated payout manifest sequentially (one ActionIntent per line). Requires Delegated Access or agent wallet. Set dryRun:true to validate only.
| Name | Type | Req | Description |
|---|---|---|---|
| dryRun | boolean | – | If true, validate only — no sends |
| fromWalletId | string | yes | – |
| lines | array | yes | – |
No output schema declared.
No examples provided.
propose_recipient_manifest ~54
Apply a validated recipient manifest (human/developer key). Adds new allowlist rows with normal 24h cooldown. Agent keys: use add_recipient per row (GOVERN).
| Name | Type | Req | Description |
|---|---|---|---|
| recipients | array | yes | – |
No output schema declared.
No examples provided.
propose_rename_account ~56
Rename a wallet (account nickname), then call confirm_proposal with the returned proposalId.
| Name | Type | Req | Description |
|---|---|---|---|
| accountId | string | yes | Wallet id from list_wallets |
| nickname | string | yes | New nickname (2–64 characters) |
No output schema declared.
No examples provided.
propose_solana_swap ~188
Propose a Solana Jupiter swap. Autonomous agents: inline quote by default, or previewQuoteId for two-step review. confirm signs the bound quote.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Sell amount in USD |
| buyMint | string | yes | Mint address of token to buy |
| buySymbol | string | yes | Human-readable buy symbol |
| fromWalletId | string | yes | Solana wallet id to sell from |
| previewQuoteId | string | – | Optional — from preview_swap_quote for explicit quote review before propose |
| sellMint | string | yes | Mint address of token to sell |
| sellSymbol | string | yes | Human-readable sell symbol |
| slippagePercent | number | – | Optional slippage tolerance 0–50 (default 0.5) |
| toWalletId | string | yes | Solana wallet id to receive (can be same as fromWalletId) |
No output schema declared.
No examples provided.
propose_swap ~224
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountUsd | string | yes | Sell amount in USD |
| buySymbol | string | yes | Human-readable symbol of buy token, e.g. ETH |
| buyTokenAddress | string | yes | Token contract address to buy (0x…) |
| fromWalletId | string | yes | Source wallet id (must be EVM, CoW-supported chain) |
| previewQuoteId | string | – | Optional — from preview_swap_quote for explicit quote review before propose |
| sellSymbol | string | yes | Human-readable symbol of sell token, e.g. USDC |
| sellTokenAddress | string | yes | Token contract address to sell (0x…) |
| slippagePercent | number | – | Optional slippage tolerance 0–50 (default 0.5) |
No output schema declared.
No examples provided.
propose_token_approve ~73
Propose max ERC-20 approval for CoW or Fusion spenders. Returns proposalId — call confirm_proposal before swap/bridge.
| Name | Type | Req | Description |
|---|---|---|---|
| flow | string | yes | – |
| fromWalletId | string | yes | EVM wallet id |
| tokenAddress | string | yes | Token to approve (0x…) |
No output schema declared.
No examples provided.
What is the FortFi Treasury MCP server?
FortFi Treasury MCP is listed in the public MCP registry as io.github.rebelArtists/fortfi-treasury-mcp. Policy-gated MCP treasury for AI agents, x402 subscribe, 50+ tools, multi-chain. This page covers its hosted endpoint (https://fortfiapp.com/api/mcp).
Is the FortFi Treasury MCP server safe to use?
FortFi Treasury MCP scores 35 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the FortFi Treasury MCP server expose?
FortFi Treasury MCP exposes 72 tools: get_mcp_guide, list_wallets, list_recipients, list_audit_log, get_fusion_order_status, and 67 more. Their descriptions and schemas cost roughly 6,841 tokens of context every time the server is loaded.
Does the FortFi Treasury MCP server require authentication?
No. We connected to FortFi Treasury MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the FortFi Treasury MCP server still maintained?
FortFi Treasury MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.