Forge Treasury

Non-custodial USDC yield vaults on Base mainnet with 9 MCP tools for AI agent treasury.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
83%
Naming quality
91%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,090Tokens (tool definitions)
~770 BTypical response size
Moderate attention impact (0.85% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "treasury": {
      "url": "https://mcp.forgetreasury.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.forgetreasury.com/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪deposit(amount, agentAddress, profile)

Deposit USDC into a Forge Treasury vault on Base. Returns calldata for the agent wallet to sign. The agent must approve USDC to the vault contract first. Mints yield-bearing fUSDC shares. Conservative deposits Core only (single leg). Balanced returns two legs (50% Core / 50% Middle). Aggressive is not live. Gas: Core 4M, Middle 6M+ on mainnet.

Input Schema

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "string",
      "description": "USDC amount to deposit (human-readable, e.g. \"1000\" for 1000 USDC)"
    },
    "agentAddress": {
      "type": "string",
      "description": "Agent wallet address that will receive vault shares"
    },
    "profile": {
      "type": "string",
      "enum": [
        "conservative",
        "balanced",
        "aggressive"
      ],
      "description": "Strategy id (legacy \"profile\" name). conservative → Core vault. balanced → Core + Middle legs (50/50). aggressive → STRATEGY_NOT_LIVE. Defaults to \"conservative\"."
    }
  },
  "required": [
    "amount",
    "agentAddress"
  ]
}
⚪withdraw(shares, agentAddress)

Withdraw from the Forge Treasury vault by redeeming shares. Returns calldata for the agent wallet. A 15% performance fee may apply on profits above the high water mark.

Input Schema

{
  "type": "object",
  "properties": {
    "shares": {
      "type": "string",
      "description": "Vault share amount to redeem (raw uint256 string from get_balance)"
    },
    "agentAddress": {
      "type": "string",
      "description": "Agent wallet address (owner of shares)"
    }
  },
  "required": [
    "shares",
    "agentAddress"
  ]
}
🟢get_balance(agentAddress)

Get an agent's Forge vault balance: shares held and equivalent USDC value. Read-only, no transaction needed.

Input Schema

{
  "type": "object",
  "properties": {
    "agentAddress": {
      "type": "string",
      "description": "Agent wallet address"
    }
  },
  "required": [
    "agentAddress"
  ]
}
🟢get_current_apy(agentAddress, profile)

Get the blended target APY for a Forge profile: base USDC yield + FORGE boost. Returns structured JSON with profile metadata, target allocation by adapter, and a disclaimer. Format: "X% USDC + Y% FORGE (blended target)". APY is a blended target across conservative allocation weights; not a guarantee. Sepolia uses MockYieldAdapter until mainnet adapters are live. Conservative deposits Core only (single leg). Balanced returns two legs (50% Core / 50% Middle). Aggressive is not live. Gas: Core 4M, Middle 6M+ on mainnet.

Input Schema

{
  "type": "object",
  "properties": {
    "agentAddress": {
      "type": "string",
      "description": "Optional agent address for personalized boost calculation"
    },
    "profile": {
      "type": "string",
      "enum": [
        "conservative",
        "balanced",
        "aggressive"
      ],
      "description": "Risk profile. MVP: \"conservative\" only. balanced/aggressive return PROFILE_NOT_LIVE. Defaults to \"conservative\"."
    }
  }
}
⚪simulate_deposit(amount, profile)

Project expected returns for a USDC deposit over 30, 90, and 365 days using the blended target APY. Use for agent reasoning before depositing. APY is a blended target across conservative allocation weights; not a guarantee. Sepolia uses MockYieldAdapter until mainnet adapters are live.

Input Schema

{
  "type": "object",
  "properties": {
    "amount": {
      "type": "string",
      "description": "USDC amount to simulate (e.g. \"10000\")"
    },
    "profile": {
      "type": "string",
      "enum": [
        "conservative",
        "balanced",
        "aggressive"
      ],
      "description": "Risk profile to simulate. MVP: \"conservative\" only. Defaults to \"conservative\". balanced/aggressive return PROFILE_NOT_LIVE."
    }
  },
  "required": [
    "amount"
  ]
}
🟢get_vault_stats

Get live Forge vault TVL on Base (conservative profile in MVP). Read-only.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢list_profiles

List Forge vaults (Core/Middle/Infra) and agent strategies (Conservative/Balanced/Aggressive). Mainnet: Core and Middle vaults live; conservative and balanced strategies live.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_forge_rewards(agentAddress)

[Advanced] Get claimable $FORGE reward balance for an agent from the weekly emissions distributor.

Input Schema

{
  "type": "object",
  "properties": {
    "agentAddress": {
      "type": "string",
      "description": "Agent wallet address"
    }
  },
  "required": [
    "agentAddress"
  ]
}
⚪claim_forge(epoch, agentAddress, amount, proof)

[Advanced] Build calldata to claim weekly $FORGE rewards. Proof is fetched from forgetreasury.com/rewards when omitted.

Input Schema

{
  "type": "object",
  "properties": {
    "epoch": {
      "type": "string",
      "description": "Reward epoch number"
    },
    "agentAddress": {
      "type": "string",
      "description": "Agent wallet address"
    },
    "amount": {
      "type": "string",
      "description": "FORGE amount to claim (raw wei string). Optional if manifest has allocation."
    },
    "proof": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Merkle proof array (bytes32 hex strings). Optional — auto-fetched from manifest."
    }
  },
  "required": [
    "epoch",
    "agentAddress"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools
verifiedversion not recorded9 tools