Skip to content
Back to SolEnrich

Card snapshot

solenrich.com · 2026-10-09 18:32:21 UTC · 78a2d458ea5618f57083ace91fd6e5896af6bebefea67245313c0b3d00aa5e93

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "1.0",
  "name": "SolEnrich",
  "description": "Agent-native onchain intelligence for Solana traders: cross-venue perps funding (Jupiter, Adrena, Flash, Hyperliquid), smart-money & whale tracking, token due-diligence and rug detection, and wallet risk scoring. Pay-per-call via x402 (USDC) or Stripe \u2014 JSON for agents, natural-language briefings for LLMs.",
  "url": "https://api.solenrich.com/",
  "supportedInterfaces": [
    {
      "url": "https://api.solenrich.com/",
      "protocolBinding": "HTTP+JSON"
    }
  ],
  "version": "1.0.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": true
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "enrich-wallet-light",
      "name": "enrich-wallet-light",
      "description": "Light wallet profile with holdings, labels, and risk score",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "enrich-wallet-full",
      "name": "enrich-wallet-full",
      "description": "Full wallet profile with holdings, DeFi positions, labels, risk score, and connected wallets",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "enrich-token-light",
      "name": "enrich-token-light",
      "description": "Token analysis with price, market data, liquidity, and risk flags",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "include_holders": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "include_holders",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "enrich-token-full",
      "name": "enrich-token-full",
      "description": "Full token analysis with price, market data, liquidity, risk flags, and top holders",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "include_holders": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "include_holders",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "parse-transaction",
      "name": "parse-transaction",
      "description": "Parse and enrich a Solana transaction with type detection, protocol identification, and transfer details",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "minLength": 86,
            "maxLength": 90,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "signature",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "whale-watch",
      "name": "whale-watch",
      "description": "Identify large token holders and track accumulation/distribution patterns",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "threshold_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 100
          },
          "lookback_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 168
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "threshold_usd",
          "lookback_hours",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "batch-enrich",
      "name": "batch-enrich",
      "description": "Enrich multiple wallets or tokens in parallel",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "type": {
            "type": "string",
            "enum": [
              "wallet",
              "token"
            ]
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "addresses",
          "type",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "wallet-graph",
      "name": "wallet-graph",
      "description": "Map wallet transaction connections and detect suspicious clusters",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": 1,
            "type": "number",
            "minimum": 1,
            "maximum": 2
          },
          "min_interactions": {
            "default": 1,
            "type": "number",
            "minimum": 1
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "min_interactions",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "wallet-link-check",
      "name": "wallet-link-check",
      "description": "Are two Solana wallets the same owner? Same-owner confidence and a verdict (LIKELY_SAME_OWNER / LIKELY_ROTATION, UNCERTAIN, SUSPICIOUS) from direct transfers, first funders, the new wallet's age and x402 history, and risk flags. Built for x402 trust monitors deciding whether a payout-wallet change is a rotation or a hijack.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "wallet_a": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "wallet_b": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "context": {
            "default": "general",
            "type": "string",
            "enum": [
              "payout_rotation",
              "general"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "wallet_a",
          "wallet_b",
          "context",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "copy-trade-signals",
      "name": "copy-trade-signals",
      "description": "Analyze wallet trading performance and copyability",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback_days": {
            "default": 30,
            "type": "number",
            "minimum": 1,
            "maximum": 90
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "lookback_days",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "due-diligence",
      "name": "due-diligence",
      "description": "Comprehensive token research briefing with security, whales, and holder analysis",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "compare-tokens",
      "name": "compare-tokens",
      "description": "Compare 2-3 tokens side-by-side: price, liquidity, volatility, holder concentration, risk flags",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mints": {
            "minItems": 2,
            "maxItems": 3,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            },
            "description": "2-3 token mint addresses to compare"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mints",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "compare-wallets",
      "name": "compare-wallets",
      "description": "Compare 2-3 wallets side-by-side: portfolio value, activity, risk, labels, holdings",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 2,
            "maxItems": 3,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            },
            "description": "2-3 wallet addresses to compare"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "addresses",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "token-trend",
      "name": "token-trend",
      "description": "Token trend analysis: price, liquidity, concentration changes over 7/14/30 days with direction indicators",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "wallet-history",
      "name": "wallet-history",
      "description": "Wallet history: portfolio value, balance, risk score changes over 7/14/30 days with position changes",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "portfolio-history",
      "name": "portfolio-history",
      "description": "Full portfolio time-series for a wallet \u2014 daily snapshots of value, balance, holdings, risk, plus summary stats (peak, trough, max drawdown, average, change vs period start). Distinct from wallet-history which returns two-point deltas; this returns the series for charting.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "period": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "period",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-market-trend",
      "name": "perps-market-trend",
      "description": "Jupiter Perps market trend: per-symbol (SOL/BTC/ETH) deltas for mark price, total open interest, long/short skew, utilization, and borrow APR over 7/14/30 days. Direction indicators per metric and per market. Mirror of token-trend for perps markets \u2014 required for regime-detection strategies and any bot that adjusts behavior based on whether the market is growing, stressed, or rebalancing.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "new-tokens",
      "name": "new-tokens",
      "description": "Discover recently launched tokens on Solana with risk scoring and filtering. Returns safest first.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "min_liquidity_usd": {
            "default": 1000,
            "description": "Minimum liquidity in USD to include",
            "type": "number"
          },
          "max_risk_score": {
            "default": 0.8,
            "description": "Maximum risk score (0-1) to include",
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "limit": {
            "default": 10,
            "description": "Number of tokens to return",
            "type": "number",
            "minimum": 1,
            "maximum": 20
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_liquidity_usd",
          "max_risk_score",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "protocol-profile",
      "name": "protocol-profile",
      "description": "DeFi protocol analytics: TVL, yield pools, on-chain activity, health signals",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Protocol slug (e.g. \"raydium\", \"orca\") or Solana program ID"
          },
          "include_yields": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "protocol",
          "include_yields",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-market-structure",
      "name": "perps-market-structure",
      "description": "Jupiter Perps market structure \u2014 per-market OI, utilization, borrow APR, skew, OI caps, and health flags for SOL/BTC/ETH",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-trader-profile",
      "name": "perps-trader-profile",
      "description": "Multi-venue perps trader profile \u2014 fetches open positions from BOTH Jupiter Perps and Adrena for the wallet. Returns per-position size/leverage/entry/unrealized PnL/risk flags, per-venue breakdown with venue totals, and combined totals across venues. Output includes a `venue` tag on every position and a `by_venue` breakdown alongside combined `totals`. Adrena PnL requires per-collateral mark prices (jitoSOL/WBTC/BONK via Jupiter price API) and is null when unavailable.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "gacha-ev-scan",
      "name": "gacha-ev-scan",
      "description": "Jupiter Gacha (Collector Crypt) pack EV scan \u2014 for each tokenized-card pack machine, computes net-of-exit-mechanics expected value: gross insured EV vs the guaranteed instant-buyback floor (85\u201393% of insured, \u226472h) vs a marketplace sale (insured value minus 2% fee, fill-risk). Returns a POSITIVE_EV / HOUSE_EDGE / NEGATIVE_EV verdict per machine plus rare+epic stock share, ranked by the chosen exit path. The number the platform hides behind its gross EV headline.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "machine": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "franchise": {
            "default": "all",
            "type": "string",
            "enum": [
              "pokemon",
              "onepiece",
              "all"
            ]
          },
          "exit_strategy": {
            "default": "both",
            "type": "string",
            "enum": [
              "buyback",
              "marketplace",
              "both"
            ]
          },
          "min_edge_pct": {
            "type": "number",
            "minimum": -100,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "franchise",
          "exit_strategy",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "hyperliquid-trader-profile",
      "name": "hyperliquid-trader-profile",
      "description": "Hyperliquid trader profile for an EVM (0x) address. Reads the trader's live perp positions directly from Hyperliquid's public on-chain state: per-position coin, side, leverage, notional, entry, unrealized PnL, distance-to-liquidation, and risk flags (high_leverage, extreme_leverage, approaching_liquidation, losing). Plus account value, directional bias, profile (directional/market-neutral/diversified), weighted leverage, and realized+unrealized PnL over week/month/all-time. Hyperliquid is uniquely transparent \u2014 every position is public \u2014 making this the building block for smart-money tracking.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "hyperliquid-smart-money",
      "name": "hyperliquid-smart-money",
      "description": "Where Hyperliquid smart money is positioned right now. Scans the HL leaderboard, excludes market-makers/HFT (turnover filter) and dust/mega-funds (account band), keeps only CONSISTENT directional traders (week+month PnL > 0, not a systematic book), then aggregates their live positions into a per-coin consensus signal (long/short trader counts, net notional, bias, conviction) plus a top-trader drill-down ranked by robust month PnL. Pass `market` (e.g. HYPE/BTC/ETH) to focus one coin. NOTE: a positioning signal, not a trade \u2014 consensus is often late/crowded and regime-dependent; use as confluence/risk context, not a standalone entry.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "minLength": 1,
            "maxLength": 12
          },
          "top_traders": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-cross-venue-funding",
      "name": "perps-cross-venue-funding",
      "description": "Cross-venue perps funding rate aggregator. Compares borrow/funding APR + open interest across Solana on-chain venues (Jupiter Perps, Adrena) with cross-chain reference (Hyperliquid, dYdX v4). Returns best entry per side, basis vs Hyperliquid, and arbitrage opportunities.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "include_reference": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "market",
          "include_reference",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-venue-comparison",
      "name": "perps-venue-comparison",
      "description": "Where to trade this market at this size. Compares total entry cost (slippage + fee + first-hour borrow), OI cap headroom, and venue health across Jupiter Perps, Adrena, Hyperliquid, and dYdX v4. Returns rankings + recommendation with warnings.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "size_usd": {
            "type": "number",
            "minimum": 100,
            "maximum": 10000000
          },
          "side": {
            "default": "long",
            "type": "string",
            "enum": [
              "long",
              "short"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "market",
          "size_usd",
          "side",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "perps-basis-signal",
      "name": "perps-basis-signal",
      "description": "Net-yield-after-borrow basis trade scanner. Computes perp mark vs spot price across venues and surfaces actually-earnable yield \u2014 funding APR on reference venues (Hyperliquid, dYdX v4), correctly flagged as not-viable on Solana pool perps (Jupiter, Adrena) which charge borrow on both sides. Returns per-venue trade, filtered opportunities, and best trade.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "asset": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "min_yield_apr_pct": {
            "default": 5,
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "asset",
          "min_yield_apr_pct",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "trending-signals",
      "name": "trending-signals",
      "description": "Orchestrated ranking of trending Solana tokens. Scans DexScreener trending, enriches with token analysis + optional whale-watch flow, and returns a composite-signal ranked list with reasoning. \"What's worth paying attention to right now?\"",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "min_liquidity_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 0
          },
          "max_risk_score": {
            "default": 0.7,
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "include_whale_watch": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_liquidity_usd",
          "max_risk_score",
          "limit",
          "include_whale_watch",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "smart-money-flow",
      "name": "smart-money-flow",
      "description": "Orchestrated smart-money intelligence. Scores a seed wallet list via copy-trade metrics, filters to qualifying winners (win rate + trade count), then surfaces tokens they're accumulating and wallet clusters. Pass your own `wallets` array or use our curated default list.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "wallets": {
            "maxItems": 30,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "lookback_days": {
            "default": 14,
            "type": "integer",
            "minimum": 1,
            "maximum": 90
          },
          "min_win_rate": {
            "default": 0.55,
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "top_n_tokens": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "include_graph": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "lookback_days",
          "min_win_rate",
          "top_n_tokens",
          "include_graph",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "smart-money-trenches",
      "name": "smart-money-trenches",
      "description": "Which proven-winner wallets are aping fresh (<6h) memecoin launches right now, and what are they buying? Scans a vetted seed set of realized-PnL winners (bot-filtered, re-checked live each scan), overlays their recent buys against token launch times, and ranks fresh tokens by distinct smart buyers + recency. The trenches attention signal.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "hours_back": {
            "default": 12,
            "type": "integer",
            "minimum": 1,
            "maximum": 48
          },
          "max_token_age_hours": {
            "default": 6,
            "type": "number",
            "minimum": 1,
            "maximum": 72
          },
          "min_buyers": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 14
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "hours_back",
          "max_token_age_hours",
          "min_buyers",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "runner-scan",
      "name": "runner-scan",
      "description": "Detect Solana memecoins whose on-chain buying is accelerating right now \u2014 the signature of a run in progress. Measures buy-rate acceleration across 5m/1h/6h windows, buy pressure, volume and price velocity, holder growth, and liquidity trend, then classifies each token IGNITING / RUNNING / PARABOLIC_LATE / FADING with a 0-1 velocity score and reasoning. Flags already-ran tokens as entry risk and liquidity pulls as rugs rather than dressing them up as runners.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "max_token_age_hours": {
            "default": 24,
            "type": "number",
            "minimum": 0.1,
            "maximum": 168
          },
          "min_liquidity_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "min_volume_h1_usd": {
            "default": 5000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "limit": {
            "default": 15,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_token_age_hours",
          "min_liquidity_usd",
          "min_volume_h1_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "query",
      "name": "query",
      "description": "Plain English questions routed to the right enricher. Single-intent questions hit one enricher; compound questions (\"should I buy X?\", \"wallet deep dive on X\", \"what's trending?\") chain 2-3 enrichers in parallel and return a unified briefing.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "minLength": 3,
            "maxLength": 500
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "question",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "feed-latest",
      "name": "feed-latest",
      "description": "Daily SolEnrich intelligence brief \u2014 pre-computed ranking of trending Solana tokens with composite signal scoring (liquidity, risk, holder concentration, whale flow). Cached 24h. Pass `since` (ISO 8601) to short-circuit on no-change. Pay-per-poll model \u2014 designed for agents that want recurring signal without orchestration cost.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "consensus-signal",
      "name": "consensus-signal",
      "description": "Agent attention signal \u2014 what tokens or wallets are being queried by other agents right now. Proprietary data: derived from SolEnrich's own query stream, not market volume. Two modes: pass `address` to get that entity's rank/percentile/trend; omit it to get the top-N most-queried entities. Windows: 1h, 6h, 24h.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "type": {
            "default": "token",
            "type": "string",
            "enum": [
              "token",
              "wallet"
            ]
          },
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "window": {
            "default": "1h",
            "type": "string",
            "enum": [
              "1h",
              "6h",
              "24h"
            ]
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "type",
          "window",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "attention-momentum",
      "name": "attention-momentum",
      "description": "Agent-attention ACCELERATION with price divergence \u2014 tokens ranked by how fast attention is speeding up (query velocity change across three consecutive windows), overlaid with price change over the same window. early_signal = attention accelerating while price is flat (agents researching before the market moves); distribution_risk = attention cooling while price pumps. Proprietary: derived from SolEnrich's own agent query stream. Windows: 1h, 6h, 24h.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "window": {
            "default": "6h",
            "type": "string",
            "enum": [
              "1h",
              "6h",
              "24h"
            ]
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "window",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "trenches-scan",
      "name": "trenches-scan",
      "description": "The three-signal memecoin scan in one call: on-chain velocity (runner-scan), proven-winner buys (smart-money-trenches), and agent attention (attention-momentum), composited into a ranked ape-able list with per-token reasoning and HIGH_CONFLUENCE / MODERATE / SINGLE_SIGNAL verdicts. Legs degrade independently \u2014 one upstream failure annotates the result instead of killing it.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "max_token_age_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 72
          },
          "min_liquidity_usd": {
            "default": 5000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_token_age_hours",
          "min_liquidity_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "trenches-check",
      "name": "trenches-check",
      "description": "The trenches suite pointed at ONE token: pass a mint, get a HIGH_CONFLUENCE / MODERATE / SINGLE_SIGNAL / NO_SIGNAL verdict with reasoning. Runs the same three legs as trenches-scan \u2014 on-chain velocity (runner stage + score), proven-winner buys, agent attention \u2014 but targeted. The follow-up call to a new-tokens discovery or any token someone shilled you: before you ape, run the check.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "exit-signal",
      "name": "exit-signal",
      "description": "The sell-side verdict for a token you hold: pass a mint, get EXIT / DERISK / HOLD with an exit score and reasoning. Reads sell pressure, buy-rate deceleration, volume fade, distribution-into-strength divergence, top-holder flow (who is distributing vs accumulating), liquidity trend, and holder churn. Rug triggers (LP pull, active dump) override everything. Works on tokens of any age. Optional entry_price_usd adds unrealized-PnL context.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "entry_price_usd": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-market-pulse",
      "name": "stonk-market-pulse",
      "description": "Is the StonkFun market rising or falling right now? Verdict RISK_ON / NEUTRAL / RISK_OFF from breadth (share of live coins up over 24h) and the median 24h move, plus the volume-weighted move (big coins vs the typical coin), launches per day, share of all reward coins trading and paying, survival past day 3, holder revenue for the last 7 days vs the 7 before, the strongest and weakest quote shelves, and a daily breadth trend from our own hourly record. One call, no inputs; gate entries on it or show it on a dashboard.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-creator",
      "name": "stonk-creator",
      "description": "Track record of a StonkFun creator \u2014 pass the creator wallet, or a coin mint to look up who launched it. Verdict ESTABLISHED (several coins that survive), MIXED, SERIAL_LAUNCHER (many launches, few survivors), or NEW (too little history). Launches in 24h / 7d / all-time, share of coins older than 3 days that still trade, how many paid holders in 24h, living coins with market cap, quote shelves used, plus the measured baseline (19% of one-time creators' coins vs 5% of serial launchers' still trade after 3 days). A cheap filter before paying for anything else on a fresh coin.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "creator": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-pairs",
      "name": "stonk-pairs",
      "description": "FREE. Quote assets a StonkFun launch can be paired against (xStocks, pre-stocks, currencies, custom mints), with normalized categories and an is_agent_launchable flag (launchable + LaunchLab-ready + allowed category). Call this before sizing or preflighting a launch.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "launchable_only": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "launchable_only",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-reward-risk",
      "name": "stonk-reward-risk",
      "description": "Payout status for a StonkFun reward coin \u2014 what a holder observes: PAYING (payout in the last 24h), STALE, NEVER, or NOT_REWARD \u2014 plus trading cost (tax bps, round-trip %) and a 0-100 health score read from the chain: fee bps and cap, withdraw authority (must be StonkFun's distributor), fee mutability, distributions and recency, flywheel, holders and concentration, quote category, age. Call before sizing a reward-coin position.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-yield",
      "name": "stonk-yield",
      "description": "Trailing 7d / 30d / lifetime holder yield for a StonkFun reward coin: rewards distributed in the quote asset, priced in USD, divided by average market cap over the window, annualized with an explicit caution flag when the window is under 7 days. Also returns quote exposure \u2014 what a holder is economically long (the coin plus the quote asset) and the reward asset.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-yield-batch",
      "name": "stonk-yield-batch",
      "description": "stonk-yield for up to 25 StonkFun reward coins in one call: trailing 7d / 30d / lifetime holder yield per coin (rewards in the quote asset, priced in USD, over average market cap, annualized, with caution flags) plus quote exposure, payouts and holders. Select coins by `mints` (up to 25) or by the stonk-screener filters (quote, category, holders, age, volume, market cap, paying_only, live_only, sort). Computed from the 10-minute index in milliseconds. Cheaper than a screener call plus stonk-yield per coin.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_holders": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "min_age_days": {
            "type": "number",
            "minimum": 0
          },
          "max_age_days": {
            "type": "number",
            "minimum": 0
          },
          "min_volume_24h_usd": {
            "type": "number",
            "minimum": 0
          },
          "max_market_cap_usd": {
            "type": "number",
            "minimum": 0
          },
          "paying_only": {
            "default": false,
            "type": "boolean"
          },
          "live_only": {
            "default": false,
            "type": "boolean"
          },
          "sort": {
            "default": "volume24h",
            "type": "string",
            "enum": [
              "yield7d",
              "yield30d",
              "rewardsUsd",
              "volume24h",
              "lastPayout",
              "holders",
              "priceChange24h"
            ]
          },
          "mints": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "limit": {
            "default": 25,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "paying_only",
          "live_only",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-alerts",
      "name": "stonk-alerts",
      "description": "What changed for your StonkFun reward coins since your last check, for up to 25 coins: payout_landed (a payout reached holders), payout_stale (no payout for 24h+, went stale inside the window), stopped_trading (no 24h volume: no tax, no payouts), holders_change (\u00b110% default), and rewards_since (quote + USD paid to holders since the snapshot nearest to `since`). Plus current payout status per coin. From the 10-minute index in milliseconds; poll it and pass checked_at back as since.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mints": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "min_holders_change_pct": {
            "default": 10,
            "type": "number",
            "minimum": 1,
            "maximum": 1000
          },
          "stale_after_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 168
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mints",
          "since",
          "min_holders_change_pct",
          "stale_after_hours",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-screener",
      "name": "stonk-screener",
      "description": "Screen every StonkFun reward coin from a 10-minute index. Per row: payout status (PAYING / STALE / NEVER), hours since last payout, live flag (traded AND paid in 24h), round-trip transfer-tax cost, holders, rewards USD, yields, volume, mcap, 24h change. Filters: quote_mint, category, holders, age, volume, market cap, paying_only, live_only. Sort by volume24h (default), lastPayout, holders, priceChange24h, or yield. \"Which coins on NVDAX paid holders today?\" is one call.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_holders": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "min_age_days": {
            "type": "number",
            "minimum": 0
          },
          "max_age_days": {
            "type": "number",
            "minimum": 0
          },
          "min_volume_24h_usd": {
            "type": "number",
            "minimum": 0
          },
          "max_market_cap_usd": {
            "type": "number",
            "minimum": 0
          },
          "paying_only": {
            "default": false,
            "type": "boolean"
          },
          "live_only": {
            "default": false,
            "type": "boolean"
          },
          "sort": {
            "default": "volume24h",
            "type": "string",
            "enum": [
              "yield7d",
              "yield30d",
              "rewardsUsd",
              "volume24h",
              "lastPayout",
              "holders",
              "priceChange24h"
            ]
          },
          "limit": {
            "default": 25,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "paying_only",
          "live_only",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-gems",
      "name": "stonk-gems",
      "description": "Shortlist of StonkFun reward coins that are alive, paying, and liquid. Scores 0-100 from the 10-minute index \u2014 recent holder payout, holders, size, 24h turnover, age, momentum, quote-asset strength, flywheel. Stages GEM / WATCH / NOISE / DEAD with plain reasons and warnings per coin, plus the round-trip tax cost. A liveness ranking, not a price forecast: in a paper test (9/26-10/3) higher scores did not beat the market. Check stonk-creator and stonk-quote before sizing. Filters: quote_mint, category, max_age_days, min_holders, max_market_cap_usd. Milliseconds.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "max_age_days": {
            "default": 14,
            "type": "number",
            "minimum": 0,
            "maximum": 90
          },
          "min_holders": {
            "default": 25,
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "max_market_cap_usd": {
            "default": 5000000,
            "type": "number",
            "minimum": 0
          },
          "limit": {
            "default": 15,
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_age_days",
          "min_holders",
          "max_market_cap_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-launch-intel",
      "name": "stonk-launch-intel",
      "description": "What to launch on StonkFun, and against what. Per quote asset: coins, launches (24h / 7d), share trading today, share paying holders today, survival past day 3, volume, median holders and mcap, 100 vs 300 bps tax mix with trading and paying rates, crowding, and a 0-100 demand score. Plus overall stats and plain recommendations. Sort by demand, survival, volume, launches, or paying. Milliseconds.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_coins": {
            "default": 5,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "sort": {
            "default": "demand",
            "type": "string",
            "enum": [
              "demand",
              "survival",
              "volume",
              "launches",
              "paying"
            ]
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_coins",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-launch-preflight",
      "name": "stonk-launch-preflight",
      "description": "Preflight a self-built Raydium LaunchLab launch before broadcasting: decodes the initialize instruction from your unsigned transaction and diffs every parameter against StonkFun's /launchlab/pricing for that quote and mode \u2014 GlobalConfig, platform id per mode, curve type, supply, totalSellA, raise, 6-decimal Token-2022 base mint, quote token program, vesting, curve-rule account appended last, and for reward mode the transfer-fee option, tier, and cap (catches Raydium's transferFeeBasePoints / maxinumFee spelling). Returns ok, mismatches with fixes, warnings. A mismatched pool is never adopted: the tax goes to nobody.",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "unsigned_transaction": {
            "type": "string",
            "minLength": 64,
            "maxLength": 6000
          },
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "mode": {
            "type": "string",
            "enum": [
              "standard",
              "reward"
            ]
          },
          "launch_params": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "unsigned_transaction",
          "quote_mint",
          "mode",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "stonk-quote",
      "name": "stonk-quote",
      "description": "Cost and payback of one StonkFun trade at one size, no swap: entry and exit cost (transfer tax + price impact at size), round-trip % and the breakeven price move, your pro-rata share of each payout with a dust warning, expected payout over the hold from the yield window with real history, and a PAYS / MARGINAL / COSTS / NOT_PAYING verdict with breakeven hold days. Composes stonk-reward-risk, stonk-yield, and enrich-token-light. Inputs: mint, size_usd (100), hold_days (7).",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "size_usd": {
            "default": 100,
            "type": "number",
            "minimum": 1,
            "maximum": 1000000
          },
          "hold_days": {
            "default": 7,
            "type": "number",
            "minimum": 0.25,
            "maximum": 365
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "size_usd",
          "hold_days",
          "format"
        ],
        "additionalProperties": false
      }
    },
    {
      "id": "check-alerts",
      "name": "check-alerts",
      "description": "Poll-based event detection. Pass a watchlist (tokens + wallets) and a `since` ISO 8601 timestamp; receive alerts fired since that time. Detects: token alerts (price spikes/drops, risk score changes, whale inflow/outflow, holder concentration shifts); spot wallet alerts (portfolio value changes, position additions/removals); and Jupiter Perps alerts per wallet (perp_position_added, perp_position_closed, perp_at_risk, liquidation_approaching, pnl_swing). Stateless: agent owns the `since` cursor. Watchlist capped at 10 tokens + 10 wallets per call. Step 1 of 3 (poll \u2192 SSE \u2192 webhooks).",
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json",
        "text/plain"
      ],
      "streaming": false,
      "x_input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "tokens": {
            "default": [],
            "maxItems": 10,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "wallets": {
            "default": [],
            "maxItems": 10,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "criteria": {
            "default": {},
            "type": "object",
            "properties": {
              "min_price_change_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000
              },
              "min_risk_score_delta": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "min_whale_volume_usd": {
                "type": "number",
                "minimum": 0
              },
              "min_portfolio_change_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000
              },
              "min_concentration_shift_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "perp_max_leverage": {
                "type": "number",
                "minimum": 1,
                "maximum": 100
              },
              "perp_min_pnl_swing_pts": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000
              },
              "perp_liquidation_buffer_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              }
            },
            "additionalProperties": false
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "tokens",
          "wallets",
          "since",
          "criteria",
          "format"
        ],
        "additionalProperties": false
      }
    }
  ],
  "supportsAuthenticatedExtendedCard": false,
  "entrypoints": {
    "enrich-wallet-light": {
      "description": "Light wallet profile with holdings, labels, and risk score",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "enrich-wallet-full": {
      "description": "Full wallet profile with holdings, DeFi positions, labels, risk score, and connected wallets",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "enrich-token-light": {
      "description": "Token analysis with price, market data, liquidity, and risk flags",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "include_holders": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "include_holders",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "enrich-token-full": {
      "description": "Full token analysis with price, market data, liquidity, risk flags, and top holders",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "include_holders": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "include_holders",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "parse-transaction": {
      "description": "Parse and enrich a Solana transaction with type detection, protocol identification, and transfer details",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "signature": {
            "type": "string",
            "minLength": 86,
            "maxLength": 90,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "signature",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "whale-watch": {
      "description": "Identify large token holders and track accumulation/distribution patterns",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "threshold_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 100
          },
          "lookback_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 168
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "threshold_usd",
          "lookback_hours",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "batch-enrich": {
      "description": "Enrich multiple wallets or tokens in parallel",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "type": {
            "type": "string",
            "enum": [
              "wallet",
              "token"
            ]
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "addresses",
          "type",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "wallet-graph": {
      "description": "Map wallet transaction connections and detect suspicious clusters",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "depth": {
            "default": 1,
            "type": "number",
            "minimum": 1,
            "maximum": 2
          },
          "min_interactions": {
            "default": 1,
            "type": "number",
            "minimum": 1
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "depth",
          "min_interactions",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "wallet-link-check": {
      "description": "Are two Solana wallets the same owner? Same-owner confidence and a verdict (LIKELY_SAME_OWNER / LIKELY_ROTATION, UNCERTAIN, SUSPICIOUS) from direct transfers, first funders, the new wallet's age and x402 history, and risk flags. Built for x402 trust monitors deciding whether a payout-wallet change is a rotation or a hijack.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "wallet_a": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "wallet_b": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "context": {
            "default": "general",
            "type": "string",
            "enum": [
              "payout_rotation",
              "general"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "wallet_a",
          "wallet_b",
          "context",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "copy-trade-signals": {
      "description": "Analyze wallet trading performance and copyability",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback_days": {
            "default": 30,
            "type": "number",
            "minimum": 1,
            "maximum": 90
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "lookback_days",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "due-diligence": {
      "description": "Comprehensive token research briefing with security, whales, and holder analysis",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "compare-tokens": {
      "description": "Compare 2-3 tokens side-by-side: price, liquidity, volatility, holder concentration, risk flags",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mints": {
            "minItems": 2,
            "maxItems": 3,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            },
            "description": "2-3 token mint addresses to compare"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mints",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "compare-wallets": {
      "description": "Compare 2-3 wallets side-by-side: portfolio value, activity, risk, labels, holdings",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "addresses": {
            "minItems": 2,
            "maxItems": 3,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            },
            "description": "2-3 wallet addresses to compare"
          },
          "depth": {
            "default": "light",
            "type": "string",
            "enum": [
              "light",
              "full"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "addresses",
          "depth",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "token-trend": {
      "description": "Token trend analysis: price, liquidity, concentration changes over 7/14/30 days with direction indicators",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "wallet-history": {
      "description": "Wallet history: portfolio value, balance, risk score changes over 7/14/30 days with position changes",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "portfolio-history": {
      "description": "Full portfolio time-series for a wallet \u2014 daily snapshots of value, balance, holdings, risk, plus summary stats (peak, trough, max drawdown, average, change vs period start). Distinct from wallet-history which returns two-point deltas; this returns the series for charting.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "period": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "period",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-market-trend": {
      "description": "Jupiter Perps market trend: per-symbol (SOL/BTC/ETH) deltas for mark price, total open interest, long/short skew, utilization, and borrow APR over 7/14/30 days. Direction indicators per metric and per market. Mirror of token-trend for perps markets \u2014 required for regime-detection strategies and any bot that adjusts behavior based on whether the market is growing, stressed, or rebalancing.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "lookback": {
            "default": "7d",
            "type": "string",
            "enum": [
              "7d",
              "14d",
              "30d"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "lookback",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "new-tokens": {
      "description": "Discover recently launched tokens on Solana with risk scoring and filtering. Returns safest first.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "min_liquidity_usd": {
            "default": 1000,
            "description": "Minimum liquidity in USD to include",
            "type": "number"
          },
          "max_risk_score": {
            "default": 0.8,
            "description": "Maximum risk score (0-1) to include",
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "limit": {
            "default": 10,
            "description": "Number of tokens to return",
            "type": "number",
            "minimum": 1,
            "maximum": 20
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_liquidity_usd",
          "max_risk_score",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "protocol-profile": {
      "description": "DeFi protocol analytics: TVL, yield pools, on-chain activity, health signals",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Protocol slug (e.g. \"raydium\", \"orca\") or Solana program ID"
          },
          "include_yields": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "protocol",
          "include_yields",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-market-structure": {
      "description": "Jupiter Perps market structure \u2014 per-market OI, utilization, borrow APR, skew, OI caps, and health flags for SOL/BTC/ETH",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-trader-profile": {
      "description": "Multi-venue perps trader profile \u2014 fetches open positions from BOTH Jupiter Perps and Adrena for the wallet. Returns per-position size/leverage/entry/unrealized PnL/risk flags, per-venue breakdown with venue totals, and combined totals across venues. Output includes a `venue` tag on every position and a `by_venue` breakdown alongside combined `totals`. Adrena PnL requires per-collateral mark prices (jitoSOL/WBTC/BONK via Jupiter price API) and is null when unavailable.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "gacha-ev-scan": {
      "description": "Jupiter Gacha (Collector Crypt) pack EV scan \u2014 for each tokenized-card pack machine, computes net-of-exit-mechanics expected value: gross insured EV vs the guaranteed instant-buyback floor (85\u201393% of insured, \u226472h) vs a marketplace sale (insured value minus 2% fee, fill-risk). Returns a POSITIVE_EV / HOUSE_EDGE / NEGATIVE_EV verdict per machine plus rare+epic stock share, ranked by the chosen exit path. The number the platform hides behind its gross EV headline.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "machine": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "franchise": {
            "default": "all",
            "type": "string",
            "enum": [
              "pokemon",
              "onepiece",
              "all"
            ]
          },
          "exit_strategy": {
            "default": "both",
            "type": "string",
            "enum": [
              "buyback",
              "marketplace",
              "both"
            ]
          },
          "min_edge_pct": {
            "type": "number",
            "minimum": -100,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "franchise",
          "exit_strategy",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "hyperliquid-trader-profile": {
      "description": "Hyperliquid trader profile for an EVM (0x) address. Reads the trader's live perp positions directly from Hyperliquid's public on-chain state: per-position coin, side, leverage, notional, entry, unrealized PnL, distance-to-liquidation, and risk flags (high_leverage, extreme_leverage, approaching_liquidation, losing). Plus account value, directional bias, profile (directional/market-neutral/diversified), weighted leverage, and realized+unrealized PnL over week/month/all-time. Hyperliquid is uniquely transparent \u2014 every position is public \u2014 making this the building block for smart-money tracking.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "address",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "hyperliquid-smart-money": {
      "description": "Where Hyperliquid smart money is positioned right now. Scans the HL leaderboard, excludes market-makers/HFT (turnover filter) and dust/mega-funds (account band), keeps only CONSISTENT directional traders (week+month PnL > 0, not a systematic book), then aggregates their live positions into a per-coin consensus signal (long/short trader counts, net notional, bias, conviction) plus a top-trader drill-down ranked by robust month PnL. Pass `market` (e.g. HYPE/BTC/ETH) to focus one coin. NOTE: a positioning signal, not a trade \u2014 consensus is often late/crowded and regime-dependent; use as confluence/risk context, not a standalone entry.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "minLength": 1,
            "maxLength": 12
          },
          "top_traders": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-cross-venue-funding": {
      "description": "Cross-venue perps funding rate aggregator. Compares borrow/funding APR + open interest across Solana on-chain venues (Jupiter Perps, Adrena) with cross-chain reference (Hyperliquid, dYdX v4). Returns best entry per side, basis vs Hyperliquid, and arbitrage opportunities.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "include_reference": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "market",
          "include_reference",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-venue-comparison": {
      "description": "Where to trade this market at this size. Compares total entry cost (slippage + fee + first-hour borrow), OI cap headroom, and venue health across Jupiter Perps, Adrena, Hyperliquid, and dYdX v4. Returns rankings + recommendation with warnings.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "market": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "size_usd": {
            "type": "number",
            "minimum": 100,
            "maximum": 10000000
          },
          "side": {
            "default": "long",
            "type": "string",
            "enum": [
              "long",
              "short"
            ]
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "market",
          "size_usd",
          "side",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "perps-basis-signal": {
      "description": "Net-yield-after-borrow basis trade scanner. Computes perp mark vs spot price across venues and surfaces actually-earnable yield \u2014 funding APR on reference venues (Hyperliquid, dYdX v4), correctly flagged as not-viable on Solana pool perps (Jupiter, Adrena) which charge borrow on both sides. Returns per-venue trade, filtered opportunities, and best trade.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "asset": {
            "type": "string",
            "enum": [
              "SOL",
              "BTC",
              "ETH",
              "BONK"
            ]
          },
          "min_yield_apr_pct": {
            "default": 5,
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "asset",
          "min_yield_apr_pct",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "trending-signals": {
      "description": "Orchestrated ranking of trending Solana tokens. Scans DexScreener trending, enriches with token analysis + optional whale-watch flow, and returns a composite-signal ranked list with reasoning. \"What's worth paying attention to right now?\"",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "min_liquidity_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 0
          },
          "max_risk_score": {
            "default": 0.7,
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "include_whale_watch": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_liquidity_usd",
          "max_risk_score",
          "limit",
          "include_whale_watch",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "smart-money-flow": {
      "description": "Orchestrated smart-money intelligence. Scores a seed wallet list via copy-trade metrics, filters to qualifying winners (win rate + trade count), then surfaces tokens they're accumulating and wallet clusters. Pass your own `wallets` array or use our curated default list.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "wallets": {
            "maxItems": 30,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "lookback_days": {
            "default": 14,
            "type": "integer",
            "minimum": 1,
            "maximum": 90
          },
          "min_win_rate": {
            "default": 0.55,
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "top_n_tokens": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "include_graph": {
            "default": true,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "lookback_days",
          "min_win_rate",
          "top_n_tokens",
          "include_graph",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "smart-money-trenches": {
      "description": "Which proven-winner wallets are aping fresh (<6h) memecoin launches right now, and what are they buying? Scans a vetted seed set of realized-PnL winners (bot-filtered, re-checked live each scan), overlays their recent buys against token launch times, and ranks fresh tokens by distinct smart buyers + recency. The trenches attention signal.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "hours_back": {
            "default": 12,
            "type": "integer",
            "minimum": 1,
            "maximum": 48
          },
          "max_token_age_hours": {
            "default": 6,
            "type": "number",
            "minimum": 1,
            "maximum": 72
          },
          "min_buyers": {
            "default": 1,
            "type": "integer",
            "minimum": 1,
            "maximum": 14
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "hours_back",
          "max_token_age_hours",
          "min_buyers",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "runner-scan": {
      "description": "Detect Solana memecoins whose on-chain buying is accelerating right now \u2014 the signature of a run in progress. Measures buy-rate acceleration across 5m/1h/6h windows, buy pressure, volume and price velocity, holder growth, and liquidity trend, then classifies each token IGNITING / RUNNING / PARABOLIC_LATE / FADING with a 0-1 velocity score and reasoning. Flags already-ran tokens as entry risk and liquidity pulls as rugs rather than dressing them up as runners.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "max_token_age_hours": {
            "default": 24,
            "type": "number",
            "minimum": 0.1,
            "maximum": 168
          },
          "min_liquidity_usd": {
            "default": 10000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "min_volume_h1_usd": {
            "default": 5000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "limit": {
            "default": 15,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_token_age_hours",
          "min_liquidity_usd",
          "min_volume_h1_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "query": {
      "description": "Plain English questions routed to the right enricher. Single-intent questions hit one enricher; compound questions (\"should I buy X?\", \"wallet deep dive on X\", \"what's trending?\") chain 2-3 enrichers in parallel and return a unified briefing.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "question": {
            "type": "string",
            "minLength": 3,
            "maxLength": 500
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "question",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "feed-latest": {
      "description": "Daily SolEnrich intelligence brief \u2014 pre-computed ranking of trending Solana tokens with composite signal scoring (liquidity, risk, holder concentration, whale flow). Cached 24h. Pass `since` (ISO 8601) to short-circuit on no-change. Pay-per-poll model \u2014 designed for agents that want recurring signal without orchestration cost.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    "consensus-signal": {
      "description": "Agent attention signal \u2014 what tokens or wallets are being queried by other agents right now. Proprietary data: derived from SolEnrich's own query stream, not market volume. Two modes: pass `address` to get that entity's rank/percentile/trend; omit it to get the top-N most-queried entities. Windows: 1h, 6h, 24h.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "type": {
            "default": "token",
            "type": "string",
            "enum": [
              "token",
              "wallet"
            ]
          },
          "address": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "window": {
            "default": "1h",
            "type": "string",
            "enum": [
              "1h",
              "6h",
              "24h"
            ]
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "type",
          "window",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "attention-momentum": {
      "description": "Agent-attention ACCELERATION with price divergence \u2014 tokens ranked by how fast attention is speeding up (query velocity change across three consecutive windows), overlaid with price change over the same window. early_signal = attention accelerating while price is flat (agents researching before the market moves); distribution_risk = attention cooling while price pumps. Proprietary: derived from SolEnrich's own agent query stream. Windows: 1h, 6h, 24h.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "window": {
            "default": "6h",
            "type": "string",
            "enum": [
              "1h",
              "6h",
              "24h"
            ]
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "window",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "trenches-scan": {
      "description": "The three-signal memecoin scan in one call: on-chain velocity (runner-scan), proven-winner buys (smart-money-trenches), and agent attention (attention-momentum), composited into a ranked ape-able list with per-token reasoning and HIGH_CONFLUENCE / MODERATE / SINGLE_SIGNAL verdicts. Legs degrade independently \u2014 one upstream failure annotates the result instead of killing it.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "max_token_age_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 72
          },
          "min_liquidity_usd": {
            "default": 5000,
            "type": "number",
            "minimum": 0,
            "maximum": 10000000
          },
          "limit": {
            "default": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_token_age_hours",
          "min_liquidity_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "trenches-check": {
      "description": "The trenches suite pointed at ONE token: pass a mint, get a HIGH_CONFLUENCE / MODERATE / SINGLE_SIGNAL / NO_SIGNAL verdict with reasoning. Runs the same three legs as trenches-scan \u2014 on-chain velocity (runner stage + score), proven-winner buys, agent attention \u2014 but targeted. The follow-up call to a new-tokens discovery or any token someone shilled you: before you ape, run the check.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "exit-signal": {
      "description": "The sell-side verdict for a token you hold: pass a mint, get EXIT / DERISK / HOLD with an exit score and reasoning. Reads sell pressure, buy-rate deceleration, volume fade, distribution-into-strength divergence, top-holder flow (who is distributing vs accumulating), liquidity trend, and holder churn. Rug triggers (LP pull, active dump) override everything. Works on tokens of any age. Optional entry_price_usd adds unrealized-PnL context.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "entry_price_usd": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-market-pulse": {
      "description": "Is the StonkFun market rising or falling right now? Verdict RISK_ON / NEUTRAL / RISK_OFF from breadth (share of live coins up over 24h) and the median 24h move, plus the volume-weighted move (big coins vs the typical coin), launches per day, share of all reward coins trading and paying, survival past day 3, holder revenue for the last 7 days vs the 7 before, the strongest and weakest quote shelves, and a daily breadth trend from our own hourly record. One call, no inputs; gate entries on it or show it on a dashboard.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-creator": {
      "description": "Track record of a StonkFun creator \u2014 pass the creator wallet, or a coin mint to look up who launched it. Verdict ESTABLISHED (several coins that survive), MIXED, SERIAL_LAUNCHER (many launches, few survivors), or NEW (too little history). Launches in 24h / 7d / all-time, share of coins older than 3 days that still trade, how many paid holders in 24h, living coins with market cap, quote shelves used, plus the measured baseline (19% of one-time creators' coins vs 5% of serial launchers' still trade after 3 days). A cheap filter before paying for anything else on a fresh coin.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "creator": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-pairs": {
      "description": "FREE. Quote assets a StonkFun launch can be paired against (xStocks, pre-stocks, currencies, custom mints), with normalized categories and an is_agent_launchable flag (launchable + LaunchLab-ready + allowed category). Call this before sizing or preflighting a launch.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "launchable_only": {
            "default": false,
            "type": "boolean"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "launchable_only",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-reward-risk": {
      "description": "Payout status for a StonkFun reward coin \u2014 what a holder observes: PAYING (payout in the last 24h), STALE, NEVER, or NOT_REWARD \u2014 plus trading cost (tax bps, round-trip %) and a 0-100 health score read from the chain: fee bps and cap, withdraw authority (must be StonkFun's distributor), fee mutability, distributions and recency, flywheel, holders and concentration, quote category, age. Call before sizing a reward-coin position.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-yield": {
      "description": "Trailing 7d / 30d / lifetime holder yield for a StonkFun reward coin: rewards distributed in the quote asset, priced in USD, divided by average market cap over the window, annualized with an explicit caution flag when the window is under 7 days. Also returns quote exposure \u2014 what a holder is economically long (the coin plus the quote asset) and the reward asset.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-yield-batch": {
      "description": "stonk-yield for up to 25 StonkFun reward coins in one call: trailing 7d / 30d / lifetime holder yield per coin (rewards in the quote asset, priced in USD, over average market cap, annualized, with caution flags) plus quote exposure, payouts and holders. Select coins by `mints` (up to 25) or by the stonk-screener filters (quote, category, holders, age, volume, market cap, paying_only, live_only, sort). Computed from the 10-minute index in milliseconds. Cheaper than a screener call plus stonk-yield per coin.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_holders": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "min_age_days": {
            "type": "number",
            "minimum": 0
          },
          "max_age_days": {
            "type": "number",
            "minimum": 0
          },
          "min_volume_24h_usd": {
            "type": "number",
            "minimum": 0
          },
          "max_market_cap_usd": {
            "type": "number",
            "minimum": 0
          },
          "paying_only": {
            "default": false,
            "type": "boolean"
          },
          "live_only": {
            "default": false,
            "type": "boolean"
          },
          "sort": {
            "default": "volume24h",
            "type": "string",
            "enum": [
              "yield7d",
              "yield30d",
              "rewardsUsd",
              "volume24h",
              "lastPayout",
              "holders",
              "priceChange24h"
            ]
          },
          "mints": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "limit": {
            "default": 25,
            "type": "integer",
            "minimum": 1,
            "maximum": 25
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "paying_only",
          "live_only",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-alerts": {
      "description": "What changed for your StonkFun reward coins since your last check, for up to 25 coins: payout_landed (a payout reached holders), payout_stale (no payout for 24h+, went stale inside the window), stopped_trading (no 24h volume: no tax, no payouts), holders_change (\u00b110% default), and rewards_since (quote + USD paid to holders since the snapshot nearest to `since`). Plus current payout status per coin. From the 10-minute index in milliseconds; poll it and pass checked_at back as since.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mints": {
            "minItems": 1,
            "maxItems": 25,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "min_holders_change_pct": {
            "default": 10,
            "type": "number",
            "minimum": 1,
            "maximum": 1000
          },
          "stale_after_hours": {
            "default": 24,
            "type": "number",
            "minimum": 1,
            "maximum": 168
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mints",
          "since",
          "min_holders_change_pct",
          "stale_after_hours",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-screener": {
      "description": "Screen every StonkFun reward coin from a 10-minute index. Per row: payout status (PAYING / STALE / NEVER), hours since last payout, live flag (traded AND paid in 24h), round-trip transfer-tax cost, holders, rewards USD, yields, volume, mcap, 24h change. Filters: quote_mint, category, holders, age, volume, market cap, paying_only, live_only. Sort by volume24h (default), lastPayout, holders, priceChange24h, or yield. \"Which coins on NVDAX paid holders today?\" is one call.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_holders": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "min_age_days": {
            "type": "number",
            "minimum": 0
          },
          "max_age_days": {
            "type": "number",
            "minimum": 0
          },
          "min_volume_24h_usd": {
            "type": "number",
            "minimum": 0
          },
          "max_market_cap_usd": {
            "type": "number",
            "minimum": 0
          },
          "paying_only": {
            "default": false,
            "type": "boolean"
          },
          "live_only": {
            "default": false,
            "type": "boolean"
          },
          "sort": {
            "default": "volume24h",
            "type": "string",
            "enum": [
              "yield7d",
              "yield30d",
              "rewardsUsd",
              "volume24h",
              "lastPayout",
              "holders",
              "priceChange24h"
            ]
          },
          "limit": {
            "default": 25,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "paying_only",
          "live_only",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-gems": {
      "description": "Shortlist of StonkFun reward coins that are alive, paying, and liquid. Scores 0-100 from the 10-minute index \u2014 recent holder payout, holders, size, 24h turnover, age, momentum, quote-asset strength, flywheel. Stages GEM / WATCH / NOISE / DEAD with plain reasons and warnings per coin, plus the round-trip tax cost. A liveness ranking, not a price forecast: in a paper test (9/26-10/3) higher scores did not beat the market. Check stonk-creator and stonk-quote before sizing. Filters: quote_mint, category, max_age_days, min_holders, max_market_cap_usd. Milliseconds.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "max_age_days": {
            "default": 14,
            "type": "number",
            "minimum": 0,
            "maximum": 90
          },
          "min_holders": {
            "default": 25,
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "max_market_cap_usd": {
            "default": 5000000,
            "type": "number",
            "minimum": 0
          },
          "limit": {
            "default": 15,
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "max_age_days",
          "min_holders",
          "max_market_cap_usd",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-launch-intel": {
      "description": "What to launch on StonkFun, and against what. Per quote asset: coins, launches (24h / 7d), share trading today, share paying holders today, survival past day 3, volume, median holders and mcap, 100 vs 300 bps tax mix with trading and paying rates, crowding, and a 0-100 demand score. Plus overall stats and plain recommendations. Sort by demand, survival, volume, launches, or paying. Milliseconds.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "xstock",
              "prestock",
              "currency",
              "leverage",
              "solana",
              "collectible",
              "custom"
            ]
          },
          "min_coins": {
            "default": 5,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "sort": {
            "default": "demand",
            "type": "string",
            "enum": [
              "demand",
              "survival",
              "volume",
              "launches",
              "paying"
            ]
          },
          "limit": {
            "default": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "min_coins",
          "sort",
          "limit",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-launch-preflight": {
      "description": "Preflight a self-built Raydium LaunchLab launch before broadcasting: decodes the initialize instruction from your unsigned transaction and diffs every parameter against StonkFun's /launchlab/pricing for that quote and mode \u2014 GlobalConfig, platform id per mode, curve type, supply, totalSellA, raise, 6-decimal Token-2022 base mint, quote token program, vesting, curve-rule account appended last, and for reward mode the transfer-fee option, tier, and cap (catches Raydium's transferFeeBasePoints / maxinumFee spelling). Returns ok, mismatches with fixes, warnings. A mismatched pool is never adopted: the tax goes to nobody.",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "unsigned_transaction": {
            "type": "string",
            "minLength": 64,
            "maxLength": 6000
          },
          "quote_mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "mode": {
            "type": "string",
            "enum": [
              "standard",
              "reward"
            ]
          },
          "launch_params": {
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "unsigned_transaction",
          "quote_mint",
          "mode",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "stonk-quote": {
      "description": "Cost and payback of one StonkFun trade at one size, no swap: entry and exit cost (transfer tax + price impact at size), round-trip % and the breakeven price move, your pro-rata share of each payout with a dust warning, expected payout over the hold from the yield window with real history, and a PAYS / MARGINAL / COSTS / NOT_PAYING verdict with breakeven hold days. Composes stonk-reward-risk, stonk-yield, and enrich-token-light. Inputs: mint, size_usd (100), hold_days (7).",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "mint": {
            "type": "string",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
          },
          "size_usd": {
            "default": 100,
            "type": "number",
            "minimum": 1,
            "maximum": 1000000
          },
          "hold_days": {
            "default": 7,
            "type": "number",
            "minimum": 0.25,
            "maximum": 365
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "mint",
          "size_usd",
          "hold_days",
          "format"
        ],
        "additionalProperties": false
      }
    },
    "check-alerts": {
      "description": "Poll-based event detection. Pass a watchlist (tokens + wallets) and a `since` ISO 8601 timestamp; receive alerts fired since that time. Detects: token alerts (price spikes/drops, risk score changes, whale inflow/outflow, holder concentration shifts); spot wallet alerts (portfolio value changes, position additions/removals); and Jupiter Perps alerts per wallet (perp_position_added, perp_position_closed, perp_at_risk, liquidation_approaching, pnl_swing). Stateless: agent owns the `since` cursor. Watchlist capped at 10 tokens + 10 wallets per call. Step 1 of 3 (poll \u2192 SSE \u2192 webhooks).",
      "streaming": false,
      "input_schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "type": "object",
        "properties": {
          "tokens": {
            "default": [],
            "maxItems": 10,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "wallets": {
            "default": [],
            "maxItems": 10,
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 32,
              "maxLength": 44,
              "pattern": "^[1-9A-HJ-NP-Za-km-z]+$"
            }
          },
          "since": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          },
          "criteria": {
            "default": {},
            "type": "object",
            "properties": {
              "min_price_change_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000
              },
              "min_risk_score_delta": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "min_whale_volume_usd": {
                "type": "number",
                "minimum": 0
              },
              "min_portfolio_change_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 10000
              },
              "min_concentration_shift_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              "perp_max_leverage": {
                "type": "number",
                "minimum": 1,
                "maximum": 100
              },
              "perp_min_pnl_swing_pts": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000
              },
              "perp_liquidation_buffer_pct": {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              }
            },
            "additionalProperties": false
          },
          "format": {
            "default": "json",
            "type": "string",
            "enum": [
              "json",
              "llm",
              "both"
            ]
          }
        },
        "required": [
          "tokens",
          "wallets",
          "since",
          "criteria",
          "format"
        ],
        "additionalProperties": false
      }
    }
  }
}