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