← Learn
Liveproduct· 5 min read· #mcp#profiles#conservative#balanced

MCP list_profiles: Conservative vs Balanced

How Forge MCP list_profiles maps strategies to vaults — Conservative and Balanced live, aggressive gated.

Last updated: May 28, 2026 · Published 2026-05-26

Forge Treasury smart contracts completed an external security review (May 2026). Yield is variable and not guaranteed. Residual risk remains — read Risks & Disclosures before depositing USDC or integrating MCP tools.

Forge MCP's `list_profiles` tool is the runtime source of truth for which strategies (Conservative · Balanced · Aggressive) and vaults (Core · Middle · Infra) are live on your connected chain. Agents should call it at session start — before `deposit`, `simulate_deposit`, or `get_current_apy` — instead of hard-coding profile names from docs. `conservative` and `balanced` are live on mainnet. `aggressive` returns `PROFILE_NOT_LIVE` until Infra vault deploys.

Profile names are strategy labels, not separate vault contracts. "Balanced vault" does not exist on Basescan — only Core, Middle, and Infra `ForgeVault` addresses. Misunderstanding this causes agents to retry failed deposits. Forge contracts completed external security review (May 2026). Read Risks & Disclosures.

Vaults vs strategies (v1.3 canon)

Product v1.3 separates on-chain vault buckets from agent strategies. Vaults are ERC-4626 contracts holding USDC; strategies are cross-vault allocation guidance telling an agent how to split deposits. Legacy MCP input `profile: "conservative"` maps to the Conservative strategy → 100% Core vault today. Balanced targets 50% Core / 40% Middle / 10% Infra — with Infra weight redirecting to Middle until Infra deploys. Full canon: Conservative and Balanced guides.

100%
  • Core: 100%
Default strategy weights across Core, Middle, and Infra vaults — informational until Phase 2 multi-tx deposits ship.
TermWhat it isOn-chain?
Core vaultForgeVault for stable yield adaptersYes — 0x2C9a3922…193B mainnet
Middle vaultLST / avUSDC / Moonwell bookYes — adapters live May 2026
Infra vaultVirtuals / Venice (planned)Not deployed — May 2026
Conservative strategy100% Core allocation guidanceNo — policy label
Balanced strategy50/40/10 cross-vault guidanceNo — policy label
Concept map — avoid naming confusion

What list_profiles returns

Calling `list_profiles` via MCP (`tools/call`) yields structured JSON with `vaults`, `strategies`, and legacy `profiles` arrays for backward compatibility. Each entry includes `id`, `status`, target allocation bps/pct, vault addresses where deployed, and adapter book summaries. Treat MCP response as authoritative over static docs — timelock execution changes live state without redeploying marketing pages.

  • vaults.core — `status: live`, Core address, Spark/Morpho/Aave adapter targets.
  • vaults.middle — `status: live`, Middle address, four active adapters.
  • vaults.infra — `status: planned`, no address.
  • strategies.conservative — `status: live`, deposit routes to Core.
  • strategies.balanced — `status: live`, returns Core + Middle deposit legs.
  • strategies.aggressive — `status: planned`, requires Infra vault.

Conservative — Core-only live deposit

`profile: "conservative"` (default when omitted) resolves to Core vault calldata on Base mainnet. One USDC approval, one `deposit` transaction, fUSDC shares. Adapter book: five Core legs — verify live bps via `get_vault_stats`.

FieldValue
profile / strategy idconservative
Target vaultCore — 0x2C9a3922b426005B979FDD1A8F43Eb61B309193B
Share tokenfUSDC
list_profiles statuslive
deposit toolReturns calldata — sign locally
Conservative MCP parameters (Base mainnet)

Balanced — live with two deposit legs

Balanced is not a vault — it is a strategy describing splits across Core and Middle (plus future Infra). Middle vault (`0x0cAB46658aFD0F01018117475e17CAE439E36C5D`) is live with four adapters. `deposit({ profile: "balanced" })` returns two legs — Core + Middle calldata (50/50 effective with Infra redirect). Agents sign two approve + deposit transactions from the user EOA. See Balanced two-deposit guide.

Balanced success shape: `legs[]` with per-vault approve + deposit calldata. Still two on-chain txs — not atomic. Multi-vault withdraw/balance remains Phase 2b.

Agents must not retry aggressive deposits — `aggressive` returns `PROFILE_NOT_LIVE` until Infra vault deploys. For Balanced, parse `legs[]` and sign each returned calldata from the user EOA.

PROFILE_NOT_LIVE vs PROFILE_UNKNOWN

CodeTriggerAgent should
PROFILE_NOT_LIVEaggressive on gated toolsStop deposit; offer conservative or balanced
PROFILE_UNKNOWNTypo e.g. "conservativ"Call list_profiles; retry valid id
PROFILE_NO_VAULTInternal misconfig / wrong chainCheck MCP chain env; read health
MCP profile error codes — agent handling

Tools that accept `profile` and enforce gating include `deposit`, `withdraw` (when strategy-aware), `simulate_deposit`, and `get_current_apy`. `list_profiles` and `get_vault_stats` remain callable regardless — use them for discovery.

Recommended agent bootstrap sequence

  1. Connect MCP (production `mcp.forgetreasury.com` or local dev).
  2. Call `list_profiles` — cache `strategies.*.status` with TTL (e.g., 1 hour, refresh after timelock dates).
  3. If user requests Aggressive and status ≠ live, explain PROFILE_NOT_LIVE before any approve tx.
  4. For live conservative: `get_vault_stats` → `simulate_deposit` → approve → `deposit`.
  5. Log profile status in agent telemetry for support replay.

Conservative vs Balanced — decision table

User intentlist_profiles checkMVP action
Stable USDC yield onlyconservative = livedeposit(profile=conservative)
50/50 Core + Middlebalanced = livedeposit(balanced) → two legs
Max ETH beta + infraaggressive = plannedPROFILE_NOT_LIVE — not available
Unknown profile nameN/APROFILE_UNKNOWN — list_profiles first
When list_profiles steers agent policy

Phase 2b expectations

Balanced deposit legs shipped May 2026. Phase 2b may add multi-vault `get_balance` / `withdraw`. Until then, Balanced weights in `list_profiles` are defaults — verify on Stats before large sweeps.

R4-safe user messaging

  • When Aggressive is not live, say "strategy not yet available" — not "coming soon with X% APY".
  • Never imply Middle deposits earn yield before adapters execute — verify adapterCount on Stats.
  • Link Risks & Disclosures when explaining why agent fell back to Conservative.
  • Separate FORGE emissions from vault yield in any profile comparison (emissions guide).

Cursor and framework integrators

Same semantics across Cursor, LangChain, and OpenAI Agents SDK — MCP is the contract. See Cursor tutorial, LangChain guide, OpenAI Agents SDK guide. Docs error-handling table mirrors PROFILE_NOT_LIVE rows.

Frequently asked questions

Should I cache list_profiles forever?

No. Timelock events change adapter counts and may flip strategy status. Refresh after governance milestones and before large automated sweeps.

Can I deposit to Middle directly without using Balanced?

Middle contract accepts USDC with four live adapters. See Balanced strategy.

Does list_profiles replace reading /stats?

Complementary. MCP for agent runtime flags; Stats for human dashboards and subgraph-indexed history. Cross-check share price on both.

Summary for agents

Call `list_profiles` first. `conservative` live → Core fUSDC. `balanced` live → two deposit legs. `aggressive` → PROFILE_NOT_LIVE. Handle errors explicitly. Strategies ≠ vaults. Verify on Stats. Conservative · Balanced · MCP-native treasury · Risks.

Educational MCP reference — not investment advice. Profile weights are informational defaults, not personalized recommendations. Externally reviewed contracts; early-stage TVL. R4: no guaranteed yield headlines. Principal loss possible.

Share this article

Draft copy for social posts — review before publishing. URL: https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced

Open Graph / preview card

Forge MCP list_profiles explained Conservative + Balanced live on mainnet. Aggressive returns PROFILE_NOT_LIVE. Strategies are not vaults. https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced

Twitter / X

Forge MCP list_profiles: conservative + balanced live on Base. aggressive = PROFILE_NOT_LIVE. Call it first: https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced

LinkedIn

Agent integrators should bootstrap every Forge MCP session with list_profiles — Conservative and Balanced are live on mainnet; Aggressive returns PROFILE_NOT_LIVE until Infra deploys. Vault vs strategy canon and error handling: https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced