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

MCP list_profiles: Conservative vs Balanced

How Forge MCP list_profiles maps strategies to vaults, why balanced returns PROFILE_NOT_LIVE, and the agent bootstrap sequence.

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

Forge Treasury smart contracts are unaudited. Yield is variable and not guaranteed. 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. MVP: `conservative` is live (routes to Core vault). `balanced` and `aggressive` return `PROFILE_NOT_LIVE` on deposit-family tools until Middle adapters execute and Phase 2 multi-vault calldata ships.

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 are unaudited. 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 bookDeployed; adapters timelock pending
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: timelock_scheduled`, Middle address, pending adapter list.
  • vaults.infra — `status: planned`, no address.
  • strategies.conservative — `status: live`, deposit routes to Core.
  • strategies.balanced — `status: planned`, cross-vault weights informational.
  • strategies.aggressive — `status: planned`, requires Infra + Middle live.

Conservative — the only live deposit profile (MVP)

`profile: "conservative"` (default when omitted) resolves to Core vault calldata on Base mainnet. One USDC approval, one `deposit` transaction, fUSDC shares. Adapter book: Spark ~60%, Morpho ~25%, Aave ~15% Phase 1 — verify live bps via `get_vault_stats` after P2-C0 timelock. Agents using automated sweeps should pin `conservative` until `list_profiles` reports balanced `status: live`.

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

Balanced — planned and PROFILE_NOT_LIVE

Balanced is not a vault — it is a strategy describing splits across Core and Middle (plus future Infra). Middle vault (`0x0cAB46658aFD0F01018117475e17CAE439E36C5D`) is deployed on mainnet but `adapterCount` may be zero until owner executes timelock adapter sets (~May 27, 2026). Until Phase 2 MCP ships multi-transaction calldata, calling `deposit({ profile: "balanced" })`, `simulate_deposit`, or `get_current_apy` with balanced returns structured error:

Error shape: `isError: true`, `code: "PROFILE_NOT_LIVE"`, message explaining Balanced is cross-vault strategy with Middle timelock pending. Docs link embedded in server response.

Agents must not interpret PROFILE_NOT_LIVE as a transient RPC glitch — retrying with higher gas wastes user time. Correct responses: (1) fall back to conservative Core-only deposit with user consent; (2) wait and poll `list_profiles` after announced timelock; (3) manually split deposits using separate Core and Middle calldata once Middle adapters are live (advanced — see Balanced strategy).

PROFILE_NOT_LIVE vs PROFILE_UNKNOWN

CodeTriggerAgent should
PROFILE_NOT_LIVEbalanced / aggressive on gated toolsStop deposit; offer conservative or wait
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 Balanced 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 = plannedPROFILE_NOT_LIVE — wait or manual split post-timelock
Max ETH beta + infraaggressive = plannedPROFILE_NOT_LIVE — not available
Unknown profile nameN/APROFILE_UNKNOWN — list_profiles first
When list_profiles steers agent policy

Phase 2 expectations

When Middle adapters pass timelock and MCP Phase 2 ships, `list_profiles` will flip `balanced` → live and deposit tools will return multi-tx calldata arrays — one approve + deposit per vault leg. Until then, documentation and MCP agree: Balanced weights in `list_profiles` are informational. Do not automate Balanced deposits based on target bps alone.

R4-safe user messaging

  • When Balanced is not live, say "strategy not yet available" — not "coming soon with X% APY".
  • Never imply Middle deposits earn yield before adapters execute — idle USDC risk.
  • 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 while Balanced is not live?

Middle contract accepts USDC, but with zero adapters funds may not route to yield legs until timelock executes. Core leg works independently. See Balanced strategy timelock-pending notes.

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. MVP: `conservative` live → Core vault fUSDC. `balanced` / `aggressive` → PROFILE_NOT_LIVE on deposit tools until Phase 2. Handle errors explicitly; no retry spam. 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. Unaudited contracts; early-stage TVL. R4: no guaranteed yield or "live Balanced APY" claims while PROFILE_NOT_LIVE. 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 live → Core. Balanced returns PROFILE_NOT_LIVE until Phase 2. Strategies are not vaults. https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced

Twitter / X

Forge MCP list_profiles: conservative = live Core deposits. balanced = PROFILE_NOT_LIVE until Middle timelock. 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 maps to the live Core vault; Balanced returns PROFILE_NOT_LIVE until Middle adapters execute. This guide covers vault vs strategy canon and structured error handling. https://forgetreasury.com/learn/mcp-list-profiles-conservative-balanced