Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

FortFi Treasury MCP

REMOTE · FORTFIAPP.COM · SCANNED SEP 20

Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.

Available components

0 this week 35 Trust /100
Trust breakdown (7 categories)

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
Transport & Reachability100
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.

Install

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

# add to Claude Code
claude mcp add --transport http rebelartists-fortfi-treasury-mcp 'https://fortfiapp.com/api/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "rebelartists-fortfi-treasury-mcp": {
      "url": "https://fortfiapp.com/api/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "rebelartists-fortfi-treasury-mcp": {
      "type": "http",
      "url": "https://fortfiapp.com/api/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.rebelartists-fortfi-treasury-mcp]
url = "https://fortfiapp.com/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rebelartists-fortfi-treasury-mcp": {
      "type": "remote",
      "url": "https://fortfiapp.com/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add rebelartists-fortfi-treasury-mcp --url 'https://fortfiapp.com/api/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  rebelartists-fortfi-treasury-mcp:
    url: "https://fortfiapp.com/api/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "rebelartists-fortfi-treasury-mcp": {
      "Transport": "http",
      "Url": "https://fortfiapp.com/api/mcp"
    }
  }
}
# add to Vellum
assistant mcp add rebelartists-fortfi-treasury-mcp -t streamable-http -u 'https://fortfiapp.com/api/mcp'
// mcp.json
{
  "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.

Changelog

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
Diagnostics

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
MCP tools · 72 exposed · ~6,841 tokens

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 →

Tool Tokens
propose_transfer ~130

Transfer USDC to an allowlisted recipient. The recipient must be approved (no active cooldown). Rejected with POLICY_LIMIT_EXCEEDED if above tier limits. Rejected with RECIPIENT_NOT_APPROVED if in cooldown.

NameTypeReqDescription
amountUsdcstringyesAmount in USDC as a decimal string, e.g. '5.00' for $5 USDC
fromWalletIdstringyesSource wallet id from list_wallets
memostringOptional transfer note (max 256 chars)
recipientIdstringyesRecipient id from list_recipients

No output schema declared.

No examples provided.

propose_yield_deposit ~121

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.

NameTypeReqDescription
amountUsdstringyesUSDC amount e.g. 100.00
assetSymbolstring
fromAccountQuerystringWallet nickname (alternative to fromWalletId)
fromWalletIdstringFortFi wallet id
vaultAddressstringyesMorpho vault contract (0x…)

No output schema declared.

No examples provided.

propose_yield_withdraw ~95

Propose Morpho vault withdraw, then call confirm_proposal. With Delegated Access this executes server-side when policy permits. Use list_yield_positions for vaultAddress.

NameTypeReqDescription
amountDisplaystringyes
assetSymbolstring
fromAccountQuerystring
fromWalletIdstring
vaultAddressstringyes
vaultNamestring

No output schema declared.

No examples provided.

rank_tokens ~237

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.

NameTypeReqDescription
candidateLimitnumberOverride merged candidate cap, max 100
chainsarrayyes
chartCandidateLimitnumberOverride chart cap, max 20
deepOptInbooleanRequired when mode=deep
includeUnverifiedbooleanDefault false
minMarketCapUsdnumberDefault 5000000
minVolume1dUsdnumberDefault 50000
modestring
periodsarray
sortsarrayDefaults to gainers_30d + volume_1d. Optional supplements: gainers_1d, gainers_90d, gainers_365d, market_cap.
verifiedOnlybooleanDefault true

No output schema declared.

No examples provided.

rank_yield_markets ~142

Batch-rank Morpho markets using current net APY, APY average/range/volatility, TVL trend/drawdown, vault age, curation, warnings, and current-user execution eligibility. Runs evidence requests concurrently and never creates a proposal.

NameTypeReqDescription
apyDaysnumberDefault 30
assetstringAsset symbol, default USDC
chainIdstringFortFi chain id or all
limitnumberDefault 10, max 25
minTvlUsdnumberDefault 500000
tvlDaysnumberDefault 90

No output schema declared.

No examples provided.

register_backup_governance_wallet ~121

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.

NameTypeReqDescription
challengeIdstringGovernance challengeId from the first call
walletAddressstringyesThe backup wallet address (0x…) to register
walletSignaturestringCURRENT funding-wallet signature over the challenge message

No output schema declared.

No examples provided.

reject_cosigner_action ~38

Reject a pending action as co-signer.

NameTypeReqDescription
pendingApprovalIdstringyes
reasonstringOptional rejection reason

No output schema declared.

No examples provided.

remove_backup_governance_wallet ~80

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.

NameTypeReqDescription
challengeIdstringGovernance challengeId from the first call
walletSignaturestringFunding-wallet signature over the challenge message

No output schema declared.

No examples provided.

remove_cosigner ~100

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.

NameTypeReqDescription
challengeIdstringGovernance challengeId from the first call
membershipIdstringyesMembership id from list_cosigner_memberships
walletSignaturestringFunding-wallet signature over the challenge message

No output schema declared.

No examples provided.

remove_recipient ~67

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.

NameTypeReqDescription
recipientIdstringyesRecipient id from list_recipients

No output schema declared.

No examples provided.

resend_claim_link ~52

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

review_portfolio ~120

Read-only treasury review: allocation buckets (cash, yield, tokens), top holdings, and optional drift vs target weights. Safe for cron — no proposals created.

NameTypeReqDescription
driftThresholdPercentnumberHysteresis band in percentage points (default 5)
minLegUsdnumberMinimum USD for rebalance legs (default 1)
targetsarrayOptional target allocation. Each row: { label, weightPercent, kind: cash|yield|token|symbol, symbol? }. Weights must sum to 100.

No output schema declared.

No examples provided.

revoke_cosigner_invite ~40

Revoke a pending outbound co-signer invite before it is accepted.

NameTypeReqDescription
inviteIdstringyesInvite id from the invite you sent

No output schema declared.

No examples provided.

revoke_vault_credential ~44

Revoke a vault-scoped credential (treasury + keys:manage). Idempotent if already revoked.

NameTypeReqDescription
credentialIdstringyesVault credential id

No output schema declared.

No examples provided.

screen_tokens ~207

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.

NameTypeReqDescription
candidateLimitnumberOverride merged candidate cap, max 100
chainsarrayyes
deepOptInbooleanRequired when mode=deep
includeUnverifiedbooleanDefault false; unverified results are labeled and need execution opt-in
minMarketCapUsdnumberDefault 5000000
minVolume1dUsdnumberDefault 50000
modestring
sortsarrayDefaults to gainers_30d + volume_1d. Add gainers_1d, gainers_90d, gainers_365d, or market_cap when requested.
verifiedOnlybooleanDefault true

No output schema declared.

No examples provided.

search_credentials ~156

Parent-treasury key-centric credential search (treasury credential + keys:manage + wallets:read). Complements search_vaults. Never returns raw bearer keys.

NameTypeReqDescription
accessstring
credentialKindstring
cursorstringPagination cursor
externalCustomerIdstringExact external customer id
limitnumberPage size (default 50, max 100)
metadataKeystringExact metadata key (requires metadataValue)
metadataValuestringExact metadata value (requires metadataKey)
querystringFree-text search
statusstring
walletIdstringFilter by vault wallet id

No output schema declared.

No examples provided.

search_vaults ~175

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.

NameTypeReqDescription
chainIdstringExact chain filter
credentialAccessstringFilter by linked credential access mode
credentialStatusstringFilter by linked credential status
cursorstringPagination cursor from prior response
externalCustomerIdstringExact external customer id
limitnumberPage size (default 50, max 100)
metadataKeystringExact metadata key (requires metadataValue)
metadataValuestringExact metadata value (requires metadataKey)
querystringFree-text search

No output schema declared.

No examples provided.

update_cosigner_rules ~138

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).

NameTypeReqDescription
challengeIdstringGovernance challengeId (only needed when weakening rules)
rulesarrayyes
walletSignaturestringFunding-wallet signature over the challenge message

No output schema declared.

No examples provided.

update_vault_credential ~94

Atomically replace a vault credential's name, access mode, grants, and expiry (treasury + keys:manage). Revoked credentials cannot be updated.

NameTypeReqDescription
accessstringyes
credentialIdstringyesVault credential id
expiresAtstringISO-8601 expiry, or null to clear
namestringyes
vaultGrantsarrayyes

No output schema declared.

No examples provided.

update_wallet_metadata ~79

Set metadata tags on a wallet (flat string key/value pairs; replaces existing tags). Not a money-moving action.

NameTypeReqDescription
accountIdstringyesWallet id from list_wallets
metadataobjectyesFull metadata object, e.g. { "customer_id": "cust_123", "agent_id": "ag_1" }

No output schema declared.

No examples provided.

validate_payout_manifest ~75

Preview batch payroll/payout (max 50 lines). Each line: { recipientId, amountUsdc, memo? }. All recipients must be allowlisted, same chain as fromWalletId, and past cooldown.

NameTypeReqDescription
fromWalletIdstringyesWallet id from list_wallets
linesarrayyes

No output schema declared.

No examples provided.

validate_recipient_manifest ~55

Preview a batch recipient import (max 50 rows). Each row: { address, chainId, nickname? }. Returns ready_new, already_exists, or invalid per line. Read-only.

NameTypeReqDescription
recipientsarrayyes

No output schema declared.

No examples provided.

Common questions

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.