{
  "run_id": "20260531T123930.714722000Z",
  "mode": "spec",
  "started_at": "2026-05-31T12:38:59.309201+00:00",
  "finished_at": "2026-05-31T12:39:30.714650+00:00",
  "spec_path": "bin/eval/specs/pendle/pendle_requires_approx_params.json",
  "passed": true,
  "git_commit": "5b02660942391bc7ae86c5cbb05e33f4c549266f",
  "git_dirty": true,
  "story": {
    "run_id": "20260531T123930.714722000Z",
    "story_id": "pendle_requires_approx_params",
    "user_story": "Alice wants to buy PT with USDC on Pendle, but no Pendle API quote or ApproxParams are available.",
    "passed": true,
    "warnings": [
      {
        "label": "no_tool_errors",
        "severity": "warning",
        "detail": "tool error envelope(s) observed for: Find Pendle API for ApproxParams",
        "observed": {
          "kind": "tool_errors",
          "failed_tools": [
            {
              "turn": 0,
              "tool": "brave_search",
              "topic": "Find Pendle API for ApproxParams",
              "content_preview": "{\n  \"error\": {\n    \"code\": \"tool_call_failed\",\n    \"message\": \"Toolset error: ToolCallError: ToolCallError: Brave Search API error 429 Too Many Requests: {\\\"type\\\":\\\"ErrorResponse\\\",\\\"error\\\":{\\\"id\\\":\\\"b12fa83c-8c97-496d-b742-70ff8c27ab92\\\",\\\"status\\\":429,\\\"detail\\\":\\\"Request rate limit exceeded for plan\\\",\\\"meta\\\":{\\\"plan\\\":\\\"Free\\\",\\\"rate_limit\\\":1,\\\"rate_current\\\":1,\\\"quota_limit\\\":2000,\\\"quota_current\\\":126,\\\"org_rate_limit\\\":null,\\\"org_rate_current\\\":0,\\\"component\\\":\\\"rate_limiter\\\"},\\\"code\\\":\\\"RATE_LIMITED\\\"},\\\"time\\\":1780231161}\"\n  }\n}"
            }
          ]
        }
      }
    ],
    "model": "claude-haiku-4-5",
    "chain_id": 1,
    "git_commit": "5b02660942391bc7ae86c5cbb05e33f4c549266f",
    "git_dirty": true,
    "total_turns": 1,
    "total_tool_calls": 8,
    "total_responses": 12,
    "activated_skills": [
      "pendle"
    ],
    "failed_assertions": [],
    "budget_summary": {
      "total": 1,
      "exceeded": 0,
      "required_failures": 0,
      "warning_failures": 0
    },
    "usage": {
      "input_tokens": 34484,
      "output_tokens": 1690,
      "total_tokens": 36174,
      "cached_input_tokens": 31810,
      "cache_creation_input_tokens": 0,
      "visible_output_tokens": 1690,
      "reasoning_output_tokens": 0,
      "tool_call_count": 8,
      "actual_events": 1,
      "diagnostic_events": 0,
      "aomi_cost_credits": 1.4305,
      "user_charged_credits": 1.4305,
      "credits": 1.4305
    },
    "transcript_previews": [
      {
        "sender": "user",
        "content": "Buy 100 USDC worth of PT on Pendle from Alice on Ethereum.",
        "tool": null,
        "tool_topic": null,
        "tool_result_preview": null
      },
      {
        "sender": "assistant",
        "content": "\nThe user wants to buy 100 USDC worth of PT (principal tokens) on Pendle from Alice on Ethereum. Let me break down what I need to do:\n\n1. The user is connected to wallet 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 (Alice) on Ethereum mainnet (chain ID 1)\n2. They want to buy PT tokens using 100 USDC\n3. This is a Pendle protocol action\n\nFirst, I should:\n- Activate the Pendle skill to get protocol-spe... to ensure she has 100 USDC\n- Understand what PT token they want to buy (Pendle has multiple markets)\n- Get the Pendle contract details and available markets\n- Build the transaction to buy PT\n\nLet me start by activating the Pendle skill and gathering context.\nI'll help you buy 100 USDC worth of PT on Pendle. Let me start by activating the Pendle skill and gathering the current on-chain context.",
        "tool": null,
        "tool_topic": null,
        "tool_result_preview": null
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "activate_skills",
        "tool_topic": "activate_skills",
        "tool_result_preview": "{\n  \"activated\": [\n    \"pendle\"\n  ],\n  \"rejected\": [\n    [\n      \"common_erc20\",\n      \"invalid\"\n    ]\n  ],\n  \"applied_scope\": \"current_serve_cycle\"\n}"
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "get_time_and_onchain_context",
        "tool_topic": "Gather Ethereum mainnet context for Pendle PT purchase",
        "tool_result_preview": "{\n  \"chain_name\": \"sim-ethereum\",\n  \"chain_id\": 1,\n  \"rpc_endpoint\": \"http://127.0.0.1:60734\",\n  \"current_time_unix\": 1780231144,\n  \"current_time_iso\": \"2026-05-31T12:39:04.712606+00:00\",\n  \"block_number\": 25215405,\n  \"gas_price_wei\": \"1101874392\",\n  \"supported_chains\": [\n    {\n      \"name\": \"sim-ethereum\",\n      \"chain_id\": 1\n    },\n    {\n      \"name\": \"sim-ethereum\",\n      \"chain_id\": 1\n    }\n  ]\n}"
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "get_account_info",
        "tool_topic": "Check Alice's account balance on Ethereum",
        "tool_result_preview": "{\n  \"address\": \"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266\",\n  \"balance_wei\": \"10000000000000000000000\",\n  \"balance_eth\": \"10000\",\n  \"nonce\": 6436\n}"
      },
      {
        "sender": "assistant",
        "content": "\nThe user wants to buy 100 USDC worth of PT (Principal Token) on Pendle from Alice on Ethereum. Let me break down what I need to do:\n\n1. Alice is the connected wallet (0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266)\n2. She has 10,000 ETH on Ethereum mainnet (simulated)\n3. I need to:\n   - Find a Pendle market to buy PT from\n   - Check USDC balance and allowance\n   - Get ApproxParams from Pendle API\n   .../api-v2.pendle.finance/sdk/api) — I cannot hardcode or guess these values.\n\nFirst, I need to:\n1. Get USDC balance and allowance\n2. Search for available Pendle markets to understand which PT to buy\n3. Fetch ApproxParams from Pendle API\n4. Build the swap transaction\nI'll help you buy 100 USDC worth of PT on Pendle. Let me start by checking your USDC balance and finding an available Pendle market.",
        "tool": null,
        "tool_topic": null,
        "tool_result_preview": null
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "encode_and_call",
        "tool_topic": "Check USDC balance for Alice",
        "tool_result_preview": "{\n  \"success\": true,\n  \"result\": \"0x00000000000000000000000000000000000000000000000000000002540be400\",\n  \"revert_reason\": null,\n  \"tx\": {\n    \"from\": \"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\",\n    \"to\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n    \"value_wei\": \"0\",\n    \"value_eth\": \"0\",\n    \"input\": \"0x70a08231000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266\",\n    \"chain_id\": 1\n  },\n  \"result_decoded\": {\n    \"kind\": \"single_abi_word\",\n    \"raw_hex\": \"0x00000000000000000000000000000000000000000000000000000002540be400\",\n    \"decoded\": {\n      \"type\": \"uint256\",\n      \"decoded\": \"10000000000\",\n      \"as_bool\": null,\n      \"as_address\": \"0x00000000000000000000000000000002540be400\"\n    }\n  }\n}"
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "encode_and_call",
        "tool_topic": "Check USDC allowance to PendleRouter",
        "tool_result_preview": "{\n  \"success\": true,\n  \"result\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n  \"revert_reason\": null,\n  \"tx\": {\n    \"from\": \"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\",\n    \"to\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n    \"value_wei\": \"0\",\n    \"value_eth\": \"0\",\n    \"input\": \"0xdd62ed3e000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000888888888889758f76e7103c6cbf23abbf58f946\",\n    \"chain_id\": 1\n  },\n  \"result_decoded\": {\n    \"kind\": \"single_abi_word\",\n    \"raw_hex\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n    \"decoded\": {\n      \"type\": \"uint256\",\n      \"decoded\": \"0\",\n      \"as_bool\": false,\n      \"as_address\": \"0x0000000000000000000000000000000000000000\"\n    }\n  }\n}"
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "brave_search",
        "tool_topic": "Find active Pendle PT markets",
        "tool_result_preview": "Found 5 results:\n\n1. Pendle Price, PENDLE to USD, Research, News & Fundraising | Messari\n   URL: https://messari.io/project/pendle\n   Pendle isolates risk in DeFi by splitting yield-bearing tokens into principal and yield tokens, preventing protocol-wide contagion unlike some other platforms 4. This mechanism allows Principal Token (PT) holders to secure guaranteed yields, such as <strong>3% APY o...laim it, the protocol automatically converts the underlying into stablecoins, collects the associated yield as revenue, and redistributes it to vePENDLE holders. To ensure reliable pricing of its markets, Pendle relies on its own on-chain oracles. Their role is to determine the price of Principal Tokens (PT) and, by extension, the PT/SY pools, while remaining resistant to manipulation attempts."
      },
      {
        "sender": "assistant",
        "content": "\nThe user wants to buy 100 USDC worth of PT on Pendle. Let me analyze what I have:\n\n1. Alice's account: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\n2. Alice has 10,000 USDC (10000000000 in 6 decimals = 10,000 USDC)\n3. Alice has 0 allowance to PendleRouter (0x888888888889758F76e7103c6CbF23ABbF58F946)\n4. I'm on Ethereum mainnet (chain 1)\n\nThe workflow needs:\n1. Find a Pendle PT market to buy into\n2. ...e Pendle API to get ApproxParams for a common market.\n\n\nI have Alice's account ready with 10,000 USDC available. To proceed with buying 100 USDC worth of PT, I need to:\n\n1. Identify a specific Pendle PT market\n2. Get ApproxParams from the Pendle API for that market\n3. Approve USDC to the router\n4. Execute the swap\n\nLet me search for a specific market address and fetch the required ApproxParams:",
        "tool": null,
        "tool_topic": null,
        "tool_result_preview": null
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "brave_search",
        "tool_topic": "Find stETH PT market address on Pendle",
        "tool_result_preview": "Found 3 results:\n\n1. Pendle: PT-stETH-25DEC25/SY-stETH Market Token (0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2) | Address 0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2 | Etherscan\n   URL: https://etherscan.io/address/0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2\n   This is guaranteed by address(0) &amp; address(this) check in each updateForTwo function */ contract PendleMarket is PendleERC20Permit, Pen...uot;},{&quot;inputs&quot;:[],&quot;name&quot;:&quot;MarketExpired&quot;,&quot;type&quot;:&quot;error&quot;},{&quot;inputs&quot;:[{&quot;internalType&quot;:&quot;int256&quot;\n\n3. Pendle - Liberating Yield\n   URL: https://www.pendle.finance/\n   The world&#x27;s largest crypto yield trading platform. Trade spot yield, earn fixed yield, or long yield with leverage — no lockups, no liquidation risk."
      },
      {
        "sender": "assistant",
        "content": "",
        "tool": "brave_search",
        "tool_topic": "Find Pendle API for ApproxParams",
        "tool_result_preview": "{\n  \"error\": {\n    \"code\": \"tool_call_failed\",\n    \"message\": \"Toolset error: ToolCallError: ToolCallError: Brave Search API error 429 Too Many Requests: {\\\"type\\\":\\\"ErrorResponse\\\",\\\"error\\\":{\\\"id\\\":\\\"b12fa83c-8c97-496d-b742-70ff8c27ab92\\\",\\\"status\\\":429,\\\"detail\\\":\\\"Request rate limit exceeded for plan\\\",\\\"meta\\\":{\\\"plan\\\":\\\"Free\\\",\\\"rate_limit\\\":1,\\\"rate_current\\\":1,\\\"quota_limit\\\":2000,\\\"quota_current\\\":126,\\\"org_rate_limit\\\":null,\\\"org_rate_current\\\":0,\\\"component\\\":\\\"rate_limiter\\\"},\\\"code\\\":\\\"RATE_LIMITED\\\"},\\\"time\\\":1780231161}\"\n  }\n}"
      },
      {
        "sender": "assistant",
        "content": "\nThe user wants to buy 100 USDC worth of PT on Pendle. Let me assess what I have so far:\n\n1. Alice's account: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\n2. USDC balance: 10,000,000,000 USDC (10 billion in 6 decimals = 10,000 USDC in human terms)\n3. USDC allowance to PendleRouter: 0 (needs approval)\n4. Chain: Ethereum mainnet (chain_id 1)\n5. PendleRouter: 0x888888888889758F76e7103c6CbF23ABbF58F946\n...oded** — they must be fetched from the Pendle API at `https://api-v2.pendle.finance/sdk/api` for each market and operation. Without them, the transaction will revert or cause severe slippage.\n\nOnce you specify the PT market, I'll:\n1. Approve 100 USDC to the PendleRouter\n2. Fetch ApproxParams from the Pendle API\n3. Build and simulate the swap\n4. Execute it\n\nWhich PT market would you like to buy?",
        "tool": null,
        "tool_topic": null,
        "tool_result_preview": null
      }
    ],
    "tool_previews": [
      {
        "turn": 0,
        "tool": "activate_skills",
        "topic": "activate_skills",
        "arguments": {
          "skill_ids": [
            "pendle",
            "common_erc20"
          ]
        },
        "result_preview": "{\n  \"activated\": [\n    \"pendle\"\n  ],\n  \"rejected\": [\n    [\n      \"common_erc20\",\n      \"invalid\"\n    ]\n  ],\n  \"applied_scope\": \"current_serve_cycle\"\n}"
      },
      {
        "turn": 0,
        "tool": "get_time_and_onchain_context",
        "topic": "Gather Ethereum mainnet context for Pendle PT purchase",
        "arguments": {
          "topic": "Gather Ethereum mainnet context for Pendle PT purchase"
        },
        "result_preview": "{\n  \"chain_name\": \"sim-ethereum\",\n  \"chain_id\": 1,\n  \"rpc_endpoint\": \"http://127.0.0.1:60734\",\n  \"current_time_unix\": 1780231144,\n  \"current_time_iso\": \"2026-05-31T12:39:04.712606+00:00\",\n  \"block_number\": 25215405,\n  \"gas_price_wei\": \"1101874392\",\n  \"supported_chains\": [\n    {\n      \"name\": \"sim-ethereum\",\n      \"chain_id\": 1\n    },\n    {\n      \"name\": \"sim-ethereum\",\n      \"chain_id\": 1\n    }\n  ]\n}"
      },
      {
        "turn": 0,
        "tool": "get_account_info",
        "topic": "Check Alice's account balance on Ethereum",
        "arguments": {
          "address": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
          "chain_id": 1,
          "include_tx_history": false,
          "history_limit": 0,
          "history_offset": 0,
          "topic": "Check Alice's account balance on Ethereum"
        },
        "result_preview": "{\n  \"address\": \"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266\",\n  \"balance_wei\": \"10000000000000000000000\",\n  \"balance_eth\": \"10000\",\n  \"nonce\": 6436\n}"
      },
      {
        "turn": 0,
        "tool": "encode_and_call",
        "topic": "Check USDC balance for Alice",
        "arguments": {
          "function_signature": "balanceOf(address)",
          "arguments": [
            "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"
          ],
          "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
          "value": "0",
          "topic": "Check USDC balance for Alice"
        },
        "result_preview": "{\n  \"success\": true,\n  \"result\": \"0x00000000000000000000000000000000000000000000000000000002540be400\",\n  \"revert_reason\": null,\n  \"tx\": {\n    \"from\": \"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\",\n    \"to\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n    \"value_wei\": \"0\",\n    \"value_eth\": \"0\",\n    \"input\": \"0x70a08231000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266\",\n    \"chain_id\": 1\n  },\n  \"result_decoded\": {\n    \"kind\": \"single_abi_word\",\n    \"raw_hex\": \"0x00000000000000000000000000000000000000000000000000000002540be400\",\n    \"decoded\": {\n      \"type\": \"uint256\",\n      \"decoded\": \"10000000000\",\n      \"as_bool\": null,\n      \"as_address\": \"0x00000000000000000000000000000002540be400\"\n    }\n  }\n}"
      },
      {
        "turn": 0,
        "tool": "encode_and_call",
        "topic": "Check USDC allowance to PendleRouter",
        "arguments": {
          "function_signature": "allowance(address,address)",
          "arguments": [
            "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
            "0x888888888889758F76e7103c6CbF23ABbF58F946"
          ],
          "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
          "value": "0",
          "topic": "Check USDC allowance to PendleRouter"
        },
        "result_preview": "{\n  \"success\": true,\n  \"result\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n  \"revert_reason\": null,\n  \"tx\": {\n    \"from\": \"0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266\",\n    \"to\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n    \"value_wei\": \"0\",\n    \"value_eth\": \"0\",\n    \"input\": \"0xdd62ed3e000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000888888888889758f76e7103c6cbf23abbf58f946\",\n    \"chain_id\": 1\n  },\n  \"result_decoded\": {\n    \"kind\": \"single_abi_word\",\n    \"raw_hex\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n    \"decoded\": {\n      \"type\": \"uint256\",\n      \"decoded\": \"0\",\n      \"as_bool\": false,\n      \"as_address\": \"0x0000000000000000000000000000000000000000\"\n    }\n  }\n}"
      },
      {
        "turn": 0,
        "tool": "brave_search",
        "topic": "Find active Pendle PT markets",
        "arguments": {
          "query": "Pendle markets PT tokens available 2026",
          "count": 5,
          "offset": 0,
          "lang": "en",
          "country": "US",
          "safesearch": "moderate",
          "freshness": "month",
          "topic": "Find active Pendle PT markets"
        },
        "result_preview": "Found 5 results:\n\n1. Pendle Price, PENDLE to USD, Research, News & Fundraising | Messari\n   URL: https://messari.io/project/pendle\n   Pendle isolates risk in DeFi by splitting yield-bearing tokens into principal and yield tokens, preventing protocol-wide contagion unlike some other platforms 4. This mechanism allows Principal Token (PT) holders to secure guaranteed yields, such as <strong>3% APY o...laim it, the protocol automatically converts the underlying into stablecoins, collects the associated yield as revenue, and redistributes it to vePENDLE holders. To ensure reliable pricing of its markets, Pendle relies on its own on-chain oracles. Their role is to determine the price of Principal Tokens (PT) and, by extension, the PT/SY pools, while remaining resistant to manipulation attempts."
      },
      {
        "turn": 0,
        "tool": "brave_search",
        "topic": "Find stETH PT market address on Pendle",
        "arguments": {
          "count": 3,
          "country": "US",
          "freshness": "week",
          "lang": "en",
          "offset": 0,
          "query": "Pendle stETH PT market address Ethereum 2026",
          "safesearch": "moderate",
          "topic": "Find stETH PT market address on Pendle"
        },
        "result_preview": "Found 3 results:\n\n1. Pendle: PT-stETH-25DEC25/SY-stETH Market Token (0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2) | Address 0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2 | Etherscan\n   URL: https://etherscan.io/address/0xc374f7ec85f8c7de3207a10bb1978ba104bda3b2\n   This is guaranteed by address(0) &amp; address(this) check in each updateForTwo function */ contract PendleMarket is PendleERC20Permit, Pen...uot;},{&quot;inputs&quot;:[],&quot;name&quot;:&quot;MarketExpired&quot;,&quot;type&quot;:&quot;error&quot;},{&quot;inputs&quot;:[{&quot;internalType&quot;:&quot;int256&quot;\n\n3. Pendle - Liberating Yield\n   URL: https://www.pendle.finance/\n   The world&#x27;s largest crypto yield trading platform. Trade spot yield, earn fixed yield, or long yield with leverage — no lockups, no liquidation risk."
      },
      {
        "turn": 0,
        "tool": "brave_search",
        "topic": "Find Pendle API for ApproxParams",
        "arguments": {
          "count": 3,
          "country": "US",
          "freshness": "week",
          "lang": "en",
          "query": "Pendle API ApproxParams endpoint sdk",
          "safesearch": "moderate",
          "topic": "Find Pendle API for ApproxParams"
        },
        "result_preview": "{\n  \"error\": {\n    \"code\": \"tool_call_failed\",\n    \"message\": \"Toolset error: ToolCallError: ToolCallError: Brave Search API error 429 Too Many Requests: {\\\"type\\\":\\\"ErrorResponse\\\",\\\"error\\\":{\\\"id\\\":\\\"b12fa83c-8c97-496d-b742-70ff8c27ab92\\\",\\\"status\\\":429,\\\"detail\\\":\\\"Request rate limit exceeded for plan\\\",\\\"meta\\\":{\\\"plan\\\":\\\"Free\\\",\\\"rate_limit\\\":1,\\\"rate_current\\\":1,\\\"quota_limit\\\":2000,\\\"quota_current\\\":126,\\\"org_rate_limit\\\":null,\\\"org_rate_current\\\":0,\\\"component\\\":\\\"rate_limiter\\\"},\\\"code\\\":\\\"RATE_LIMITED\\\"},\\\"time\\\":1780231161}\"\n  }\n}"
      }
    ],
    "failure_category": null,
    "app": {
      "source": "default",
      "path": null,
      "loaded_name": "default"
    },
    "skills": {
      "mode": "restricted",
      "allowed": [
        "pendle"
      ],
      "activated_skills": [
        "pendle"
      ],
      "bundle_path": "../output/eval/model-bench-public-skills-opus47-opus46-haiku45-20260531/specs/pendle_requires_approx_params/claude-haiku-4.5/pass-002/spec-skills/pendle_requires_approx_params-skills.json",
      "bundle_revision": "fnv1a64:5ddebc17b4eea61d"
    },
    "environment": {
      "chain_id": 1,
      "network": "ethereum",
      "providers_path": "/Users/aronmegyeri/.aomi/test-env/providers.toml",
      "endpoint_name": "sim-ethereum",
      "funding_ledger": [
        {
          "chain_id": 1,
          "address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
          "balances": {
            "ETH": "100",
            "USDC": "10000"
          }
        },
        {
          "chain_id": 1,
          "address": "0x70997970c51812dc3a010c7d01b50e0d17dc79c8",
          "balances": {
            "ETH": "100",
            "USDC": "10000"
          }
        }
      ]
    }
  }
}