402.bot
Recipe
live $0.0100 premium Wallet Intelligence

Top Holdings Rotation Plan

Turn a wallet plus a short candidate set into a compact trim/add/hold rotation plan.

$0.0100price
3steps
7sources
9ktokens saved
4tool calls compressed
median latency
ZapperMessariUniswapGeminiZapper Token BalancesTrading Candidate Context BatchGoogle Gemini Flash Structured

Endpoint: /v1/recipes/top-holdings-rotation-plan/run
Capabilities: trading, rotation-plan, wallet-rebalance

Why pay for this?

This recipe turns roughly 4 separate tool operations into one paid endpoint call and saves about ~9k tokens saved.

Turns a wallet and a short candidate set into a compact add/trim/hold rotation plan.

Creator

Name: 402.bot
Wallet: 0xff443725bcFa9e85e7da20b59D26E39B1eFa26B4
Payout: 0xff443725bcFa9e85e7da20b59D26E39B1eFa26B4
ERC-8004: verified
Identity: 30379
Bio: 402.bot managed workflow marketplace recipes.
ERC-8004 reputation: 0.0
Creator score: 21

Usage and trust

Success 30d: 0%
Refund 30d: 0%
Paid runs: 0
Creator recipes: 1
Last run: No recent runs

Pipeline

Stage 1

Load wallet balances

fetch_transform

Source: Zapper Token Balances
Step id: balances

Stage 2

Build candidate context batch

fetch_transform

Source: Trading Candidate Context Batch
Step id: context

Stage 3

Build top holdings rotation plan

fetch_transform

Source: Google Gemini Flash Structured
Step id: summarize

Recent runs

RunStatusTriggerQueued
No recent runs recorded yet. Runs appear here after the first paid execution.
View raw step spec

Load wallet balances

{
  "id": "balances",
  "kind": "fetch_transform",
  "title": "Load wallet balances",
  "request": {
    "params": {
      "first": 10,
      "chainIds": [
        "{{ $.input.chainId }}"
      ],
      "addresses": [
        "{{ $.input.walletAddress }}"
      ]
    },
    "sourceId": "zapper_token_balances",
    "deliveryFormat": "json"
  }
}

Build candidate context batch

{
  "id": "context",
  "kind": "fetch_transform",
  "title": "Build candidate context batch",
  "request": {
    "params": {
      "chainId": "{{ $.input.chainId }}",
      "candidates": "{{ $.input.candidates }}",
      "settlementToken": "{{ $.input.settlementToken }}"
    },
    "sourceId": "trading_candidate_context_batch",
    "deliveryFormat": "json"
  }
}

Build top holdings rotation plan

{
  "id": "summarize",
  "kind": "fetch_transform",
  "title": "Build top holdings rotation plan",
  "request": {
    "params": {
      "input": {
        "chainId": "{{ $.input.chainId }}",
        "context": "{{ $.stepsById.context.output }}",
        "balances": "{{ $.stepsById.balances.output }}",
        "walletAddress": "{{ $.input.walletAddress }}"
      },
      "prompt": "Build a top-holdings rotation plan. Focus on the rotation rows, the keepers, the first positions to reduce, and the next actions.",
      "responseSchema": {
        "type": "object",
        "required": [
          "walletAddress",
          "chainId",
          "summary",
          "rotationRows",
          "keepers",
          "reduceNow",
          "nextActions"
        ],
        "properties": {
          "chainId": {
            "type": "integer"
          },
          "keepers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Names or symbols to keep overweight."
          },
          "summary": {
            "type": "string"
          },
          "reduceNow": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Names or symbols to reduce first."
          },
          "nextActions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Suggested next actions."
          },
          "rotationRows": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "tokenAddress",
                "symbol",
                "currentUsd",
                "targetUsd",
                "deltaUsd",
                "action",
                "note"
              ],
              "properties": {
                "note": {
                  "type": "string"
                },
                "action": {
                  "enum": [
                    "add",
                    "reduce",
                    "exit",
                    "hold"
                  ],
                  "type": "string"
                },
                "symbol": {
                  "type": "string"
                },
                "deltaUsd": {
                  "type": "number"
                },
                "targetUsd": {
                  "type": "number"
                },
                "currentUsd": {
                  "type": "number"
                },
                "tokenAddress": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            },
            "description": "Suggested target mix rows."
          },
          "walletAddress": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "systemInstruction": "You are compressing wallet rotation into a bounded operator plan. Stay grounded in the supplied wallet and candidate context."
    },
    "sourceId": "google_gemini_flash_structured",
    "deliveryFormat": "json"
  }
}