{
  "$schema": "https://chat.sperax.io/tools.schema.json",
  "schemaVersion": 1,
  "tools": [
    {
      "apis": [
        {
          "description": "Get all token balances for a wallet address. Shows tokens, USD values, and 24h price changes.",
          "mutating": false,
          "name": "getPortfolioBalances",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get DeFi protocol positions for a wallet (lending, LP, staking).",
          "mutating": false,
          "name": "getPortfolioProtocols",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get an overall portfolio summary: total value, chain breakdown, top holdings.",
          "mutating": false,
          "name": "getPortfolioSummary",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Multi-chain portfolio tracking via 1inch — token balances, DeFi positions, and wallet summary.",
      "findings": [],
      "identifier": "sperax-1inch-portfolio",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-1inch-portfolio",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-1inch-portfolio",
      "title": "1inch Portfolio"
    },
    {
      "apis": [
        {
          "description": "Search the agent-to-agent market for other agents selling a capability you need. Returns listings with prices, payout addresses, chains and usage history. Always call this before hiring — it is how you find out who is available and what they charge.",
          "mutating": false,
          "name": "discoverAgentServices",
          "parameters": [
            "chainId",
            "limit",
            "maxPrice",
            "query",
            "x402Only"
          ],
          "required": []
        },
        {
          "description": "Read a single agent's card: its description and every capability it sells, each with price and payment terms. Use when you want the full price sheet for one agent rather than searching the whole market.",
          "mutating": false,
          "name": "getAgentCard",
          "parameters": [
            "agentId"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Read the exact terms of one listing before committing: price, billing unit, chain, payout address, payment rail, and how many times it has been bought. Free — no payment is made.",
          "mutating": false,
          "name": "getServiceTerms",
          "parameters": [
            "agentId",
            "serviceId"
          ],
          "required": [
            "agentId",
            "serviceId"
          ]
        },
        {
          "description": "Pay another agent to perform one task and return the result. This SPENDS REAL MONEY from the agent wallet: the price is settled on-chain in stablecoins before the hired agent runs, and it cannot be refunded. Always pass maxPrice as a ceiling, and tell the user the price before calling this.",
          "mutating": false,
          "name": "hireAgent",
          "parameters": [
            "agentId",
            "maxPrice",
            "payload",
            "prompt",
            "serviceId"
          ],
          "required": [
            "agentId",
            "serviceId"
          ]
        }
      ],
      "category": "market-data",
      "description": "Hire other AI agents. Discover agents selling capabilities you lack, read their price, and pay per call in stablecoins over x402 — no account or API key needed.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-a2a-economy",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-a2a-economy",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-a2a-economy",
      "title": "Agent Economy"
    },
    {
      "apis": [
        {
          "description": "Get an educational explanation of a crypto/DeFi topic, adapted to the specified difficulty level. Use when the user asks \"what is X?\", \"explain X\", \"teach me about X\", or wants to understand a specific blockchain/DeFi concept.",
          "mutating": false,
          "name": "learnTopic",
          "parameters": [
            "difficulty",
            "topic"
          ],
          "required": [
            "topic"
          ]
        },
        {
          "description": "Get crypto/DeFi glossary entries with definitions and categories. Optionally filter by category or request specific terms. Use when the user asks for definitions, \"what does X mean\", or wants a terminology list.",
          "mutating": false,
          "name": "getGlossary",
          "parameters": [
            "category",
            "terms"
          ],
          "required": []
        },
        {
          "description": "Get a structured learning path for a subject area, with ordered steps, descriptions, and estimated hours. Use when the user says \"I want to learn X from scratch\", \"give me a roadmap for X\", or requests a study curriculum.",
          "mutating": false,
          "name": "getLearningPath",
          "parameters": [
            "area"
          ],
          "required": [
            "area"
          ]
        },
        {
          "description": "Search available educational topics by keyword. Returns matching topics with title, category, and description. Use when the user asks \"what topics do you cover?\", \"search for X\", or browses available content.",
          "mutating": false,
          "name": "searchTopics",
          "parameters": [
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Browse lessons by category and/or difficulty level. Returns a list of available lessons with title, category, difficulty, and description. Use when the user asks to browse lessons, filter by difficulty, or explore available educational content.",
          "mutating": false,
          "name": "getLessons",
          "parameters": [
            "category",
            "difficulty"
          ],
          "required": []
        }
      ],
      "category": "education",
      "description": "Learn crypto and DeFi concepts with interactive lessons, glossary, and structured learning paths",
      "findings": [],
      "identifier": "sperax-academy",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-academy",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-academy",
      "title": "Academy"
    },
    {
      "apis": [
        {
          "description": "Get all available AI models and providers that can be used for the agent. Returns a list of providers with their supported models and capabilities (vision, function calling, reasoning, etc.).",
          "mutating": false,
          "name": "getAvailableModels",
          "parameters": [
            "providerId"
          ],
          "required": []
        },
        {
          "description": "Search for tools (MCP plugins) in the marketplace. Users can browse and install tools directly from the search results. Use this when users want to find new tools or capabilities.",
          "mutating": false,
          "name": "searchMarketTools",
          "parameters": [
            "category",
            "pageSize",
            "query"
          ],
          "required": []
        },
        {
          "description": "Install a plugin for the agent. This tool ALWAYS REQUIRES user approval before installation, even in auto-run mode. For MCP marketplace plugins, it will install and enable the plugin. For Klavis tools and LobehubSkill providers that need OAuth, it will initiate the connection flow and wait for user to complete authorization.",
          "mutating": false,
          "name": "installPlugin",
          "parameters": [
            "identifier",
            "source"
          ],
          "required": [
            "identifier",
            "source"
          ]
        },
        {
          "description": "Update agent configuration and/or metadata. Use this to change model, provider, plugins, opening message, opening questions, chat settings, model parameters, title, description, avatar, tags, and toggle plugins. Only include fields you want to update. Use togglePlugin to enable/disable a specific plugin.",
          "mutating": false,
          "name": "updateConfig",
          "parameters": [
            "config",
            "meta",
            "togglePlugin"
          ],
          "required": []
        },
        {
          "description": "Update the agent's system prompt (systemRole). This is the core instruction that defines how the agent behaves, responds, and interacts with users. Use streaming mode for a typewriter effect in the editor.",
          "mutating": false,
          "name": "updatePrompt",
          "parameters": [
            "prompt",
            "streaming"
          ],
          "required": [
            "prompt"
          ]
        }
      ],
      "category": "agent-management",
      "description": "Create and configure AI agents from chat — pick a model, install plugins and market tools, and update the agent prompt and settings.",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-agent-builder",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-agent-builder",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-agent-builder",
      "title": "Agent Builder"
    },
    {
      "apis": [
        {
          "description": "Get the agent wallet address, chain, native balance, and stablecoin balances. Call this first to verify your wallet is funded.",
          "mutating": false,
          "name": "getWalletInfo",
          "parameters": [
            "includeTokens"
          ],
          "required": []
        },
        {
          "description": "Check for incoming deposits to the agent wallet. Returns recent transfers of ETH and ERC-20 tokens received by the agent.",
          "mutating": false,
          "name": "checkDeposits",
          "parameters": [
            "sinceMinutes"
          ],
          "required": []
        },
        {
          "description": "Send a crypto payment from the agent wallet. Supports native ETH and ERC-20 tokens (USDC, USDT, USDs). Returns transaction hash for verification.",
          "mutating": true,
          "name": "sendPayment",
          "parameters": [
            "amount",
            "to",
            "token"
          ],
          "required": [
            "to",
            "amount"
          ]
        },
        {
          "description": "Make an HTTP request to an x402-enabled paid endpoint. Automatically handles payment negotiation: detects 402, signs EIP-712 payment, retries with X-PAYMENT header. Budget limits are enforced.",
          "mutating": false,
          "name": "x402Fetch",
          "parameters": [
            "body",
            "headers",
            "method",
            "url"
          ],
          "required": [
            "url"
          ]
        },
        {
          "description": "Check the current x402 spending budget. Shows per-request max, hourly/daily spent, and remaining budget. Call this before making large payments.",
          "mutating": false,
          "name": "getBudgetStatus",
          "parameters": [],
          "required": []
        },
        {
          "description": "View the transfer address whitelist. Shows all approved recipient addresses with labels and chain restrictions. When the whitelist is non-empty, transfers to non-whitelisted addresses trigger a warning.",
          "mutating": false,
          "name": "getWhitelist",
          "parameters": [],
          "required": []
        },
        {
          "description": "Add an address to the transfer whitelist. Whitelisted addresses are pre-approved for payments and transfers without extra warnings.",
          "mutating": false,
          "name": "addToWhitelist",
          "parameters": [
            "address",
            "chainId",
            "label"
          ],
          "required": [
            "address",
            "label"
          ]
        },
        {
          "description": "Remove an address from the transfer whitelist by entry ID. Use getWhitelist first to find the entry ID.",
          "mutating": false,
          "name": "removeFromWhitelist",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        }
      ],
      "category": "productivity",
      "description": "Autonomous agent wallet for on-chain payments and x402 HTTP micropayments. Send/receive crypto and pay for services.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-agent-wallet",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-agent-wallet",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-agent-wallet",
      "title": "Agent Wallet"
    },
    {
      "apis": [
        {
          "description": "Get a wallet's historical asset transfers — native, ERC-20, ERC-721, ERC-1155 and internal — newest first, filterable by direction and category. This answers \"what has this wallet done\", which plain RPC cannot. Results are capped at 100 per call; when nextPageKey is returned, more history exists and the result must not be described as complete.",
          "mutating": false,
          "name": "getAssetTransfers",
          "parameters": [
            "address",
            "categories",
            "chain",
            "direction",
            "limit",
            "pageKey"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get a wallet's non-zero ERC-20 token balances on one chain, with symbol, name and decimals resolved per contract. Returns raw balances with NO USD pricing — use the Moralis tool for priced holdings. Metadata is resolved for at most 25 balances; when metadataTruncated is true the list is partial.",
          "mutating": false,
          "name": "getTokenBalances",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get name, symbol, decimals and logo for an ERC-20 token contract. Use this to identify an unfamiliar contract address before interpreting balances or transfers involving it.",
          "mutating": false,
          "name": "getTokenMetadata",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Alchemy enhanced APIs — a wallet's full historical transfer log across Ethereum, Arbitrum, Base, Polygon and Optimism, plus ERC-20 balances and token metadata.",
      "findings": [],
      "identifier": "sperax-alchemy",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-alchemy",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-alchemy",
      "title": "Alchemy"
    },
    {
      "apis": [
        {
          "description": "Render a glTF 2.0 / GLB model as a live, interactive, animated 3D avatar inline in the chat. Accepts app-hosted paths, three.ws-hosted models, or any public .glb / .gltf URL.",
          "mutating": false,
          "name": "renderAvatar",
          "parameters": [
            "caption",
            "defaultClip",
            "enableZoom",
            "size",
            "url"
          ],
          "required": [
            "url"
          ]
        },
        {
          "description": "Render several glTF 2.0 / GLB models as live, interactive 3D avatars side by side in the chat. Use to compare models or show a collection (up to 6 are rendered).",
          "mutating": false,
          "name": "renderGallery",
          "parameters": [
            "avatars",
            "size"
          ],
          "required": [
            "avatars"
          ]
        }
      ],
      "category": "productivity",
      "description": "Render GLB / glTF models as live, interactive 3D avatars in chat",
      "findings": [],
      "identifier": "sperax-avatar-3d",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-avatar-3d",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-avatar-3d",
      "title": "3D Avatar"
    },
    {
      "apis": [
        {
          "description": "Backtest a DeFi yield strategy against real historical data from DefiLlama. Simulates daily compounding, tracks portfolio value, and returns key metrics: total return, annualized return, max drawdown, Sharpe ratio, and a comparison vs buying ETH or holding USDC.",
          "mutating": false,
          "name": "runBacktest",
          "parameters": [
            "chainId",
            "dcaFrequency",
            "endDate",
            "initialCapital",
            "protocol",
            "reinvestEarnings",
            "startDate",
            "strategy",
            "targetToken"
          ],
          "required": [
            "strategy",
            "protocol",
            "chainId",
            "initialCapital",
            "startDate"
          ]
        },
        {
          "description": "Compare up to 5 DeFi strategies side-by-side over the same time period. Returns ranked results with the same set of metrics for each strategy.",
          "mutating": false,
          "name": "compareStrategies",
          "parameters": [
            "endDate",
            "initialCapital",
            "startDate",
            "strategies"
          ],
          "required": [
            "strategies",
            "initialCapital",
            "startDate"
          ]
        }
      ],
      "category": "defi-security",
      "description": "Backtest DeFi yield strategies against real historical data. Simulate how $10k in Aave, Curve, or Yearn would have performed over the past 6 months.",
      "findings": [],
      "identifier": "lobe-backtesting",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-backtesting",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-backtesting",
      "title": "Strategy Backtesting"
    },
    {
      "apis": [
        {
          "description": "Get 24-hour spot market statistics for a Binance pair: last price, absolute and percentage change, high/low, weighted average price, base and quote volume, trade count, and best bid/ask. Read-only public data.",
          "mutating": false,
          "name": "getTicker",
          "parameters": [
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Get the current spot order book for a pair, with bid and ask levels, the spread in absolute and percentage terms, the mid price, and total resting size per side. Use this to judge liquidity and slippage risk on a centralised venue.",
          "mutating": false,
          "name": "getOrderBook",
          "parameters": [
            "limit",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Get OHLCV candles for a pair at a given interval, plus the period high/low and net change across the returned window. Use for trend, volatility and range analysis.",
          "mutating": false,
          "name": "getKlines",
          "parameters": [
            "interval",
            "limit",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Get the funding rate for a USDⓈ-M perpetual future: the current period rate, recent history, the average across that history, mark and index price, and the next funding time. Positive funding means longs pay shorts (crowded long); negative means shorts pay longs. Only perpetual symbols have funding.",
          "mutating": false,
          "name": "getFundingRate",
          "parameters": [
            "limit",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Get open interest for a USDⓈ-M perpetual future — current contracts outstanding plus a historical series with USD notional, and the percentage change across the window. Read alongside price direction: rising open interest with rising price means new long money, rising open interest with falling price means shorts building. Only perpetual symbols report open interest.",
          "mutating": false,
          "name": "getOpenInterest",
          "parameters": [
            "period",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        }
      ],
      "category": "productivity",
      "description": "Read-only Binance public market data — spot tickers, order-book depth, OHLCV candles, perpetual funding rates and futures open interest. No account access or trading.",
      "findings": [],
      "identifier": "sperax-binance-market",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-binance-market",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-binance-market",
      "title": "Binance Market Data"
    },
    {
      "apis": [
        {
          "description": "Search for gift cards, eSIMs, and other digital products on Bitrefill. Returns a JSON object with a \"products\" array containing product id, name, type, country, and priceRange.",
          "mutating": false,
          "name": "searchProducts",
          "parameters": [
            "query",
            "country",
            "category",
            "limit"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get full details for a specific product including available denominations, pricing, supported countries, and redemption instructions.",
          "mutating": false,
          "name": "productDetails",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "Create an invoice to purchase one or more products. Returns an invoice with payment instructions. Supports Bitcoin, Lightning, Ethereum, and various stablecoins (USDC/USDT on multiple chains).",
          "mutating": false,
          "name": "buyProducts",
          "parameters": [
            "products",
            "paymentMethod"
          ],
          "required": [
            "products"
          ]
        },
        {
          "description": "Check the status of an invoice by ID. Returns payment status, amount, and payment method details.",
          "mutating": false,
          "name": "getInvoiceById",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "Get order details by ID including gift card codes, eSIM activation details, or other redemption information. Only available after payment is confirmed.",
          "mutating": false,
          "name": "getOrderById",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "List recent invoices for the authenticated account.",
          "mutating": false,
          "name": "listInvoices",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Unseal an order to reveal redemption codes, gift card PINs, eSIM activation details, or other sensitive delivery information. Must be called after payment is confirmed.",
          "mutating": false,
          "name": "unsealOrder",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "List recent orders for the authenticated account.",
          "mutating": false,
          "name": "listOrders",
          "parameters": [
            "limit"
          ],
          "required": []
        }
      ],
      "category": "productivity",
      "description": "Buy gift cards, eSIMs, and 10,000+ digital products with crypto across 180+ countries via Bitrefill.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        },
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-bitrefill",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-bitrefill",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-bitrefill",
      "title": "Bitrefill"
    },
    {
      "apis": [
        {
          "description": "List all cross-chain bridges with 24h and 7d volume data. Filter by chain and sort by volume or name.",
          "mutating": false,
          "name": "getBridges",
          "parameters": [
            "chain",
            "limit",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Get daily bridge deposit and withdrawal volumes for a specific chain. Shows 30-day history with net flow direction (inflow vs outflow).",
          "mutating": false,
          "name": "getBridgeVolume",
          "parameters": [
            "chain"
          ],
          "required": [
            "chain"
          ]
        },
        {
          "description": "Get a summary of the cross-chain bridge ecosystem: total volume, top bridges by volume, and top chains by inflow/outflow.",
          "mutating": false,
          "name": "getBridgeSummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Track cross-chain bridge volumes, net flows, and top bridges with real-time data from DefiLlama.",
      "findings": [],
      "identifier": "sperax-bridges",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-bridges",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-bridges",
      "title": "Bridge Analytics"
    },
    {
      "apis": [
        {
          "description": "Read the current Chainlink oracle price for a pair on a given chain, straight from the AggregatorV3Interface proxy on-chain. Returns the scaled price, the unscaled answer, feed address and decimals, round ID, when it was last updated, and whether the answer is stale. This is the price source DeFi protocols use for collateral valuation and liquidations.",
          "mutating": false,
          "name": "getPrice",
          "parameters": [
            "chain",
            "pair"
          ],
          "required": [
            "pair"
          ]
        },
        {
          "description": "List the Chainlink price feeds this tool can read, with their on-chain addresses. Omit `chain` to list every supported chain. Use this before telling a user a pair is unavailable — a pair missing on one chain often exists on another.",
          "mutating": false,
          "name": "listFeeds",
          "parameters": [
            "chain"
          ],
          "required": []
        },
        {
          "description": "Read a specific Chainlink aggregator round for a pair, or the latest round when no round ID is given. Round IDs are per-aggregator, so rounds from before a feed upgraded its aggregator are not readable through the proxy.",
          "mutating": false,
          "name": "getRoundData",
          "parameters": [
            "chain",
            "pair",
            "roundId"
          ],
          "required": [
            "pair"
          ]
        }
      ],
      "category": "market-data",
      "description": "Chainlink oracle price feeds read directly on-chain across Ethereum, Arbitrum, Base, BNB Chain, Polygon and Optimism — with round data, decimals and staleness detection.",
      "findings": [],
      "identifier": "sperax-chainlink",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-chainlink",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-chainlink",
      "title": "Chainlink"
    },
    {
      "apis": [
        {
          "description": "Execute code directly in the sandbox environment. Supports Python, JavaScript, and TypeScript. Returns execution output, errors, and exit code.",
          "mutating": false,
          "name": "executeCode",
          "parameters": [
            "description",
            "language",
            "code"
          ],
          "required": [
            "description",
            "language",
            "code"
          ]
        },
        {
          "description": "List files and folders in a specified directory. Input should be a path. Output is a JSON array of file/folder names.",
          "mutating": false,
          "name": "listLocalFiles",
          "parameters": [
            "directoryPath"
          ],
          "required": [
            "directoryPath"
          ]
        },
        {
          "description": "Read the content of a specific file. Input should be the file path. Output is the file content as a string.",
          "mutating": false,
          "name": "readLocalFile",
          "parameters": [
            "endLine",
            "path",
            "startLine"
          ],
          "required": [
            "path"
          ]
        },
        {
          "description": "Search for files within the sandbox based on keywords and filter options.",
          "mutating": false,
          "name": "searchLocalFiles",
          "parameters": [
            "directory",
            "fileType",
            "keyword",
            "modifiedAfter",
            "modifiedBefore"
          ],
          "required": [
            "directory"
          ]
        },
        {
          "description": "Moves or renames multiple files/directories. Input is an array of operations with source and destination paths.",
          "mutating": false,
          "name": "moveLocalFiles",
          "parameters": [
            "operations"
          ],
          "required": [
            "operations"
          ]
        },
        {
          "description": "Rename a file or folder in its current location. Input should be the current full path and the new name.",
          "mutating": false,
          "name": "renameLocalFile",
          "parameters": [
            "newName",
            "oldPath"
          ],
          "required": [
            "oldPath",
            "newName"
          ]
        },
        {
          "description": "Write content to a specific file. Input should be the file path and content. Overwrites existing file or creates a new one.",
          "mutating": false,
          "name": "writeLocalFile",
          "parameters": [
            "content",
            "createDirectories",
            "path"
          ],
          "required": [
            "path",
            "content"
          ]
        },
        {
          "description": "Perform exact string replacements in files. Must read the file first before editing.",
          "mutating": false,
          "name": "editLocalFile",
          "parameters": [
            "all",
            "path",
            "replace",
            "search"
          ],
          "required": [
            "path",
            "search",
            "replace"
          ]
        },
        {
          "description": "Execute a shell command and return its output. Supports both synchronous and background execution with timeout control.",
          "mutating": false,
          "name": "runCommand",
          "parameters": [
            "description",
            "background",
            "command",
            "timeout"
          ],
          "required": [
            "description",
            "command"
          ]
        },
        {
          "description": "Retrieve output from a running or completed background shell command. Returns only new output since the last check.",
          "mutating": false,
          "name": "getCommandOutput",
          "parameters": [
            "commandId"
          ],
          "required": [
            "commandId"
          ]
        },
        {
          "description": "Kill a running background shell command by its ID.",
          "mutating": false,
          "name": "killCommand",
          "parameters": [
            "commandId"
          ],
          "required": [
            "commandId"
          ]
        },
        {
          "description": "Search for content within files using regex patterns. Supports various output modes and filtering options.",
          "mutating": false,
          "name": "grepContent",
          "parameters": [
            "directory",
            "filePattern",
            "pattern",
            "recursive"
          ],
          "required": [
            "pattern",
            "directory"
          ]
        },
        {
          "description": "Find files matching glob patterns. Supports standard glob syntax like \"**/*.js\" or \"src/**/*.ts\".",
          "mutating": false,
          "name": "globLocalFiles",
          "parameters": [
            "directory",
            "pattern"
          ],
          "required": [
            "pattern"
          ]
        },
        {
          "description": "Export a file from the sandbox to cloud storage. The file will be uploaded to a pre-signed URL and can be downloaded by the user.",
          "mutating": false,
          "name": "exportFile",
          "parameters": [
            "path"
          ],
          "required": [
            "path"
          ]
        }
      ],
      "category": "productivity",
      "description": "Run code and shell commands in an isolated cloud sandbox, with a full workspace filesystem to read, write, search, and export files.",
      "findings": [],
      "identifier": "lobe-cloud-sandbox",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-cloud-sandbox",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-cloud-sandbox",
      "title": "Cloud Sandbox"
    },
    {
      "apis": [
        {
          "description": "Get current price, market cap, 24h volume, and 24h price change for a cryptocurrency token. Pass coinId (e.g. \"bitcoin\") or symbol (e.g. \"BTC\").",
          "mutating": false,
          "name": "getTokenPrice",
          "parameters": [
            "coinId",
            "symbol"
          ],
          "required": []
        },
        {
          "description": "Get top 7 trending tokens on CoinGecko right now.",
          "mutating": false,
          "name": "getTrendingTokens",
          "parameters": [],
          "required": []
        },
        {
          "description": "Search for tokens by name or symbol. Returns a list of matching tokens.",
          "mutating": false,
          "name": "searchTokens",
          "parameters": [
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get historical price data for a token to display a price chart. Returns timestamps and prices.",
          "mutating": false,
          "name": "getMarketChart",
          "parameters": [
            "coinId",
            "days"
          ],
          "required": [
            "coinId"
          ]
        },
        {
          "description": "Get global crypto market data: total market cap, BTC dominance, total volume, number of active cryptocurrencies.",
          "mutating": false,
          "name": "getGlobalData",
          "parameters": [],
          "required": []
        }
      ],
      "category": "market-data",
      "description": "Real-time cryptocurrency market data from CoinGecko",
      "findings": [],
      "identifier": "sperax-coingecko",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-coingecko",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-coingecko",
      "title": "CoinGecko"
    },
    {
      "apis": [
        {
          "description": "List all public companies holding Bitcoin on their balance sheet. Shows total holdings, entry value, current value, and % of BTC supply.",
          "mutating": false,
          "name": "getBtcHoldings",
          "parameters": [],
          "required": []
        },
        {
          "description": "List all public companies holding Ethereum on their balance sheet. Shows total holdings, entry value, current value.",
          "mutating": false,
          "name": "getEthHoldings",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get a summary of corporate crypto holdings: total BTC/ETH held by companies, top holders, and aggregate value.",
          "mutating": false,
          "name": "getHoldingsSummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "market-data",
      "description": "Track public company Bitcoin & Ethereum treasury holdings — MicroStrategy, Tesla, and more.",
      "findings": [],
      "identifier": "sperax-company-holdings",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-company-holdings",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-company-holdings",
      "title": "Company Holdings"
    },
    {
      "apis": [
        {
          "description": "Fetch the verified ABI for a smart contract. Returns all callable functions and events with their signatures. Use this first before readContract.",
          "mutating": false,
          "name": "getContractABI",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Call a view or pure function on a smart contract and return the on-chain result. The contract must be verified. Use getContractABI first to find available functions.",
          "mutating": false,
          "name": "readContract",
          "parameters": [
            "address",
            "args",
            "chain",
            "functionName"
          ],
          "required": [
            "address",
            "functionName"
          ]
        },
        {
          "description": "Fetch recent event logs emitted by a smart contract. Optionally filter by event signature.",
          "mutating": false,
          "name": "getContractEvents",
          "parameters": [
            "address",
            "chain",
            "eventSignature",
            "limit"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Decode a transaction hash — shows which contract function was called, with what arguments, and the ETH value sent.",
          "mutating": false,
          "name": "decodeTransaction",
          "parameters": [
            "chain",
            "txHash"
          ],
          "required": [
            "txHash"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Inspect, read, and decode any verified EVM smart contract. Fetch ABIs, call view functions, stream events, and decode transactions.",
      "findings": [],
      "identifier": "sperax-contract-explorer",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-contract-explorer",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-contract-explorer",
      "title": "Contract Explorer"
    },
    {
      "apis": [
        {
          "description": "Discover top-performing on-chain wallets ranked by 30-day P&L, win rate, trading volume, or yield farming returns. Optionally filter by minimum P&L or minimum trade count. Returns a ranked list of wallets with performance statistics.",
          "mutating": false,
          "name": "discoverWhales",
          "parameters": [
            "limit",
            "minPnlUsd",
            "minTrades",
            "strategy"
          ],
          "required": [
            "strategy"
          ]
        },
        {
          "description": "Fetch a detailed profile for any on-chain wallet address. Returns current holdings, 30-day and 90-day P&L, win rate, average trade size, most-used protocols, and optionally the last 30 decoded trades.",
          "mutating": false,
          "name": "getWalletProfile",
          "parameters": [
            "includeHistory",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Follow a wallet and configure copy-trading mirror parameters. Once followed, in-app notifications fire when the wallet makes a new trade, and the user can click \"Mirror Now\" to replicate it. Returns a follow rule ID.",
          "mutating": false,
          "name": "followWallet",
          "parameters": [
            "copyConfig",
            "label",
            "walletAddress"
          ],
          "required": [
            "walletAddress",
            "copyConfig"
          ]
        },
        {
          "description": "List all wallets the current user is following, along with their P&L performance since the user began following them and the current mirror configuration.",
          "mutating": false,
          "name": "listFollowedWallets",
          "parameters": [],
          "required": []
        },
        {
          "description": "Retrieve recent decoded on-chain trades for any wallet address. Returns decoded swaps, LP adds/removes, lending activity, and staking events. Optionally filter by date.",
          "mutating": false,
          "name": "getRecentTrades",
          "parameters": [
            "limit",
            "since",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        }
      ],
      "category": "productivity",
      "description": "Discover top on-chain traders, analyze their P&L and win rate, and mirror their trades with configurable size limits, delay, and stop-loss protection",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-copy-trading",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-copy-trading",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-copy-trading",
      "title": "Copy Trading"
    },
    {
      "apis": [
        {
          "description": "Fetch the latest crypto news articles. Optionally filter by category (defi, bitcoin, ethereum, regulation, nft). Returns markdown-formatted news items with source, date, and summary.",
          "mutating": false,
          "name": "getLatestNews",
          "parameters": [
            "category",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Search crypto news by keyword or token name. Returns matching articles with source and sentiment.",
          "mutating": false,
          "name": "searchNews",
          "parameters": [
            "keyword",
            "limit"
          ],
          "required": [
            "keyword"
          ]
        },
        {
          "description": "Get currently trending crypto topics with mention counts and sentiment indicators.",
          "mutating": false,
          "name": "getTrendingTopics",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get breaking crypto news from the last 2 hours. Returns urgent and time-sensitive headlines.",
          "mutating": false,
          "name": "getBreakingNews",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get DeFi-specific news including protocol updates, TVL changes, and yield opportunities.",
          "mutating": false,
          "name": "getDeFiNews",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get an AI-generated daily digest summarizing key crypto news with highlights.",
          "mutating": false,
          "name": "getDailyDigest",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get current market sentiment analysis derived from crypto news. Returns a 0-100 score with classification.",
          "mutating": false,
          "name": "getSentiment",
          "parameters": [],
          "required": []
        }
      ],
      "category": "social-intel",
      "description": "Latest crypto news, search, and trending topics with sentiment analysis",
      "findings": [],
      "identifier": "sperax-crypto-news",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-crypto-news",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-crypto-news",
      "title": "Crypto News"
    },
    {
      "apis": [
        {
          "description": "Get a comprehensive daily crypto briefing including top headlines, DeFi pulse, market sentiment, Sperax updates, and \"on this day in crypto\" history.",
          "mutating": false,
          "name": "getDailyReport",
          "parameters": [
            "date"
          ],
          "required": []
        },
        {
          "description": "Get current market sentiment including Fear & Greed index and social sentiment scores.",
          "mutating": false,
          "name": "getMarketSentiment",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get DeFi pulse data: top protocols by TVL change and current yield opportunities.",
          "mutating": false,
          "name": "getDefiPulse",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get Sperax ecosystem-specific updates: SPA price, USDs supply, ecosystem TVL, and latest news.",
          "mutating": false,
          "name": "getSperaxUpdate",
          "parameters": [],
          "required": []
        }
      ],
      "category": "social-intel",
      "description": "Daily crypto market briefing with sentiment, DeFi pulse, and Sperax updates",
      "findings": [],
      "identifier": "sperax-daily-report",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-daily-report",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-daily-report",
      "title": "Daily Report"
    },
    {
      "apis": [
        {
          "description": "Create a new persistent dashboard with the given widgets. Each widget pulls data from a specific tool API.",
          "mutating": false,
          "name": "createDashboard",
          "parameters": [
            "description",
            "name",
            "tags",
            "visibility",
            "widgets"
          ],
          "required": [
            "name",
            "widgets"
          ]
        },
        {
          "description": "Add a single widget to an existing dashboard.",
          "mutating": false,
          "name": "addWidget",
          "parameters": [
            "dashboardId",
            "position",
            "widget"
          ],
          "required": [
            "dashboardId",
            "widget"
          ]
        },
        {
          "description": "Remove a widget from a dashboard by widget ID.",
          "mutating": false,
          "name": "removeWidget",
          "parameters": [
            "dashboardId",
            "widgetId"
          ],
          "required": [
            "dashboardId",
            "widgetId"
          ]
        },
        {
          "description": "Update a dashboard's name, description, visibility, tags, or replace the entire widget list.",
          "mutating": false,
          "name": "updateDashboard",
          "parameters": [
            "dashboardId",
            "description",
            "name",
            "tags",
            "visibility",
            "widgets"
          ],
          "required": [
            "dashboardId"
          ]
        },
        {
          "description": "Get a dashboard by ID, including its full widget configuration.",
          "mutating": false,
          "name": "getDashboard",
          "parameters": [
            "dashboardId"
          ],
          "required": [
            "dashboardId"
          ]
        },
        {
          "description": "List all dashboards for the current user.",
          "mutating": false,
          "name": "listDashboards",
          "parameters": [
            "visibility"
          ],
          "required": []
        },
        {
          "description": "Permanently delete a dashboard. This cannot be undone.",
          "mutating": false,
          "name": "deleteDashboard",
          "parameters": [
            "dashboardId"
          ],
          "required": [
            "dashboardId"
          ]
        }
      ],
      "category": "productivity",
      "description": "Create and manage persistent visual dashboards from natural language",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-dashboard",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-dashboard",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dashboard",
      "title": "Dashboard"
    },
    {
      "apis": [
        {
          "description": "Create a new DCA (Dollar Cost Averaging) position via Mean Finance. Splits a total amount into scheduled recurring swaps over time. Returns a preview first, then transaction data for wallet signing upon confirmation. ALWAYS show the preview to the user before executing.",
          "mutating": true,
          "name": "createDCA",
          "parameters": [
            "chain",
            "frequency",
            "numSwaps",
            "tokenIn",
            "tokenOut",
            "totalAmount"
          ],
          "required": [
            "tokenIn",
            "tokenOut",
            "totalAmount",
            "frequency",
            "numSwaps"
          ]
        },
        {
          "description": "List all active DCA positions for the connected wallet. Shows progress, average price, remaining swaps, and next execution time. Optionally filter by chain.",
          "mutating": false,
          "name": "listPositions",
          "parameters": [
            "chain",
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Withdraw accumulated (already-swapped) tokens from an active DCA position. The position continues running for remaining swaps. Returns transaction data for wallet signing.",
          "mutating": false,
          "name": "withdrawPosition",
          "parameters": [
            "chain",
            "positionId",
            "walletAddress"
          ],
          "required": [
            "positionId"
          ]
        },
        {
          "description": "Cancel an active DCA position and reclaim all remaining (unswapped) funds. This stops all future scheduled swaps. Returns transaction data for wallet signing. ALWAYS confirm with the user before cancelling.",
          "mutating": false,
          "name": "cancelPosition",
          "parameters": [
            "chain",
            "positionId",
            "walletAddress"
          ],
          "required": [
            "positionId"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Dollar Cost Average into any token via Mean Finance — non-custodial, automated recurring swaps",
      "findings": [],
      "identifier": "sperax-dca",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-dca",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dca",
      "title": "DCA"
    },
    {
      "apis": [
        {
          "description": "Get the Crypto Fear & Greed Index from alternative.me. Shows current value, classification, and recent history.",
          "mutating": false,
          "name": "getFearGreedIndex",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get wallet token holdings and portfolio breakdown for a given Ethereum address.",
          "mutating": false,
          "name": "getWalletPortfolio",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get combined trending analysis: CoinGecko trending tokens + DefiLlama TVL movers for a comprehensive market pulse.",
          "mutating": false,
          "name": "getTrendingAnalysis",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get social sentiment scores for top crypto tokens. Shows mentions, sentiment classification, and sentiment scores.",
          "mutating": false,
          "name": "getSocialSentiment",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get a comprehensive market overview aggregating data from multiple sources: market cap, volume, fear & greed, top gainers/losers, and top TVL protocols.",
          "mutating": false,
          "name": "getMarketOverview",
          "parameters": [],
          "required": []
        }
      ],
      "category": "defi-analytics",
      "description": "Multi-source DeFi analytics: sentiment, trends, portfolio, and market overview",
      "findings": [],
      "identifier": "sperax-defi-analytics",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-defi-analytics",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-defi-analytics",
      "title": "DeFi Analytics"
    },
    {
      "apis": [
        {
          "description": "Get recent DeFi hacks and exploits, filtered by time window and minimum loss. Returns protocol, chain, technique, and loss/recovery amounts.",
          "mutating": false,
          "name": "getRecentHacks",
          "parameters": [
            "days",
            "minAmountUsd"
          ],
          "required": []
        },
        {
          "description": "Get all known hack events for a specific protocol by name. Shows complete hack history including techniques used and amounts stolen/recovered.",
          "mutating": false,
          "name": "getHacksByProtocol",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get a yearly summary of DeFi hacks including total lost, top attack techniques, most-targeted chains, and the largest single hack.",
          "mutating": false,
          "name": "getHackSummary",
          "parameters": [
            "year"
          ],
          "required": []
        }
      ],
      "category": "defi-security",
      "description": "Track DeFi hacks, exploits, and security incidents with real-time data from DefiLlama.",
      "findings": [],
      "identifier": "sperax-defi-hacks",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-defi-hacks",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-defi-hacks",
      "title": "DeFi Hacks"
    },
    {
      "apis": [
        {
          "description": "Get TVL and TVL history for a specific DeFi protocol. Pass the protocol slug (e.g. \"aave\", \"lido\", \"uniswap\").",
          "mutating": false,
          "name": "getProtocolTvl",
          "parameters": [
            "protocolSlug"
          ],
          "required": [
            "protocolSlug"
          ]
        },
        {
          "description": "Get top DeFi protocols ranked by TVL. Optionally filter by chain and limit results.",
          "mutating": false,
          "name": "getTopProtocols",
          "parameters": [
            "chain",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get top yield/farming pools across DeFi. Optionally filter by chain, stablecoin-only, or minimum TVL.",
          "mutating": false,
          "name": "getYields",
          "parameters": [
            "chain",
            "minTvl",
            "stablecoin"
          ],
          "required": []
        },
        {
          "description": "Get TVL breakdown across all blockchains. Shows which chains hold the most TVL.",
          "mutating": false,
          "name": "getChainTvl",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get DEX trading volumes. Optionally filter by chain to see DEX activity on a specific blockchain.",
          "mutating": false,
          "name": "getDexVolumes",
          "parameters": [
            "chain"
          ],
          "required": []
        }
      ],
      "category": "defi-analytics",
      "description": "DeFi protocol data, TVL rankings, yield pools, and DEX volumes from DefiLlama",
      "findings": [],
      "identifier": "sperax-defillama",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-defillama",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-defillama",
      "title": "DefiLlama"
    },
    {
      "apis": [
        {
          "description": "List all DEX aggregators ranked by 24h trading volume.",
          "mutating": false,
          "name": "getAggregators",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get historical daily volume data for a specific DEX aggregator.",
          "mutating": false,
          "name": "getAggregatorVolume",
          "parameters": [
            "aggregator"
          ],
          "required": [
            "aggregator"
          ]
        },
        {
          "description": "Get an overall DEX aggregator market summary.",
          "mutating": false,
          "name": "getAggregatorSummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "defi-trading",
      "description": "DEX aggregator volume rankings and analytics via DefiLlama — 1inch, Paraswap, CoW Swap, and more.",
      "findings": [],
      "identifier": "sperax-dex-aggregators",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-dex-aggregators",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dex-aggregators",
      "title": "DEX Aggregators"
    },
    {
      "apis": [
        {
          "description": "Fetch new token listings from DexScreener and GeckoTerminal across 950+ DEXs. Returns listings with momentum scores, risk flags, liquidity, and LP lock status. Supports filtering by chain, minimum liquidity, and minimum momentum score.",
          "mutating": false,
          "name": "getNewListings",
          "parameters": [
            "chain",
            "limit",
            "minLiquidity",
            "minMomentumScore"
          ],
          "required": []
        },
        {
          "description": "Get full details for a specific new listing by token contract address and chain. Returns momentum score, risk flags, LP lock status, price changes, and transaction counts.",
          "mutating": false,
          "name": "getListingDetail",
          "parameters": [
            "chain",
            "tokenAddress"
          ],
          "required": [
            "tokenAddress",
            "chain"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Real-time new DEX token listing discovery with momentum scoring and risk analysis",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        },
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-dex-new-listings",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-dex-new-listings",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dex-new-listings",
      "title": "DEX New Listings"
    },
    {
      "apis": [
        {
          "description": "Get dashboard data by slug or Dune query ID. Returns query results and metadata. Requires DUNE_API_KEY for live data; without it, provides a direct link to the dashboard on dune.com.",
          "mutating": false,
          "name": "queryDashboard",
          "parameters": [
            "dashboardSlug"
          ],
          "required": [
            "dashboardSlug"
          ]
        },
        {
          "description": "List trending Dune queries and dashboards. Optionally filter by category. Returns a curated list.",
          "mutating": false,
          "name": "getPopularQueries",
          "parameters": [
            "category"
          ],
          "required": []
        },
        {
          "description": "Get wallet activity analytics: total tx count, gas spent, chains used, first tx date, most used protocol.",
          "mutating": false,
          "name": "getWalletAnalytics",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get protocol-level metrics: TVL, 24h volume, fees, revenue, active users.",
          "mutating": false,
          "name": "getProtocolMetrics",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get chain activity metrics: 24h transactions, active wallets, TPS, gas prices. Shows all major chains if no specific chain is provided.",
          "mutating": false,
          "name": "getChainActivity",
          "parameters": [
            "chain"
          ],
          "required": []
        }
      ],
      "category": "productivity",
      "description": "Blockchain analytics dashboards, protocol metrics, and on-chain data",
      "findings": [],
      "identifier": "sperax-dune-analytics",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-dune-analytics",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dune-analytics",
      "title": "Dune Analytics"
    },
    {
      "apis": [
        {
          "description": "Scan a wallet for dust tokens (small balances) across all supported chains.",
          "mutating": false,
          "name": "scanForDust",
          "parameters": [
            "address",
            "minValueUsd"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Calculate optimal sweep strategy: which tokens to consolidate and where to deposit for yield.",
          "mutating": false,
          "name": "getSweepStrategy",
          "parameters": [
            "address",
            "targetYield"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Quick estimate of total recoverable dust value after gas costs.",
          "mutating": false,
          "name": "estimateSweepValue",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Execute the sweep strategy (consolidate dust and deposit for yield). Requires user approval.",
          "mutating": true,
          "name": "executeSweep",
          "parameters": [
            "address",
            "strategy"
          ],
          "required": [
            "address",
            "strategy"
          ]
        },
        {
          "description": "View past sweep operations and yield earned.",
          "mutating": false,
          "name": "getSweepHistory",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Scan wallets for small token balances across chains and consolidate them into DeFi yield. Recover trapped value from gas-prohibitive dust tokens.",
      "findings": [],
      "identifier": "sperax-dust-sweeper",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-dust-sweeper",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-dust-sweeper",
      "title": "Dust Sweeper"
    },
    {
      "apis": [
        {
          "description": "Register (deploy) a new AI agent on-chain as an ERC-721 NFT. Creates a permanent, verifiable identity for the agent on the selected blockchain. Triggered by \"deploy [name] to [chain]\", \"register agent\", or \"put [name] on-chain\". Returns the agent ID, transaction hash, and explorer URL.",
          "mutating": false,
          "name": "registerAgent",
          "parameters": [
            "chain",
            "description",
            "imageUrl",
            "name",
            "serviceRegistryHash",
            "services",
            "trust"
          ],
          "required": [
            "name",
            "description"
          ]
        },
        {
          "description": "Look up a registered agent by its token ID. Returns the owner address, metadata URI, decoded metadata (name, description, services), and chain.",
          "mutating": false,
          "name": "getAgent",
          "parameters": [
            "agentId",
            "chain"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "List all agents owned by a specific wallet address. Returns an array of registered agents with their metadata.",
          "mutating": false,
          "name": "listAgents",
          "parameters": [
            "chain",
            "limit",
            "owner"
          ],
          "required": [
            "owner"
          ]
        },
        {
          "description": "Search for registered agents by name, description, or service type. Discovers agents across the on-chain registry.",
          "mutating": false,
          "name": "searchAgents",
          "parameters": [
            "chain",
            "limit",
            "query",
            "serviceType"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get an agent's on-chain reputation data including total feedback count, average score, and recent reviews.",
          "mutating": false,
          "name": "getReputation",
          "parameters": [
            "agentId",
            "chain",
            "limit"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Submit on-chain reputation feedback for an agent. Score ranges from -128 to +127. Requires gas fees.",
          "mutating": false,
          "name": "submitFeedback",
          "parameters": [
            "agentId",
            "chain",
            "comment",
            "score"
          ],
          "required": [
            "agentId",
            "score",
            "comment"
          ]
        },
        {
          "description": "Query the ERC-8004 subgraph for indexed on-chain data — agent registrations, ownership transfers, feedback events, and aggregate statistics. Uses The Graph protocol for efficient historical queries.",
          "mutating": false,
          "name": "querySubgraph",
          "parameters": [
            "entity",
            "first",
            "orderBy",
            "orderDirection",
            "where"
          ],
          "required": [
            "entity"
          ]
        },
        {
          "description": "Get the full validation details for an agent attestation type, including the validator address, attestation data, and timestamp. Only available on testnets (bsc-testnet, sepolia).",
          "mutating": false,
          "name": "getValidation",
          "parameters": [
            "agentId",
            "attestationType",
            "chain"
          ],
          "required": [
            "agentId",
            "attestationType"
          ]
        },
        {
          "description": "Check whether an agent has been validated for a specific attestation type. Returns a simple boolean result. Only available on testnets (bsc-testnet, sepolia).",
          "mutating": false,
          "name": "checkValidation",
          "parameters": [
            "agentId",
            "attestationType",
            "chain"
          ],
          "required": [
            "agentId",
            "attestationType"
          ]
        },
        {
          "description": "Update the metadata URI for an agent you own. Calls setAgentURI(agentId, newURI) on the identity registry. Requires the caller to be the current owner of the agent NFT.",
          "mutating": false,
          "name": "setURI",
          "parameters": [
            "agentId",
            "chain",
            "newURI"
          ],
          "required": [
            "agentId",
            "newURI"
          ]
        },
        {
          "description": "Get the total number of AI agents registered on a chain by binary-searching sequential token IDs. Useful for analytics and understanding overall protocol adoption. Read-only — no wallet required.",
          "mutating": false,
          "name": "getAgentCount",
          "parameters": [
            "chain"
          ],
          "required": []
        },
        {
          "description": "Search for registered AI agents across ALL supported blockchains simultaneously. Runs parallel queries on bsc-testnet, bsc-mainnet, ethereum, sepolia, arbitrum, base, optimism, polygon and more, then merges results grouped by chain. Read-only — no wallet required.",
          "mutating": false,
          "name": "searchAllChains",
          "parameters": [
            "limit",
            "query"
          ],
          "required": []
        },
        {
          "description": "Set on-chain key-value metadata for a registered agent. Common keys: \"version\", \"a2a.endpoint\", \"mcp.endpoint\", \"did\", \"ens\", \"x402.enabled\", \"a2a.serviceRegistry\" (IPFS CID of the commerce service manifest). Value is stored as UTF-8 bytes. Requires a wallet signature and gas.",
          "mutating": false,
          "name": "setMetadata",
          "parameters": [
            "agentId",
            "chain",
            "key",
            "value"
          ],
          "required": [
            "agentId",
            "key",
            "value"
          ]
        },
        {
          "description": "Read a single on-chain metadata value for a registered agent by key. Returns the decoded UTF-8 value and the raw hex bytes.",
          "mutating": false,
          "name": "getMetadata",
          "parameters": [
            "agentId",
            "chain",
            "key"
          ],
          "required": [
            "agentId",
            "key"
          ]
        },
        {
          "description": "Read multiple on-chain metadata values for a registered agent in a single call. Returns a map of key → { value, rawBytes }.",
          "mutating": false,
          "name": "batchGetMetadata",
          "parameters": [
            "agentId",
            "chain",
            "keys"
          ],
          "required": [
            "agentId",
            "keys"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Register, discover, and manage AI agents on-chain with ERC-8004 — decentralized identity as ERC-721 NFTs",
      "findings": [],
      "identifier": "sperax-erc8004",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-erc8004",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-erc8004",
      "title": "ERC-8004 Agent Registry"
    },
    {
      "apis": [
        {
          "description": "Get ETH balance for an address. Returns balance in ETH and Wei. Displays a balance card in chat.",
          "mutating": false,
          "name": "getAddressBalance",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get recent transactions for an address. Shows a scrollable transaction list in chat with from/to, value, and status.",
          "mutating": false,
          "name": "getTransactions",
          "parameters": [
            "address",
            "chain",
            "limit"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get ERC-20 token transfers for an address. Shows token name, symbol, amount, and direction.",
          "mutating": false,
          "name": "getTokenTransfers",
          "parameters": [
            "address",
            "chain",
            "contractAddress"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get contract verification status, name, compiler version, and ABI availability for a smart contract address.",
          "mutating": false,
          "name": "getContractInfo",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get current gas prices (safe / propose / fast) in Gwei. Shows a gas indicator card in chat.",
          "mutating": false,
          "name": "getGasOracle",
          "parameters": [
            "chain"
          ],
          "required": []
        },
        {
          "description": "Get NFT transfer history for a wallet address across ERC-721 and ERC-1155 standards.",
          "mutating": false,
          "name": "getNftTransfers",
          "parameters": [
            "address",
            "chain",
            "contractAddress",
            "standard",
            "page",
            "offset"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get NFT transfers for a specific collection contract across ERC-721 and ERC-1155.",
          "mutating": false,
          "name": "getNftCollectionTransfers",
          "parameters": [
            "chain",
            "contractAddress",
            "standard",
            "page",
            "offset"
          ],
          "required": [
            "contractAddress"
          ]
        },
        {
          "description": "Get internal (trace) transactions for an address — reveals ETH transfers made by smart contracts, including contract creation and self-destruct operations.",
          "mutating": false,
          "name": "getInternalTransactions",
          "parameters": [
            "address",
            "chain",
            "endBlock",
            "offset",
            "page",
            "startBlock"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Explore Ethereum on-chain data: balances, transactions, contracts, and gas",
      "findings": [],
      "identifier": "sperax-etherscan",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-etherscan",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-etherscan",
      "title": "Etherscan"
    },
    {
      "apis": [
        {
          "description": "Scan DEXes for real-time arbitrage opportunities. Detects price discrepancies across multiple DEXes and chains, calculates net profitability after gas and flash loan fees.",
          "mutating": false,
          "name": "scanArbitrageOpportunities",
          "parameters": [
            "chains",
            "includeCrossChain",
            "maxHops",
            "minConfidence",
            "minProfitUsd",
            "tokens"
          ],
          "required": [
            "minProfitUsd"
          ]
        },
        {
          "description": "Find lending protocol positions near liquidation. Monitors health factors and calculates potential liquidation profits.",
          "mutating": false,
          "name": "findLiquidationTargets",
          "parameters": [
            "chains",
            "maxHealthFactor",
            "minProfitUsd",
            "onlyLiquidatable",
            "protocols"
          ],
          "required": [
            "maxHealthFactor",
            "minProfitUsd"
          ]
        },
        {
          "description": "Estimate exact profitability of a flash loan opportunity. Calculates all costs (gas, flash loan fee, slippage) and shows step-by-step execution plan.",
          "mutating": false,
          "name": "estimateFlashLoanProfit",
          "parameters": [
            "loanAmountUsd",
            "opportunityId",
            "preferredProvider"
          ],
          "required": [
            "loanAmountUsd"
          ]
        },
        {
          "description": "Compare flash loan providers. Shows fees, available liquidity, supported tokens, and recommendations.",
          "mutating": false,
          "name": "getFlashLoanProviders",
          "parameters": [
            "chain",
            "minAmountUsd",
            "token"
          ],
          "required": [
            "chain"
          ]
        },
        {
          "description": "Analyze historical flash loan activity on a chain. Shows trends in profitability, common strategies, and success rates.",
          "mutating": false,
          "name": "analyzeHistoricalFlashLoans",
          "parameters": [
            "chain",
            "limit",
            "minProfitUsd",
            "periodDays",
            "type"
          ],
          "required": [
            "chain",
            "periodDays"
          ]
        }
      ],
      "category": "defi-security",
      "description": "Scan DeFi protocols for flash loan arbitrage opportunities, liquidation targets, and multi-hop profit paths with real-time profitability analysis",
      "findings": [],
      "identifier": "sperax-flash-loan-scanner",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-flash-loan-scanner",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-flash-loan-scanner",
      "title": "Flash Loan Scanner"
    },
    {
      "apis": [
        {
          "description": "Get Four.meme public platform config — raisedToken address, TokenManager2 and Helper3 contract addresses. Read-only, no auth required.",
          "mutating": false,
          "name": "getConfig",
          "parameters": [],
          "required": []
        },
        {
          "description": "Look up a Four.meme token by BSC contract address. Returns on-chain version, tokenManager, current price, total supply, and remaining offers via Helper3.",
          "mutating": false,
          "name": "getTokenInfo",
          "parameters": [
            "tokenAddress"
          ],
          "required": [
            "tokenAddress"
          ]
        },
        {
          "description": "Browse Four.meme tokens with filters (name, symbol, label, graduated) and pagination. Returns a paginated list of tokens.",
          "mutating": false,
          "name": "tokenList",
          "parameters": [
            "labels",
            "listedPancake",
            "orderBy",
            "pageIndex",
            "pageSize",
            "symbol",
            "tokenName"
          ],
          "required": []
        },
        {
          "description": "Get full detail and trading info for a specific Four.meme token by address. Returns name, symbol, description, image, trading data via REST API.",
          "mutating": false,
          "name": "tokenGet",
          "parameters": [
            "tokenAddress"
          ],
          "required": [
            "tokenAddress"
          ]
        },
        {
          "description": "Get Four.meme token rankings. Supports: Hot (trending), TradingDesc (24h volume), Time (newest), ProgressDesc (bonding progress), Graduated.",
          "mutating": false,
          "name": "tokenRankings",
          "parameters": [
            "barType",
            "orderBy"
          ],
          "required": [
            "orderBy"
          ]
        },
        {
          "description": "Get a buy price quote for a Four.meme token. Estimate only — no transaction is executed. Pass amountWei (token amount to buy) or fundsWei (BNB to spend).",
          "mutating": false,
          "name": "quoteBuy",
          "parameters": [
            "amountWei",
            "fundsWei",
            "tokenAddress"
          ],
          "required": [
            "tokenAddress",
            "amountWei"
          ]
        },
        {
          "description": "Get a sell price quote for a Four.meme token. Estimate only — no transaction is executed.",
          "mutating": false,
          "name": "quoteSell",
          "parameters": [
            "amountWei",
            "tokenAddress"
          ],
          "required": [
            "tokenAddress",
            "amountWei"
          ]
        },
        {
          "description": "Fetch recent on-chain events from Four.meme TokenManager2: TokenCreate, TokenPurchase, TokenSale, LiquidityAdded. Specify a block range on BSC.",
          "mutating": false,
          "name": "getEvents",
          "parameters": [
            "fromBlock",
            "toBlock"
          ],
          "required": [
            "fromBlock"
          ]
        },
        {
          "description": "Get tax/fee info for a Four.meme TaxToken — feeRate, burnRate, divideRate, liquidityRate, recipientRate, recipientAddress, minSharing.",
          "mutating": false,
          "name": "getTaxInfo",
          "parameters": [
            "tokenAddress"
          ],
          "required": [
            "tokenAddress"
          ]
        },
        {
          "description": "Profile a token creator on Four.meme. Returns all tokens launched by the creator with risk flags: abandonment rate, graduation rate, average bonding progress, and creator age. Use to assess rug-pull risk before trading.",
          "mutating": false,
          "name": "getCreatorTokens",
          "parameters": [
            "creatorAddress",
            "limit"
          ],
          "required": [
            "creatorAddress"
          ]
        },
        {
          "description": "Analyze token holder concentration on BSC. Returns top holders with balances and percentages, plus a risk assessment (low/medium/high/critical) based on top-5 and top-10 concentration. Use to detect whale risk or rug-pull setups.",
          "mutating": false,
          "name": "getTopHolders",
          "parameters": [
            "limit",
            "tokenAddress"
          ],
          "required": [
            "tokenAddress"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "BSC meme token launchpad — create, trade, and track tokens on four.meme",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-four-meme",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-four-meme",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-four-meme",
      "title": "Four.meme"
    },
    {
      "apis": [
        {
          "description": "Get currently active Fusion orders for a wallet.",
          "mutating": false,
          "name": "getActiveOrders",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get historical Fusion orders for a wallet.",
          "mutating": false,
          "name": "getOrderHistory",
          "parameters": [
            "address",
            "chain",
            "limit"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get an overall summary of Fusion order activity for a wallet.",
          "mutating": false,
          "name": "getOrderSummary",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Track 1inch Fusion gasless swap orders — active, filled, expired, and cancelled.",
      "findings": [],
      "identifier": "sperax-fusion-orders",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-fusion-orders",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-fusion-orders",
      "title": "Fusion Orders"
    },
    {
      "apis": [
        {
          "description": "Get an overview of on-chain AI agents deployed on Giza, including their status, total inferences, and proofs generated. Supports filtering by chain, status, and result limit.",
          "mutating": false,
          "name": "getAgentOverview",
          "parameters": [
            "chain",
            "limit",
            "status"
          ],
          "required": []
        },
        {
          "description": "Get ZKML proof history showing verification status, proof type (Cairo/Noir/RISC Zero), duration, and on-chain transaction details. Great for visualizing proof verification trends.",
          "mutating": false,
          "name": "getProofHistory",
          "parameters": [
            "agentId",
            "limit",
            "proofType"
          ],
          "required": []
        },
        {
          "description": "Get detailed performance metrics for a specific AI model including inference latency, proof generation time, accuracy, and historical inference volume chart data.",
          "mutating": false,
          "name": "getModelPerformance",
          "parameters": [
            "modelId"
          ],
          "required": [
            "modelId"
          ]
        },
        {
          "description": "Get protocol-wide analytics for the Giza ecosystem including total agents, proofs, inference counts, chain breakdown, and trend visualization data.",
          "mutating": false,
          "name": "getProtocolAnalytics",
          "parameters": [],
          "required": []
        }
      ],
      "category": "productivity",
      "description": "Verifiable AI agent analytics with ZKML proof visualization on-chain",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-giza",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-giza",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-giza",
      "title": "Giza"
    },
    {
      "apis": [
        {
          "description": "List recent emails from the inbox with optional filters.",
          "mutating": false,
          "name": "listEmails",
          "parameters": [
            "labelIds",
            "maxResults",
            "query"
          ],
          "required": []
        },
        {
          "description": "Get a specific email by its ID, including full body and headers.",
          "mutating": false,
          "name": "getEmail",
          "parameters": [
            "emailId"
          ],
          "required": [
            "emailId"
          ]
        },
        {
          "description": "Search emails using Gmail search syntax (from:, to:, subject:, has:attachment, etc.).",
          "mutating": false,
          "name": "searchEmails",
          "parameters": [
            "maxResults",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Compose and send a new email. Requires user confirmation before sending.",
          "mutating": false,
          "name": "composeEmail",
          "parameters": [
            "bcc",
            "body",
            "cc",
            "subject",
            "to"
          ],
          "required": [
            "to",
            "subject",
            "body"
          ]
        },
        {
          "description": "Create a draft email without sending it.",
          "mutating": false,
          "name": "createDraft",
          "parameters": [
            "bcc",
            "body",
            "cc",
            "subject",
            "to"
          ],
          "required": [
            "to",
            "subject",
            "body"
          ]
        },
        {
          "description": "Reply to an existing email thread. Requires user confirmation.",
          "mutating": false,
          "name": "replyToEmail",
          "parameters": [
            "body",
            "emailId"
          ],
          "required": [
            "emailId",
            "body"
          ]
        },
        {
          "description": "Move an email to trash. Requires user confirmation.",
          "mutating": false,
          "name": "deleteEmail",
          "parameters": [
            "emailId"
          ],
          "required": [
            "emailId"
          ]
        }
      ],
      "category": "communication",
      "description": "Read, compose, search, and manage Gmail emails",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-gmail",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-gmail",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-gmail",
      "title": "Gmail"
    },
    {
      "apis": [
        {
          "description": "Get wallet profit statistics for a Solana wallet including PnL (realized & unrealized), total trades, win rate, buy/sell volume, and average hold time. Displays a wallet performance card in chat.",
          "mutating": false,
          "name": "getWalletProfitStats",
          "parameters": [
            "period",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get wallet social info including Twitter/X handle, wallet tags (smart_money, kol, whale), funding source, and activity timestamps.",
          "mutating": false,
          "name": "getWalletSocialInfo",
          "parameters": [
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get detailed token information including name, symbol, market cap, holders, volume, price, liquidity, and creation time for a Solana token.",
          "mutating": false,
          "name": "getTokenInfo",
          "parameters": [
            "tokenCa"
          ],
          "required": [
            "tokenCa"
          ]
        },
        {
          "description": "Get recent trade history for a Solana token. Optionally filter by trader type: \"smart\" for smart money only, \"kol\" for Key Opinion Leaders, or \"all\" for all traders.",
          "mutating": false,
          "name": "getTokenTrades",
          "parameters": [
            "limit",
            "tag",
            "tokenCa"
          ],
          "required": [
            "tokenCa"
          ]
        },
        {
          "description": "Get the top holders of a Solana token including balance, percentage of supply, USD value, and holder tags.",
          "mutating": false,
          "name": "getTokenTopHolders",
          "parameters": [
            "limit",
            "tokenCa"
          ],
          "required": [
            "tokenCa"
          ]
        },
        {
          "description": "Get trending/new Solana token rankings. Filter by timeframe (1h, 6h, 24h) and sort by swaps, volume, market_cap, or price_change.",
          "mutating": false,
          "name": "getTrendingTokens",
          "parameters": [
            "limit",
            "orderby",
            "timeframe"
          ],
          "required": []
        },
        {
          "description": "Get a list of Solana tokens sorted by market cap or volume. Useful for top token overview.",
          "mutating": false,
          "name": "getTokenList",
          "parameters": [
            "limit",
            "orderby"
          ],
          "required": []
        }
      ],
      "category": "productivity",
      "description": "Solana on-chain analytics: wallet PnL & winrate, smart money tracking, token info, trending tokens, and top holder analysis via GMGN.ai",
      "findings": [],
      "identifier": "sperax-gmgn",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-gmgn",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-gmgn",
      "title": "GMGN (Solana)"
    },
    {
      "apis": [
        {
          "description": "List upcoming events from the calendar with optional date range.",
          "mutating": false,
          "name": "listEvents",
          "parameters": [
            "calendarId",
            "maxResults",
            "timeMax",
            "timeMin"
          ],
          "required": []
        },
        {
          "description": "Get details for a specific calendar event.",
          "mutating": false,
          "name": "getEvent",
          "parameters": [
            "eventId"
          ],
          "required": [
            "eventId"
          ]
        },
        {
          "description": "Create a new calendar event.",
          "mutating": false,
          "name": "createEvent",
          "parameters": [
            "attendees",
            "description",
            "endTime",
            "location",
            "startTime",
            "title"
          ],
          "required": [
            "title",
            "startTime",
            "endTime"
          ]
        },
        {
          "description": "Update an existing calendar event.",
          "mutating": false,
          "name": "updateEvent",
          "parameters": [
            "attendees",
            "description",
            "endTime",
            "eventId",
            "location",
            "startTime",
            "title"
          ],
          "required": [
            "eventId"
          ]
        },
        {
          "description": "Delete a calendar event. Requires user confirmation.",
          "mutating": false,
          "name": "deleteEvent",
          "parameters": [
            "eventId"
          ],
          "required": [
            "eventId"
          ]
        },
        {
          "description": "Search for events by keyword within a date range.",
          "mutating": false,
          "name": "searchEvents",
          "parameters": [
            "query",
            "timeMax",
            "timeMin"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Check free/busy availability for a given time range.",
          "mutating": false,
          "name": "checkAvailability",
          "parameters": [
            "timeMax",
            "timeMin"
          ],
          "required": [
            "timeMin",
            "timeMax"
          ]
        }
      ],
      "category": "communication",
      "description": "Manage Google Calendar events, check availability, and schedule meetings",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-google-calendar",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-google-calendar",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-google-calendar",
      "title": "Google Calendar"
    },
    {
      "apis": [
        {
          "description": "List files in a folder or the root of Google Drive.",
          "mutating": false,
          "name": "listFiles",
          "parameters": [
            "folderId",
            "maxResults",
            "mimeType"
          ],
          "required": []
        },
        {
          "description": "Search for files by name, content, or other query parameters.",
          "mutating": false,
          "name": "searchFiles",
          "parameters": [
            "maxResults",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get metadata for a specific file.",
          "mutating": false,
          "name": "getFile",
          "parameters": [
            "fileId"
          ],
          "required": [
            "fileId"
          ]
        },
        {
          "description": "Read the text content of a document or text file.",
          "mutating": false,
          "name": "readFile",
          "parameters": [
            "fileId"
          ],
          "required": [
            "fileId"
          ]
        },
        {
          "description": "Create a new Google Doc, Sheet, or document with specified content.",
          "mutating": false,
          "name": "createFile",
          "parameters": [
            "content",
            "folderId",
            "mimeType",
            "name"
          ],
          "required": [
            "name"
          ]
        },
        {
          "description": "Create a new folder in Google Drive.",
          "mutating": false,
          "name": "createFolder",
          "parameters": [
            "name",
            "parentFolderId"
          ],
          "required": [
            "name"
          ]
        },
        {
          "description": "Move a file to trash. Requires user confirmation.",
          "mutating": false,
          "name": "deleteFile",
          "parameters": [
            "fileId"
          ],
          "required": [
            "fileId"
          ]
        },
        {
          "description": "Move a file to a different folder.",
          "mutating": false,
          "name": "moveFile",
          "parameters": [
            "destinationFolderId",
            "fileId"
          ],
          "required": [
            "fileId",
            "destinationFolderId"
          ]
        },
        {
          "description": "Share a file with specific users or generate a sharing link. Requires confirmation.",
          "mutating": false,
          "name": "shareFile",
          "parameters": [
            "email",
            "fileId",
            "role"
          ],
          "required": [
            "fileId"
          ]
        },
        {
          "description": "Upload a file to Google Drive.",
          "mutating": false,
          "name": "uploadFile",
          "parameters": [
            "content",
            "folderId",
            "mimeType",
            "name"
          ],
          "required": [
            "name",
            "content"
          ]
        }
      ],
      "category": "communication",
      "description": "Browse, search, read, and manage Google Drive files",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-google-drive",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-google-drive",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-google-drive",
      "title": "Google Drive"
    },
    {
      "apis": [
        {
          "description": "Run a deep token contract risk check via GoPlus Security (honeypot behavior, transfer restrictions, owner controls, blacklisting, proxy and source verification signals).",
          "mutating": false,
          "name": "checkTokenSecurity",
          "parameters": [
            "chainId",
            "contractAddress"
          ],
          "required": [
            "contractAddress"
          ]
        },
        {
          "description": "Analyze an EVM wallet/contract address risk profile via GoPlus Security (phishing, sanctions, suspicious activity indicators).",
          "mutating": false,
          "name": "checkAddressSecurity",
          "parameters": [
            "address",
            "chainId"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Check whether an address appears in GoPlus malicious address intelligence and summarize the threat signals.",
          "mutating": false,
          "name": "checkMaliciousAddress",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Batch token risk scanning for multiple contracts on the same chain, useful before watchlist additions or trade shortlisting.",
          "mutating": false,
          "name": "batchCheckTokenSecurity",
          "parameters": [
            "chainId",
            "contractAddresses"
          ],
          "required": [
            "contractAddresses"
          ]
        },
        {
          "description": "Scan a wallet's ERC-20/ERC-721 token approvals for risky spenders. Identifies unlimited approvals, revoked-but-still-active allowances, and known malicious spender addresses.",
          "mutating": false,
          "name": "checkApprovalSecurity",
          "parameters": [
            "address",
            "chainId"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Analyze an NFT contract for security risks — privilege escalation, unrestricted minting, hidden transfer abilities, self-destruct, and metadata manipulation.",
          "mutating": false,
          "name": "checkNFTSecurity",
          "parameters": [
            "chainId",
            "contractAddress"
          ],
          "required": [
            "contractAddress"
          ]
        },
        {
          "description": "Check a dApp URL against GoPlus's threat intelligence database — identifies phishing sites, malicious contract interactions, impersonation, and known scam domains.",
          "mutating": false,
          "name": "checkDAppSecurity",
          "parameters": [
            "url"
          ],
          "required": [
            "url"
          ]
        },
        {
          "description": "Detect phishing URLs using GoPlus real-time threat feeds. Checks against known phishing domains, typosquatting patterns, and suspicious URL structures.",
          "mutating": false,
          "name": "detectPhishingUrl",
          "parameters": [
            "url"
          ],
          "required": [
            "url"
          ]
        }
      ],
      "category": "defi-security",
      "description": "Enterprise-grade Web3 security intelligence powered by GoPlus Security — token risk scanning, address profiling, approval auditing, NFT security, dApp verification, and phishing detection.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-goplus-security",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-goplus-security",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-goplus-security",
      "title": "GoPlus Security"
    },
    {
      "apis": [
        {
          "description": "List currently active governance proposals across all major DAOs on Snapshot. Returns titles, vote choices, scores, and deadlines.",
          "mutating": false,
          "name": "getActiveProposals",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get governance proposals for a specific protocol/DAO on Snapshot. Shows active and recently closed proposals.",
          "mutating": false,
          "name": "getProtocolGovernance",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get a summary of governance activity: total active proposals, top DAOs by activity, and recently closed votes.",
          "mutating": false,
          "name": "getGovernanceSummary",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get full details for a specific proposal including body text and AI-generated analysis with risk assessment, impact summary, and vote recommendation.",
          "mutating": false,
          "name": "getProposalDetails",
          "parameters": [
            "analyzeForWallet",
            "proposalId"
          ],
          "required": [
            "proposalId"
          ]
        },
        {
          "description": "Get voting power for a wallet across protocols on Snapshot. Shows delegation status and total voting weight per DAO.",
          "mutating": false,
          "name": "getVotingPower",
          "parameters": [
            "protocols",
            "wallet"
          ],
          "required": [
            "wallet"
          ]
        },
        {
          "description": "Get governance participation history for a wallet. Shows past votes, choices made, and overall participation rate.",
          "mutating": false,
          "name": "getVotingHistory",
          "parameters": [
            "limit",
            "protocol",
            "wallet"
          ],
          "required": [
            "wallet"
          ]
        },
        {
          "description": "Prepare a vote on a Snapshot proposal. Returns the Snapshot voting URL and instructions. The user must sign the vote via their wallet — never auto-vote.",
          "mutating": false,
          "name": "prepareTx",
          "parameters": [
            "choice",
            "proposalId",
            "wallet"
          ],
          "required": [
            "proposalId",
            "choice",
            "wallet"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Track DAO governance proposals, votes, voting power, and participation history across protocols via Snapshot and Tally.",
      "findings": [],
      "identifier": "sperax-governance",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-governance",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-governance",
      "title": "Governance"
    },
    {
      "apis": [
        {
          "description": "Get detailed information about a specific agent, including their capabilities, available tools, and configuration. Use this to check if an agent has tools before deciding between speak vs executeAgentTask.",
          "mutating": false,
          "name": "getAgentInfo",
          "parameters": [
            "agentId"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Search for agents that can be invited to the group. Returns agents from the user's collection. Use this to find suitable agents before inviting them.",
          "mutating": false,
          "name": "searchAgent",
          "parameters": [
            "limit",
            "query"
          ],
          "required": []
        },
        {
          "description": "Create a new agent dynamically based on user requirements and add it to the group. Use this when no existing agent matches the needed expertise.",
          "mutating": false,
          "name": "createAgent",
          "parameters": [
            "avatar",
            "description",
            "systemRole",
            "title",
            "tools"
          ],
          "required": [
            "title",
            "systemRole"
          ]
        },
        {
          "description": "Create multiple agents at once and add them to the group. Use this to efficiently set up a team of agents with different expertise.",
          "mutating": false,
          "name": "batchCreateAgents",
          "parameters": [
            "agents"
          ],
          "required": [
            "agents"
          ]
        },
        {
          "description": "Invite an existing agent to join the group. The agent will become a member and participate in group conversations.",
          "mutating": false,
          "name": "inviteAgent",
          "parameters": [
            "agentId"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Remove an agent from the group. Note: The supervisor agent cannot be removed.",
          "mutating": false,
          "name": "removeAgent",
          "parameters": [
            "agentId"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Get all available AI models and providers that can be used for the supervisor agent. Returns a list of providers with their supported models and capabilities.",
          "mutating": false,
          "name": "getAvailableModels",
          "parameters": [
            "providerId"
          ],
          "required": []
        },
        {
          "description": "Search for tools (MCP plugins) in the marketplace for the supervisor agent.",
          "mutating": false,
          "name": "searchMarketTools",
          "parameters": [
            "category",
            "pageSize",
            "query"
          ],
          "required": []
        },
        {
          "description": "Install a plugin for the supervisor agent. This tool ALWAYS REQUIRES user approval before installation.",
          "mutating": false,
          "name": "installPlugin",
          "parameters": [
            "identifier",
            "source"
          ],
          "required": [
            "identifier",
            "source"
          ]
        },
        {
          "description": "Update agent configuration (model, provider, plugins, etc.). If agentId is not provided, updates the supervisor agent.",
          "mutating": false,
          "name": "updateConfig",
          "parameters": [
            "agentId",
            "config",
            "togglePlugin"
          ],
          "required": []
        },
        {
          "description": "Update a specific agent's system prompt (systemRole).",
          "mutating": false,
          "name": "updateAgentPrompt",
          "parameters": [
            "agentId",
            "prompt"
          ],
          "required": [
            "agentId",
            "prompt"
          ]
        },
        {
          "description": "Update the group's configuration and metadata. Use this to customize the group's appearance and welcome experience.",
          "mutating": false,
          "name": "updateGroup",
          "parameters": [
            "config",
            "meta"
          ],
          "required": []
        },
        {
          "description": "Update the group's shared prompt/content. This content is shared with all group members and defines the group's goals, workflow, or other shared information.",
          "mutating": false,
          "name": "updateGroupPrompt",
          "parameters": [
            "prompt"
          ],
          "required": [
            "prompt"
          ]
        }
      ],
      "category": "agent-management",
      "description": "Build and orchestrate multi-agent groups — create agents in bulk, invite or remove members, and manage each agent’s model, tools, and prompt.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        },
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-group-agent-builder",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-group-agent-builder",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-group-agent-builder",
      "title": "Group Agent Builder"
    },
    {
      "apis": [
        {
          "description": "Let a specific agent speak in the conversation. This is synchronous and waits for the agent's response. Use this for focused, single-agent interactions.",
          "mutating": false,
          "name": "speak",
          "parameters": [
            "agentId",
            "instruction",
            "skipCallSupervisor"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Let multiple agents respond simultaneously. All specified agents will generate responses in parallel, providing multiple perspectives. Use this when diverse viewpoints are valuable.",
          "mutating": false,
          "name": "broadcast",
          "parameters": [
            "agentIds",
            "instruction",
            "skipCallSupervisor"
          ],
          "required": [
            "agentIds"
          ]
        },
        {
          "description": "Delegate the conversation entirely to a specific agent. The supervisor exits orchestration mode and the delegated agent takes full control until explicitly recalled.",
          "mutating": false,
          "name": "delegate",
          "parameters": [
            "agentId",
            "reason"
          ],
          "required": [
            "agentId"
          ]
        },
        {
          "description": "Assign an asynchronous task to an agent. The task runs in the background and results are returned to the conversation context upon completion. Ideal for longer operations.",
          "mutating": false,
          "name": "executeAgentTask",
          "parameters": [
            "agentId",
            "title",
            "instruction",
            "timeout",
            "skipCallSupervisor"
          ],
          "required": [
            "agentId",
            "title",
            "instruction"
          ]
        },
        {
          "description": "Assign multiple tasks to different agents to run in parallel. Each agent works independently in their own context. Use this when you need multiple agents to work on different parts of a problem simultaneously.",
          "mutating": false,
          "name": "executeAgentTasks",
          "parameters": [
            "tasks",
            "skipCallSupervisor"
          ],
          "required": [
            "tasks"
          ]
        },
        {
          "description": "Interrupt a running agent task. Use this to stop a task that is taking too long or is no longer needed.",
          "mutating": false,
          "name": "interrupt",
          "parameters": [
            "taskId"
          ],
          "required": [
            "taskId"
          ]
        },
        {
          "description": "Summarize the current conversation and compress the context. Useful for long conversations to maintain relevant information while reducing token usage.",
          "mutating": false,
          "name": "summarize",
          "parameters": [
            "focus",
            "preserveRecent"
          ],
          "required": []
        },
        {
          "description": "Define a multi-agent collaboration workflow. Creates a structured sequence of agent interactions for complex tasks.",
          "mutating": false,
          "name": "createWorkflow",
          "parameters": [
            "name",
            "steps",
            "autoExecute"
          ],
          "required": [
            "name",
            "steps"
          ]
        },
        {
          "description": "Initiate a vote among agents on a specific question or decision. Each agent provides their choice and reasoning.",
          "mutating": false,
          "name": "vote",
          "parameters": [
            "question",
            "options",
            "voterAgentIds",
            "requireReasoning"
          ],
          "required": [
            "question",
            "options"
          ]
        }
      ],
      "category": "agent-management",
      "description": "Orchestrate and manage multi-agent group conversations",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-group-management",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-group-management",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-group-management",
      "title": "Group Management"
    },
    {
      "apis": [
        {
          "description": "Create a high-level plan document. Plans define the strategic direction (the \"what\" and \"why\"), while todos handle the actionable steps.",
          "mutating": false,
          "name": "createPlan",
          "parameters": [
            "goal",
            "description",
            "context"
          ],
          "required": [
            "goal",
            "description",
            "context"
          ]
        },
        {
          "description": "Update an existing plan document. Only use this when the goal fundamentally changes. Plans should remain stable once created - do not update plans just because details change.",
          "mutating": false,
          "name": "updatePlan",
          "parameters": [
            "planId",
            "goal",
            "description",
            "context"
          ],
          "required": [
            "planId"
          ]
        },
        {
          "description": "Create new todo items. Pass an array of text strings.",
          "mutating": false,
          "name": "createTodos",
          "parameters": [
            "adds"
          ],
          "required": [
            "adds"
          ]
        },
        {
          "description": "Update todo items with batch operations. Each operation type requires specific fields: - \"add\": requires \"text\" (the todo text to add) - \"update\": requires \"index\", optional \"newText\" and/or \"status\" - \"remove\": requires \"index\" only - \"complete\": requires \"index\" only (marks item as completed) - \"processing\": requires \"index\" only (marks item as in progress)",
          "mutating": false,
          "name": "updateTodos",
          "parameters": [
            "operations"
          ],
          "required": [
            "operations"
          ]
        },
        {
          "description": "Clear todo items. Can clear only completed items or all items.",
          "mutating": false,
          "name": "clearTodos",
          "parameters": [
            "mode"
          ],
          "required": [
            "mode"
          ]
        },
        {
          "description": "Execute a single long-running async task. The task runs in an isolated context and can take significant time to complete. Use this for a single complex operation that requires extended processing.",
          "mutating": false,
          "name": "execTask",
          "parameters": [
            "description",
            "instruction",
            "inheritMessages",
            "timeout"
          ],
          "required": [
            "description",
            "instruction"
          ]
        },
        {
          "description": "Execute one or more long-running async tasks. Each task runs in an isolated context and can take significant time to complete. Use this for complex operations that require extended processing.",
          "mutating": false,
          "name": "execTasks",
          "parameters": [
            "tasks"
          ],
          "required": [
            "tasks"
          ]
        }
      ],
      "category": "productivity",
      "description": "Plan goals and track progress with GTD methodology",
      "findings": [],
      "identifier": "lobe-gtd",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-gtd",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-gtd",
      "title": "GTD Tools"
    },
    {
      "apis": [
        {
          "description": "Get all SPL token balances for a Solana wallet including SOL, token names, symbols, prices, and USD values. Displays a token portfolio card in chat.",
          "mutating": false,
          "name": "getTokenBalances",
          "parameters": [
            "address",
            "showZeroBalance"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get enhanced, parsed transaction history for a Solana wallet. Shows human-readable transaction types (TRANSFER, SWAP, NFT_SALE, etc.), descriptions, and token movements.",
          "mutating": false,
          "name": "getTransactionHistory",
          "parameters": [
            "address",
            "limit",
            "type"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get all NFTs and digital assets owned by a Solana wallet using the DAS (Digital Asset Standard) API. Supports regular NFTs and compressed NFTs (cNFTs).",
          "mutating": false,
          "name": "getAssetsByOwner",
          "parameters": [
            "address",
            "limit",
            "page"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get detailed metadata for a specific NFT or digital asset on Solana. Returns name, description, image, attributes/traits, collection, creators, and royalty info.",
          "mutating": false,
          "name": "getAssetDetails",
          "parameters": [
            "assetId"
          ],
          "required": [
            "assetId"
          ]
        },
        {
          "description": "Get current Solana priority fee estimates for different urgency levels (min, low, medium, high, very high). Helps decide how much priority fee to set for transactions.",
          "mutating": false,
          "name": "getPriorityFees",
          "parameters": [
            "accountKeys"
          ],
          "required": []
        },
        {
          "description": "Resolve a .sol domain name to a Solana address, or look up if an address has an associated .sol domain. Uses Solana Name Service (SNS).",
          "mutating": false,
          "name": "resolveAddress",
          "parameters": [
            "input"
          ],
          "required": [
            "input"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Explore Solana on-chain data: token balances, transactions, NFTs, priority fees, and name resolution via Helius API",
      "findings": [],
      "identifier": "sperax-helius",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-helius",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-helius",
      "title": "Helius (Solana)"
    },
    {
      "apis": [
        {
          "description": "Calculate impermanent loss for a token pair LP position. Supports both standard AMM (x*y=k) and concentrated liquidity (Uni V3). Shows IL, fee earnings offset, net P&L, and break-even timeline.",
          "mutating": false,
          "name": "calculateIL",
          "parameters": [
            "currentPriceRatio",
            "daysActive",
            "entryPriceRatio",
            "feeTier",
            "investmentUsd",
            "priceLower",
            "priceUpper",
            "token0",
            "token1"
          ],
          "required": [
            "token0",
            "token1",
            "investmentUsd",
            "entryPriceRatio"
          ]
        },
        {
          "description": "Track real-time impermanent loss for an on-chain LP position. Fetches live data and shows current IL, fee earnings, and net position value.",
          "mutating": false,
          "name": "trackPositionIL",
          "parameters": [
            "chain",
            "poolAddress",
            "positionId",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "chain",
            "protocol"
          ]
        },
        {
          "description": "Run Monte Carlo simulation of future impermanent loss scenarios. Shows probability distributions, worst/best/expected cases, and confidence intervals.",
          "mutating": false,
          "name": "simulateILScenarios",
          "parameters": [
            "currentPriceRatio",
            "feeTier",
            "investmentUsd",
            "numSimulations",
            "priceLower",
            "priceUpper",
            "timeHorizonDays",
            "token0",
            "token1"
          ],
          "required": [
            "token0",
            "token1",
            "investmentUsd",
            "timeHorizonDays"
          ]
        },
        {
          "description": "Get hedge recommendations to offset impermanent loss. Suggests options, perp shorts, structured products, and calculates cost vs coverage tradeoff.",
          "mutating": false,
          "name": "getHedgeRecommendation",
          "parameters": [
            "chain",
            "currentILUsd",
            "positionSizeUsd",
            "riskTolerance",
            "token0",
            "token1"
          ],
          "required": [
            "token0",
            "token1",
            "positionSizeUsd",
            "currentILUsd",
            "riskTolerance"
          ]
        },
        {
          "description": "Get historical IL attribution breakdown across all wallet LP positions. Shows cumulative IL, fee earnings, and net P&L with daily breakdown.",
          "mutating": false,
          "name": "getHistoricalILAttribution",
          "parameters": [
            "chain",
            "periodDays",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "walletAddress",
            "chain",
            "periodDays"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "Advanced impermanent loss calculator with concentrated liquidity support, Monte Carlo simulation, hedge recommendations, and fee-adjusted P&L tracking",
      "findings": [],
      "identifier": "sperax-il-calculator",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-il-calculator",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-il-calculator",
      "title": "IL Calculator"
    },
    {
      "apis": [
        {
          "description": "Get internal transactions for an address on any EVM chain. Shows value flows between contracts.",
          "mutating": false,
          "name": "getInternalTxs",
          "parameters": [
            "address",
            "chain",
            "endBlock",
            "limit",
            "startBlock"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get all internal transactions within a specific transaction by hash.",
          "mutating": false,
          "name": "getInternalTxsByHash",
          "parameters": [
            "chain",
            "txHash"
          ],
          "required": [
            "txHash"
          ]
        },
        {
          "description": "Get a summary of internal transaction activity for an address.",
          "mutating": false,
          "name": "getInternalTxsSummary",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Trace internal (contract-to-contract) transactions on EVM chains.",
      "findings": [],
      "identifier": "sperax-internal-txs",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-internal-txs",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-internal-txs",
      "title": "Internal Txs"
    },
    {
      "apis": [
        {
          "description": "List markets on Kalshi. Filter by status (open/closed/settled), event_ticker, or series_ticker. Returns up to `limit` markets and a cursor for the next page.",
          "mutating": false,
          "name": "listMarkets",
          "parameters": [
            "cursor",
            "event_ticker",
            "limit",
            "series_ticker",
            "status"
          ],
          "required": []
        },
        {
          "description": "List Kalshi events (groups of related markets).",
          "mutating": false,
          "name": "listEvents",
          "parameters": [
            "cursor",
            "limit",
            "series_ticker",
            "status",
            "with_nested_markets"
          ],
          "required": []
        },
        {
          "description": "Fetch a single Kalshi market by ticker.",
          "mutating": false,
          "name": "getMarket",
          "parameters": [
            "ticker"
          ],
          "required": [
            "ticker"
          ]
        },
        {
          "description": "Fetch the current orderbook for a Kalshi market. Levels are in cents (1–99).",
          "mutating": false,
          "name": "getOrderbook",
          "parameters": [
            "depth",
            "ticker"
          ],
          "required": [
            "ticker"
          ]
        },
        {
          "description": "Place an order on Kalshi. Prices are integer cents (1–99) for the chosen side. `client_order_id` provides idempotency.",
          "mutating": true,
          "name": "placeOrder",
          "parameters": [
            "action",
            "buy_max_cost",
            "client_order_id",
            "count",
            "expiration_ts",
            "no_price",
            "post_only",
            "side",
            "ticker",
            "type",
            "yes_price"
          ],
          "required": [
            "ticker",
            "client_order_id",
            "side",
            "action",
            "count",
            "type"
          ]
        },
        {
          "description": "Cancel a resting Kalshi order by order_id.",
          "mutating": true,
          "name": "cancelOrder",
          "parameters": [
            "order_id"
          ],
          "required": [
            "order_id"
          ]
        },
        {
          "description": "Place up to 50 orders in a single signed request. Use this to stay under per-key write rate limits.",
          "mutating": true,
          "name": "batchPlaceOrders",
          "parameters": [
            "orders"
          ],
          "required": [
            "orders"
          ]
        },
        {
          "description": "Get the current portfolio positions for the authenticated user.",
          "mutating": false,
          "name": "getPositions",
          "parameters": [],
          "required": []
        },
        {
          "description": "List fills (executed trades) for the authenticated user. Filter by ticker, order_id, or time range.",
          "mutating": false,
          "name": "getFills",
          "parameters": [
            "cursor",
            "limit",
            "max_ts",
            "min_ts",
            "order_id",
            "ticker"
          ],
          "required": []
        }
      ],
      "category": "defi-trading",
      "description": "Read and trade on Kalshi, the CFTC-regulated US event exchange.",
      "findings": [],
      "identifier": "sperax-kalshi",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-kalshi",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-kalshi",
      "title": "Kalshi"
    },
    {
      "apis": [
        {
          "description": "Search through knowledge base using semantic vector search to find relevant files and chunks. Returns a summary of matching files with their relevance scores and brief excerpts. Use this first to discover which files contain relevant information. IMPORTANT: Since this uses vector-based search, always resolve pronouns and references to concrete entities (e.g., use \"authentication system\" instead of \"it\").",
          "mutating": false,
          "name": "searchKnowledgeBase",
          "parameters": [
            "query",
            "topK"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Read the full content of specific files from the knowledge base. Use this after searchKnowledgeBase to get complete information from relevant files. You can read multiple files at once.",
          "mutating": false,
          "name": "readKnowledge",
          "parameters": [
            "fileIds"
          ],
          "required": [
            "fileIds"
          ]
        }
      ],
      "category": "document",
      "description": "Search and retrieve information from knowledge bases",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-knowledge-base",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-knowledge-base",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-knowledge-base",
      "title": "Knowledge Base"
    },
    {
      "apis": [
        {
          "description": "Retrieve the full knowledge graph data with nodes (concepts, entities, facts, etc.), edges (relationships), and clusters (topic groups). Supports optional filtering by node type, minimum confidence level, and time range.",
          "mutating": false,
          "name": "getGraphData",
          "parameters": [
            "minConfidence",
            "nodeType",
            "since"
          ],
          "required": []
        },
        {
          "description": "Search the knowledge graph for nodes matching a query. Returns matching nodes with relevance scores and their connecting edges.",
          "mutating": false,
          "name": "searchGraph",
          "parameters": [
            "limit",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get full details for a specific knowledge node including its description, sources, connected conversations, documents, neighbor nodes, and evolution timeline.",
          "mutating": false,
          "name": "getNodeDetail",
          "parameters": [
            "nodeId"
          ],
          "required": [
            "nodeId"
          ]
        },
        {
          "description": "Analyze the knowledge graph structure and return insights: most connected concepts (hub nodes), isolated knowledge (sparse nodes), recent growth areas, and cross-domain bridges (nodes connecting different clusters).",
          "mutating": false,
          "name": "getGraphInsights",
          "parameters": [
            "limit"
          ],
          "required": []
        }
      ],
      "category": "document",
      "description": "Visualize and explore your growing knowledge graph as an interactive network",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-knowledge-graph",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-knowledge-graph",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-knowledge-graph",
      "title": "Knowledge Graph"
    },
    {
      "apis": [
        {
          "description": "Get lending markets with live rates, TVL, and utilization across protocols (Aave V3, Compound V3, Radiant V2, Spark). Compare supply/borrow APY and incentive rewards. Always use this first when a user asks about lending rates.",
          "mutating": false,
          "name": "getMarkets",
          "parameters": [
            "asset",
            "chainId",
            "protocol",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Supply (deposit) tokens into a lending pool to earn yield. Returns an unsigned transaction for the user to sign. The token will be used as collateral by default. ALWAYS show the current APY and confirm with the user first.",
          "mutating": true,
          "name": "supply",
          "parameters": [
            "amount",
            "asset",
            "chainId",
            "protocol",
            "useAsCollateral",
            "walletAddress"
          ],
          "required": [
            "asset",
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Borrow tokens against supplied collateral. Returns an unsigned transaction. CRITICAL: Always check health factor impact BEFORE borrowing. Warn user about liquidation risk.",
          "mutating": true,
          "name": "borrow",
          "parameters": [
            "amount",
            "asset",
            "chainId",
            "interestRateMode",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "asset",
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Repay outstanding debt on a lending position. Use \"max\" as amount for full repayment. Returns an unsigned transaction.",
          "mutating": true,
          "name": "repay",
          "parameters": [
            "amount",
            "asset",
            "chainId",
            "interestRateMode",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "asset",
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Withdraw supplied collateral from a lending pool. ALWAYS check health factor impact before withdrawing — it may trigger liquidation if debt exists.",
          "mutating": true,
          "name": "withdraw",
          "parameters": [
            "amount",
            "asset",
            "chainId",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "asset",
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Get the user's current lending positions across protocols. Shows supplied collateral, borrowed amounts, earned interest, and overall health.",
          "mutating": false,
          "name": "getUserPositions",
          "parameters": [
            "chainId",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get detailed health factor analysis including liquidation prices, risk level, and recommendations. Use proactively whenever a user is borrowing or withdrawing collateral.",
          "mutating": false,
          "name": "getHealthFactor",
          "parameters": [
            "chainId",
            "protocol",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "Supply, borrow, repay, and monitor health across Aave, Compound, and more",
      "findings": [],
      "identifier": "sperax-lending",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-lending",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-lending",
      "title": "Lending"
    },
    {
      "apis": [
        {
          "description": "Create a gasless limit order to buy or sell tokens at a specific price. Uses 1inch Limit Order Protocol with EIP-712 signing (no gas cost to place). Always preview first, then request user confirmation before signing.",
          "mutating": true,
          "name": "createLimitOrder",
          "parameters": [
            "amountIn",
            "chain",
            "expiryHours",
            "limitPrice",
            "tokenIn",
            "tokenOut",
            "walletAddress"
          ],
          "required": [
            "tokenIn",
            "tokenOut",
            "amountIn",
            "limitPrice",
            "chain"
          ]
        },
        {
          "description": "List the user's limit orders — active, filled, expired, or cancelled. Optionally filter by chain.",
          "mutating": false,
          "name": "listOrders",
          "parameters": [
            "chain",
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Cancel an active limit order. Requires the order ID and chain. The user must confirm before cancellation.",
          "mutating": true,
          "name": "cancelOrder",
          "parameters": [
            "chain",
            "orderHash",
            "walletAddress"
          ],
          "required": [
            "orderHash",
            "chain"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Place gasless limit orders via 1inch Protocol — MEV-protected, no gas to place",
      "findings": [],
      "identifier": "sperax-limit-orders",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-limit-orders",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-limit-orders",
      "title": "Limit Orders"
    },
    {
      "apis": [
        {
          "description": "List Limitless markets. Optionally filter by status (active|closed|resolved|paused) or category.",
          "mutating": false,
          "name": "listMarkets",
          "parameters": [
            "status",
            "category",
            "limit",
            "offset"
          ],
          "required": []
        },
        {
          "description": "Fetch a single Limitless market including current AMM curve parameters (qYes, qNo, b).",
          "mutating": false,
          "name": "getMarket",
          "parameters": [
            "marketId"
          ],
          "required": [
            "marketId"
          ]
        },
        {
          "description": "Return the YES/NO price curve sampled across hypothetical buy sizes for chart preview.",
          "mutating": false,
          "name": "getPriceCurve",
          "parameters": [
            "marketId",
            "samples",
            "maxUsd"
          ],
          "required": [
            "marketId"
          ]
        },
        {
          "description": "Quote a buy. Set preview:true for an instant local LMSR estimate; otherwise the server quote endpoint is hit (authoritative).",
          "mutating": false,
          "name": "quoteTrade",
          "parameters": [
            "marketId",
            "side",
            "amountUsd",
            "preview",
            "slippage"
          ],
          "required": [
            "marketId",
            "side",
            "amountUsd"
          ]
        },
        {
          "description": "Submit a pre-signed EIP-712 Trade. The signedTrade object must come from the user wallet — do not synthesize it.",
          "mutating": true,
          "name": "placeTrade",
          "parameters": [
            "marketId",
            "signedTrade"
          ],
          "required": [
            "marketId",
            "signedTrade"
          ]
        },
        {
          "description": "List open positions for a user. Omit address to use the authenticated session.",
          "mutating": false,
          "name": "getUserPositions",
          "parameters": [
            "address"
          ],
          "required": []
        },
        {
          "description": "Claim winnings on a resolved market.",
          "mutating": true,
          "name": "claimResolved",
          "parameters": [
            "marketId"
          ],
          "required": [
            "marketId"
          ]
        },
        {
          "description": "Top traders by PnL, volume, or winrate over the chosen range.",
          "mutating": false,
          "name": "getLeaderboard",
          "parameters": [
            "range",
            "sort",
            "limit"
          ],
          "required": []
        }
      ],
      "category": "defi-trading",
      "description": "Read and trade Limitless prediction markets (Base AMM).",
      "findings": [],
      "identifier": "sperax-limitless",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-limitless",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-limitless",
      "title": "Limitless"
    },
    {
      "apis": [
        {
          "description": "Get the most recent DeFi lending liquidation events across protocols. Shows collateral seized, debt repaid, and protocol details.",
          "mutating": false,
          "name": "getRecentLiquidations",
          "parameters": [
            "chain",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get liquidation stats and recent events for a specific DeFi lending protocol.",
          "mutating": false,
          "name": "getLiquidationsByProtocol",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get a summary of DeFi liquidation activity: 24h/7d totals, top protocols by liquidation volume, and chain breakdown.",
          "mutating": false,
          "name": "getLiquidationSummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "defi-security",
      "description": "Monitor DeFi liquidation events, at-risk positions, and protocol liquidation stats.",
      "findings": [],
      "identifier": "sperax-liquidations",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-liquidations",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-liquidations",
      "title": "Liquidations"
    },
    {
      "apis": [
        {
          "description": "Analyze all liquidity positions for a wallet across protocols and chains. Shows position health, fee earnings, IL, and overall portfolio assessment.",
          "mutating": false,
          "name": "analyzePositions",
          "parameters": [
            "chains",
            "protocols",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get migration recommendations for LP positions. Identifies better pools with higher APR and analyzes break-even timeline for migration costs.",
          "mutating": false,
          "name": "recommendMigration",
          "parameters": [
            "maxMigrationCostUsd",
            "positionId",
            "preferredChains",
            "riskPreference",
            "walletAddress"
          ],
          "required": [
            "riskPreference"
          ]
        },
        {
          "description": "Optimize concentrated liquidity range based on historical volatility and strategy preference. Backtests suggested ranges against historical data.",
          "mutating": false,
          "name": "optimizeRange",
          "parameters": [
            "chain",
            "positionId",
            "protocol",
            "strategy",
            "volatilityWindowDays"
          ],
          "required": [
            "positionId",
            "chain",
            "protocol",
            "strategy"
          ]
        },
        {
          "description": "Check for positions needing rebalance attention. Monitors out-of-range positions, declining fees, excessive IL, and better pool availability.",
          "mutating": false,
          "name": "getRebalanceAlert",
          "parameters": [
            "chains",
            "feeDeclineThresholdPercent",
            "ilThresholdPercent",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Simulate a complete liquidity migration. Shows step-by-step execution, total costs, and projected returns at 30/90/365 day horizons.",
          "mutating": false,
          "name": "simulateMigration",
          "parameters": [
            "newPriceLower",
            "newPriceUpper",
            "positionId",
            "targetChain",
            "targetPool",
            "targetProtocol"
          ],
          "required": [
            "positionId",
            "targetPool",
            "targetChain",
            "targetProtocol"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "Intelligent liquidity management: position analysis, migration recommendations, concentrated liquidity range optimization, and rebalance alerts",
      "findings": [],
      "identifier": "sperax-liquidity-advisor",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-liquidity-advisor",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-liquidity-advisor",
      "title": "Liquidity Advisor"
    },
    {
      "apis": [
        {
          "description": "Get overall Lista DAO protocol statistics: total TVL, slisBNB supply & exchange rate, lisUSD supply & peg, active CDP count, staking APR.",
          "mutating": false,
          "name": "getProtocolStats",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get detailed BNB liquid staking information: APR, slisBNB/BNB exchange rate, total BNB staked, validator count, cooldown period, and minimum stake amount.",
          "mutating": false,
          "name": "getStakingInfo",
          "parameters": [],
          "required": []
        },
        {
          "description": "Stake BNB to receive slisBNB liquid staking token. Returns an unsigned transaction for the user to sign in their wallet. ONLY call after the user has explicitly confirmed the stake amount.",
          "mutating": true,
          "name": "stakeBnb",
          "parameters": [
            "amount",
            "walletAddress"
          ],
          "required": [
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Unstake slisBNB to redeem BNB. Subject to a cooldown period. Returns an unsigned transaction. ONLY call after the user has explicitly confirmed.",
          "mutating": true,
          "name": "unstakeBnb",
          "parameters": [
            "amount",
            "walletAddress"
          ],
          "required": [
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Get CDP (Collateralized Debt Position) information: available collateral types, collateralization ratios, stability fees, debt ceilings, and liquidation parameters.",
          "mutating": false,
          "name": "getCdpInfo",
          "parameters": [
            "collateralToken"
          ],
          "required": []
        },
        {
          "description": "Borrow lisUSD stablecoin by depositing collateral into a CDP. Returns unsigned transactions for approval (if needed) and the borrow operation. ONLY call after full user confirmation.",
          "mutating": true,
          "name": "borrowLisUsd",
          "parameters": [
            "borrowAmount",
            "collateralAmount",
            "collateralToken",
            "walletAddress"
          ],
          "required": [
            "collateralToken",
            "collateralAmount",
            "borrowAmount",
            "walletAddress"
          ]
        },
        {
          "description": "Repay lisUSD debt in a CDP to improve collateralization ratio or close the position. Use \"max\" for full repayment. ONLY call after user confirmation.",
          "mutating": true,
          "name": "repayLisUsd",
          "parameters": [
            "collateralToken",
            "repayAmount",
            "walletAddress"
          ],
          "required": [
            "collateralToken",
            "repayAmount",
            "walletAddress"
          ]
        },
        {
          "description": "Browse Lista DAO yield farming pools. Filter by staked token or minimum APR. Returns pool details including base APR, boost APR, TVL, and reward token.",
          "mutating": false,
          "name": "getFarms",
          "parameters": [
            "minApr",
            "stakedToken"
          ],
          "required": []
        },
        {
          "description": "Get the user's complete Lista DAO position: slisBNB staking balance, CDP positions with health status, farm positions with pending rewards, and total portfolio value.",
          "mutating": false,
          "name": "getUserPositions",
          "parameters": [
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get lisUSD Saving Rate (LSR / Jar) information: total deposits, APR, exit delay, and optionally a specific user's position and earned rewards.",
          "mutating": false,
          "name": "getSavingsInfo",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Deposit lisUSD into the Saving Rate (Jar) to earn yield. Returns unsigned transactions for approval and deposit. ONLY call after user confirmation.",
          "mutating": true,
          "name": "depositSavings",
          "parameters": [
            "amount",
            "walletAddress"
          ],
          "required": [
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Withdraw lisUSD from the Saving Rate (Jar). Subject to an exit delay period. Returns an unsigned transaction. ONLY call after user confirmation.",
          "mutating": true,
          "name": "withdrawSavings",
          "parameters": [
            "amount",
            "walletAddress"
          ],
          "required": [
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Get Peg Stability Module (PSM) information: supported stablecoin, swap fees, daily limits, and remaining capacity. The PSM allows near-1:1 swaps between lisUSD and USDT/USDC.",
          "mutating": false,
          "name": "getPsmInfo",
          "parameters": [],
          "required": []
        }
      ],
      "category": "defi-analytics",
      "description": "Liquid staking, CDP borrowing, and yield farming on Lista DAO (BNB Chain)",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-listadao",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-listadao",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-listadao",
      "title": "Lista DAO"
    },
    {
      "apis": [
        {
          "description": "List files and folders in a specified directory. Returns file/folder names with metadata (size, modified time). Results are sorted by modified time (newest first) by default and limited to 100 items.",
          "mutating": false,
          "name": "listLocalFiles",
          "parameters": [
            "limit",
            "path",
            "sortBy",
            "sortOrder"
          ],
          "required": [
            "path"
          ]
        },
        {
          "description": "Read the content of a specific file. Input should be the file path. Output is the file content as a string.",
          "mutating": false,
          "name": "readLocalFile",
          "parameters": [
            "loc",
            "path"
          ],
          "required": [
            "path"
          ]
        },
        {
          "description": "Search for files within the workspace based on a query string and optional filter options. Input should include the search query and any filter options. Output is a JSON array of matching file paths.",
          "mutating": false,
          "name": "searchLocalFiles",
          "parameters": [
            "contentContains",
            "createdAfter",
            "createdBefore",
            "directory",
            "exclude",
            "fileTypes",
            "keywords",
            "limit",
            "liveUpdate",
            "modifiedAfter",
            "modifiedBefore",
            "sortBy",
            "sortDirection"
          ],
          "required": [
            "keywords"
          ]
        },
        {
          "description": "Moves or renames multiple files/directories. Input is an array of objects, each containing an oldPath and a newPath.",
          "mutating": false,
          "name": "moveLocalFiles",
          "parameters": [
            "items"
          ],
          "required": [
            "items"
          ]
        },
        {
          "description": "Rename a file or folder in its current location. Input should be the current full path and the new name.",
          "mutating": false,
          "name": "renameLocalFile",
          "parameters": [
            "newName",
            "path"
          ],
          "required": [
            "path",
            "newName"
          ]
        },
        {
          "description": "Write content to a specific file. Input should be the file path and content. Overwrites existing file or creates a new one.",
          "mutating": false,
          "name": "writeLocalFile",
          "parameters": [
            "content",
            "path"
          ],
          "required": [
            "path",
            "content"
          ]
        },
        {
          "description": "Perform exact string replacements in files. Must read the file first before editing.",
          "mutating": false,
          "name": "editLocalFile",
          "parameters": [
            "file_path",
            "new_string",
            "old_string",
            "replace_all"
          ],
          "required": [
            "file_path",
            "old_string",
            "new_string"
          ]
        },
        {
          "description": "Execute a shell command and return its output. Supports both synchronous and background execution with timeout control.",
          "mutating": false,
          "name": "runCommand",
          "parameters": [
            "command",
            "description",
            "run_in_background",
            "timeout"
          ],
          "required": [
            "description",
            "command"
          ]
        },
        {
          "description": "Retrieve output from a running or completed background shell command. Returns only new output since the last check.",
          "mutating": false,
          "name": "getCommandOutput",
          "parameters": [
            "filter",
            "shell_id"
          ],
          "required": [
            "shell_id"
          ]
        },
        {
          "description": "Kill a running background shell command by its ID.",
          "mutating": false,
          "name": "killCommand",
          "parameters": [
            "shell_id"
          ],
          "required": [
            "shell_id"
          ]
        },
        {
          "description": "Search for content within files using regex patterns. Supports various output modes and filtering options.",
          "mutating": false,
          "name": "grepContent",
          "parameters": [
            "-A",
            "-B",
            "-C",
            "-i",
            "-n",
            "glob",
            "head_limit",
            "multiline",
            "output_mode",
            "path",
            "pattern",
            "type"
          ],
          "required": [
            "pattern"
          ]
        },
        {
          "description": "Find files matching glob patterns. Supports standard glob syntax like \"**/*.js\" or \"src/**/*.ts\".",
          "mutating": false,
          "name": "globLocalFiles",
          "parameters": [
            "path",
            "pattern"
          ],
          "required": [
            "pattern"
          ]
        }
      ],
      "category": "productivity",
      "description": "Work with files on the local machine — list, read, write, edit, move, and search by name, glob, or content, plus run and manage shell commands.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-local-system",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-local-system",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-local-system",
      "title": "Local System"
    },
    {
      "apis": [
        {
          "description": "Get global DeFi statistics including total TVL, DEX volume, fees/revenue, and fear & greed index. Use when the user asks about overall DeFi market health, total value locked, market sentiment, or wants a high-level market summary.",
          "mutating": false,
          "name": "getGlobalStats",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get TVL breakdown by blockchain (top 10 chains with dominance percentages). Use when the user asks about chain rankings, which chain has the most TVL, chain dominance, or how TVL is distributed across chains.",
          "mutating": false,
          "name": "getChainTvl",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get DeFi protocol categories with TVL, protocol count, and top protocol per category. Use when the user asks about DeFi sectors, categories like lending/DEX/derivatives, or wants to know which category dominates DeFi.",
          "mutating": false,
          "name": "getCategoryBreakdown",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get top DeFi protocols ranked by TVL with 24h/7d changes, category, and supported chains. Use when the user asks about top protocols, biggest DeFi projects, protocol rankings, or TVL leaders.",
          "mutating": false,
          "name": "getTopProtocols",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get top 10 protocols by 24h fees and revenue with profit margin. Use when the user asks about which protocols earn the most, revenue leaders, fee generators, or most profitable DeFi protocols.",
          "mutating": false,
          "name": "getRevenueEarners",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get best yield opportunities scored by APY × TVL × stability. Use when the user asks about best yields, top farming opportunities, where to earn yield, or highest APY pools.",
          "mutating": false,
          "name": "getTopYields",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get Sperax ecosystem yield pools and positions. Use when the user asks about Sperax yields, SPA pools, USDs farming, or Sperax ecosystem opportunities.",
          "mutating": false,
          "name": "getSperaxEcosystem",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get detailed chain data: TVL, dominance, 24h change, and protocol count for each chain. Use when the user asks about blockchain comparisons, chain metrics, or detailed chain-level data.",
          "mutating": false,
          "name": "getChains",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get crypto market prices with 24h change, volume, and market cap for top tokens. Use when the user asks about token prices, crypto prices, market caps, or wants to check the price of specific tokens.",
          "mutating": false,
          "name": "getMarketPrices",
          "parameters": [
            "symbols"
          ],
          "required": []
        },
        {
          "description": "Get DeFi yield pools with APY, TVL, chain, score, and impermanent loss risk. Use when the user asks about yield farming pools, DeFi pools, liquidity pools, or wants to browse available pools.",
          "mutating": false,
          "name": "getYieldPools",
          "parameters": [
            "chain",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get stablecoin data: supply, peg type, supported chains, and top yields. Use when the user asks about stablecoins, USDC, USDT, DAI, stablecoin yields, or stablecoin supply.",
          "mutating": false,
          "name": "getStablecoins",
          "parameters": [],
          "required": []
        },
        {
          "description": "Compare up to 4 DeFi protocols side-by-side on TVL, changes, category, and chains. Use when the user asks to compare protocols, e.g. \"compare Aave vs Compound\" or \"how does Uniswap compare to Sushiswap\".",
          "mutating": false,
          "name": "getProtocolComparison",
          "parameters": [
            "slugs"
          ],
          "required": [
            "slugs"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "View DeFi market data, yields, prices, and protocol analytics in chat",
      "findings": [],
      "identifier": "sperax-markets",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-markets",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-markets",
      "title": "Markets"
    },
    {
      "apis": [
        {
          "description": "Retrieve memories based on a search query. Use this to recall previously saved information.",
          "mutating": false,
          "name": "searchUserMemory",
          "parameters": [
            "query",
            "topK"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Create a context memory that captures ongoing situations, projects, or environments. Include actors, resources, statuses, urgency/impact, and a clear description.",
          "mutating": false,
          "name": "addContextMemory",
          "parameters": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withContext"
          ],
          "required": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withContext"
          ]
        },
        {
          "description": "Record an activity memory capturing what happened, when, where, with whom, and how it felt. Include narrative, feedback, timing, associations, and tags.",
          "mutating": false,
          "name": "addActivityMemory",
          "parameters": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withActivity"
          ],
          "required": [
            "title",
            "summary",
            "details",
            "memoryType",
            "memoryCategory",
            "tags",
            "withActivity"
          ]
        },
        {
          "description": "Record an experience memory capturing situation, actions, reasoning, outcomes, and confidence. Use for lessons, playbooks, or transferable know-how.",
          "mutating": false,
          "name": "addExperienceMemory",
          "parameters": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withExperience"
          ],
          "required": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withExperience"
          ]
        },
        {
          "description": "Add an identity memory describing enduring facts about a person, their role, relationship, and supporting evidence. Use to track self/others identities.",
          "mutating": false,
          "name": "addIdentityMemory",
          "parameters": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withIdentity"
          ],
          "required": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withIdentity"
          ]
        },
        {
          "description": "Create a preference memory that encodes durable directives or choices the assistant should follow. Include conclusionDirectives, scopes, and context.",
          "mutating": false,
          "name": "addPreferenceMemory",
          "parameters": [
            "details",
            "memoryCategory",
            "memoryType",
            "summary",
            "tags",
            "title",
            "withPreference"
          ],
          "required": [
            "title",
            "summary",
            "tags",
            "details",
            "memoryCategory",
            "memoryType",
            "withPreference"
          ]
        },
        {
          "description": "Update an existing identity memory with refined details, relationships, roles, or tags. Use mergeStrategy to control replacement vs merge.",
          "mutating": false,
          "name": "updateIdentityMemory",
          "parameters": [
            "id",
            "mergeStrategy",
            "set"
          ],
          "required": [
            "id",
            "mergeStrategy",
            "set"
          ]
        },
        {
          "description": "Remove an identity memory when it is incorrect, obsolete, or duplicated. Always provide a concise reason.",
          "mutating": false,
          "name": "removeIdentityMemory",
          "parameters": [
            "id",
            "reason"
          ],
          "required": [
            "id",
            "reason"
          ]
        }
      ],
      "category": "productivity",
      "description": "Remember durable facts about the user across conversations — identity, preferences, activities, and experiences — and search that memory when it is relevant.",
      "findings": [],
      "identifier": "lobe-user-memory",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-memory",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-memory",
      "title": "Memory"
    },
    {
      "apis": [
        {
          "description": "Analyze a pending swap transaction for MEV vulnerabilities BEFORE submission. Returns risk score, attack vectors, estimated losses, and protection recommendations.",
          "mutating": false,
          "name": "analyzeTransaction",
          "parameters": [
            "amount",
            "chain",
            "dex",
            "slippageTolerance",
            "tokenIn",
            "tokenOut"
          ],
          "required": [
            "tokenIn",
            "tokenOut",
            "amount"
          ]
        },
        {
          "description": "Analyze historical MEV exposure for a wallet address. Shows total MEV losses, attack breakdown by type, and most-attacked tokens.",
          "mutating": false,
          "name": "getMevExposure",
          "parameters": [
            "address",
            "days"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get personalized MEV protection strategy recommendations based on transaction type, amount, chain, and urgency.",
          "mutating": false,
          "name": "getProtectionRecommendation",
          "parameters": [
            "amountUsd",
            "chain",
            "txType",
            "urgency"
          ],
          "required": [
            "txType",
            "amountUsd"
          ]
        },
        {
          "description": "Scan current mempool conditions. Shows congestion, active MEV bots, gas conditions, recent MEV activity, and safety score for transacting now.",
          "mutating": false,
          "name": "scanMempoolActivity",
          "parameters": [
            "chain"
          ],
          "required": []
        },
        {
          "description": "Forensically analyze a past transaction to detect if it was sandwich attacked. Identifies front-run/back-run transactions, bot addresses, and value extracted.",
          "mutating": false,
          "name": "detectSandwichAttack",
          "parameters": [
            "chain",
            "txHash"
          ],
          "required": [
            "txHash"
          ]
        }
      ],
      "category": "defi-security",
      "description": "AI-powered MEV protection: sandwich attack detection, pre-swap risk analysis, mempool monitoring, and protection strategies",
      "findings": [],
      "identifier": "sperax-mev-shield",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-mev-shield",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-mev-shield",
      "title": "MEV Shield"
    },
    {
      "apis": [
        {
          "description": "Get the total USD net worth of an EVM wallet across every supported chain in one call, with a per-chain breakdown. Spam and unverified contracts are excluded, so this is the most trustworthy single number for \"what is this wallet worth\". Use this before drilling into a specific chain.",
          "mutating": false,
          "name": "getWalletNetWorth",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get token balances for an EVM wallet on one chain, with USD price, USD value and 24h price change per holding, sorted by value. Spam tokens are filtered. Holdings with no available price are counted separately and excluded from the total.",
          "mutating": false,
          "name": "getWalletTokens",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get REALISED profit and loss for an EVM wallet on one chain — per-token and aggregate, with average buy/sell prices and trade counts. Realised PnL covers only positions that were sold; it excludes unrealised gains on current holdings and excludes gas costs. Always state that limitation when reporting the result.",
          "mutating": false,
          "name": "getWalletPnL",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get ERC-20 token metadata for a contract address: name, symbol, decimals, total supply, fully diluted valuation, circulating supply, logo, project links, contract verification status, and whether Moralis flags it as possible spam.",
          "mutating": false,
          "name": "getTokenMetadata",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Cross-chain wallet analytics via Moralis — net worth across seven chains, token balances with prices, realised PnL, and ERC-20 contract metadata.",
      "findings": [],
      "identifier": "sperax-moralis",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-moralis",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-moralis",
      "title": "Moralis"
    },
    {
      "apis": [
        {
          "description": "Resolve a human-readable Web3 name to an on-chain address. Supports ENS (.eth, Ethereum), SNS (.sol, Solana) and Space ID (.bnb on BNB Chain, .arb on Arbitrum). A name with no suffix is tried against every registry and may resolve in more than one. Also reports whether the ENS reverse record verifies the forward record.",
          "mutating": false,
          "name": "resolveName",
          "parameters": [
            "name"
          ],
          "required": [
            "name"
          ]
        },
        {
          "description": "Find the Web3 names that point at an address (reverse resolution). An EVM address is checked against ENS primary names and Space ID (.bnb, .arb); a Solana address returns every .sol domain the wallet holds.",
          "mutating": false,
          "name": "reverseResolve",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "productivity",
      "description": "Resolve Web3 names to addresses and back — ENS (.eth), SNS (.sol) and Space ID (.bnb, .arb), across Ethereum, Solana, BNB Chain and Arbitrum.",
      "findings": [],
      "identifier": "sperax-name-service",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-name-service",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-name-service",
      "title": "Name Service"
    },
    {
      "apis": [
        {
          "description": "Get top NFT collections ranked by market cap or 24h volume. Returns floor price, market cap, volume, and price change data.",
          "mutating": false,
          "name": "getNftCollections",
          "parameters": [
            "order",
            "page",
            "perPage"
          ],
          "required": []
        },
        {
          "description": "Get detailed information about a specific NFT collection including description, total supply, unique owners, floor price change, and links.",
          "mutating": false,
          "name": "getNftDetail",
          "parameters": [
            "nftId"
          ],
          "required": [
            "nftId"
          ]
        },
        {
          "description": "Search for NFT collections by name. Returns matching collections with basic data.",
          "mutating": false,
          "name": "searchNfts",
          "parameters": [
            "query"
          ],
          "required": [
            "query"
          ]
        }
      ],
      "category": "nft",
      "description": "NFT market overview — top collections, floor prices, volume, and search",
      "findings": [],
      "identifier": "sperax-nft-market",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-nft-market",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-nft-market",
      "title": "NFT Market Overview"
    },
    {
      "apis": [
        {
          "description": "Create a new document in the notebook. Use this to save reports, notes, articles, or any content that should persist in the topic.",
          "mutating": false,
          "name": "createDocument",
          "parameters": [
            "content",
            "description",
            "title",
            "type"
          ],
          "required": [
            "title",
            "description",
            "content"
          ]
        },
        {
          "description": "Update an existing document. Can modify title, content, or append new content to existing document.",
          "mutating": false,
          "name": "updateDocument",
          "parameters": [
            "append",
            "content",
            "id",
            "title"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "Retrieve the full content of a specific document from the notebook.",
          "mutating": false,
          "name": "getDocument",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        },
        {
          "description": "Delete a document from the notebook. This action cannot be undone.",
          "mutating": false,
          "name": "deleteDocument",
          "parameters": [
            "id"
          ],
          "required": [
            "id"
          ]
        }
      ],
      "category": "productivity",
      "description": "Create and manage documents in the topic notebook",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-notebook",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-notebook",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-notebook",
      "title": "Notebook"
    },
    {
      "apis": [
        {
          "description": "Search across the Notion workspace for pages and databases.",
          "mutating": false,
          "name": "searchContent",
          "parameters": [
            "filter",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get the content and properties of a Notion page.",
          "mutating": false,
          "name": "getPage",
          "parameters": [
            "pageId"
          ],
          "required": [
            "pageId"
          ]
        },
        {
          "description": "Create a new Notion page with content blocks and properties.",
          "mutating": false,
          "name": "createPage",
          "parameters": [
            "content",
            "parentId",
            "properties",
            "title"
          ],
          "required": [
            "title"
          ]
        },
        {
          "description": "Update page properties such as title, status, or tags.",
          "mutating": false,
          "name": "updatePage",
          "parameters": [
            "pageId",
            "properties"
          ],
          "required": [
            "pageId",
            "properties"
          ]
        },
        {
          "description": "Move a page to trash. Requires user confirmation.",
          "mutating": false,
          "name": "deletePage",
          "parameters": [
            "pageId"
          ],
          "required": [
            "pageId"
          ]
        },
        {
          "description": "List pages in a database or under a parent page.",
          "mutating": false,
          "name": "listPages",
          "parameters": [
            "maxResults",
            "parentId"
          ],
          "required": []
        },
        {
          "description": "Query a Notion database with filters and sorts.",
          "mutating": false,
          "name": "queryDatabase",
          "parameters": [
            "databaseId",
            "filter",
            "pageSize",
            "sorts"
          ],
          "required": [
            "databaseId"
          ]
        },
        {
          "description": "Create a new Notion database with property schemas.",
          "mutating": false,
          "name": "createDatabase",
          "parameters": [
            "parentId",
            "properties",
            "title"
          ],
          "required": [
            "title",
            "parentId",
            "properties"
          ]
        },
        {
          "description": "Append content blocks to an existing page.",
          "mutating": false,
          "name": "appendBlocks",
          "parameters": [
            "content",
            "pageId"
          ],
          "required": [
            "pageId",
            "content"
          ]
        }
      ],
      "category": "communication",
      "description": "Search, read, create, and manage Notion pages and databases",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-notion",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-notion",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-notion",
      "title": "Notion"
    },
    {
      "apis": [
        {
          "description": "List all options protocols ranked by 24h notional volume.",
          "mutating": false,
          "name": "getOptionsOverview",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get historical daily volume for a specific options protocol.",
          "mutating": false,
          "name": "getProtocolOptions",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get a market-wide options volume summary.",
          "mutating": false,
          "name": "getOptionsSummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "defi-analytics",
      "description": "Crypto options volume tracking — Deribit, Lyra, Hegic and more. Notional & premium volume analysis.",
      "findings": [],
      "identifier": "sperax-options-volume",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-options-volume",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-options-volume",
      "title": "Options Volume"
    },
    {
      "apis": [
        {
          "description": "Initialize a new document from Markdown content. Converts the Markdown into an XML-structured document with unique IDs for each node. This should be called first before performing any other document operations.",
          "mutating": false,
          "name": "initPage",
          "parameters": [
            "markdown"
          ],
          "required": [
            "markdown"
          ]
        },
        {
          "description": "Edit the title of the current document. The title is displayed in the document header and is stored separately from the document content.",
          "mutating": false,
          "name": "editTitle",
          "parameters": [
            "title"
          ],
          "required": [
            "title"
          ]
        },
        {
          "description": "Get the current page content and metadata. Returns the document in XML format with node IDs, markdown format, or both. Use this tool to retrieve the latest state of the document.",
          "mutating": false,
          "name": "getPageContent",
          "parameters": [
            "format"
          ],
          "required": []
        },
        {
          "description": "Perform node operations (insert, modify, remove) on the document. This is the unified API for all CRUD operations. Supports batch operations by passing multiple operations in a single call.",
          "mutating": false,
          "name": "modifyNodes",
          "parameters": [
            "operations"
          ],
          "required": [
            "operations"
          ]
        },
        {
          "description": "Find and replace text across the document or within specific nodes. Supports regex patterns.",
          "mutating": false,
          "name": "replaceText",
          "parameters": [
            "newText",
            "nodeIds",
            "replaceAll",
            "searchText",
            "useRegex"
          ],
          "required": [
            "searchText",
            "newText"
          ]
        }
      ],
      "category": "document",
      "description": "Create, read, update, and delete nodes in XML-structured documents",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-page-agent",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-page-agent",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-page-agent",
      "title": "Document"
    },
    {
      "apis": [
        {
          "description": "Get top PancakeSwap V3 liquidity pools. Optionally filter by chain and sort by TVL, 24h volume, APR, or fees.",
          "mutating": false,
          "name": "getTopPools",
          "parameters": [
            "chain",
            "limit",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Get detailed token information on PancakeSwap including price, market cap, top pools, and 7d price chart. Pass the token contract address or symbol.",
          "mutating": false,
          "name": "getTokenInfo",
          "parameters": [
            "chain",
            "symbol",
            "tokenAddress"
          ],
          "required": []
        },
        {
          "description": "Get a swap quote from PancakeSwap V3 Smart Router. Shows the best route, expected output, price impact, and gas cost.",
          "mutating": false,
          "name": "getSwapQuote",
          "parameters": [
            "amount",
            "chain",
            "fromToken",
            "slippage",
            "toToken"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount"
          ]
        },
        {
          "description": "Get CAKE farming pools with APR breakdown (LP fees + CAKE rewards). Optionally filter by chain and minimum APR.",
          "mutating": false,
          "name": "getFarmingPools",
          "parameters": [
            "chain",
            "limit",
            "minApr",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Get detailed analytics for a specific PancakeSwap pool, including TVL, volume, fees, APR, and recent trades.",
          "mutating": false,
          "name": "getPoolDetail",
          "parameters": [
            "chain",
            "poolAddress"
          ],
          "required": [
            "poolAddress"
          ]
        },
        {
          "description": "Get recent trades from a PancakeSwap pool or for a specific token. Shows trade direction, size, and maker address.",
          "mutating": false,
          "name": "getRecentTrades",
          "parameters": [
            "chain",
            "limit",
            "poolAddress",
            "tokenAddress"
          ],
          "required": []
        }
      ],
      "category": "defi-trading",
      "description": "PancakeSwap V3 DEX data — top pools, token info, swap quotes, CAKE farming, pool analytics, and recent trades",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-pancakeswap",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-pancakeswap",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-pancakeswap",
      "title": "PancakeSwap"
    },
    {
      "apis": [
        {
          "description": "List all available perpetual markets with funding rate, open interest, mark price, and 24h volume.",
          "mutating": false,
          "name": "getMarkets",
          "parameters": [
            "chainId",
            "exchange"
          ],
          "required": []
        },
        {
          "description": "Get open perpetual positions for a wallet with PNL, liquidation price, and margin ratio.",
          "mutating": false,
          "name": "getPositions",
          "parameters": [
            "exchange",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Get historical funding rate time series and annualized rate for a market. Detects arbitrage opportunities across exchanges.",
          "mutating": false,
          "name": "getFundingRates",
          "parameters": [
            "exchange",
            "lookbackDays",
            "market"
          ],
          "required": [
            "market",
            "exchange"
          ]
        },
        {
          "description": "Build unsigned transaction calldata to open a leveraged long or short position on GMX or dYdX.",
          "mutating": true,
          "name": "buildOpenPositionTx",
          "parameters": [
            "chainId",
            "collateralToken",
            "exchange",
            "leverage",
            "market",
            "side",
            "sizeUsd",
            "walletAddress"
          ],
          "required": [
            "exchange",
            "market",
            "side",
            "sizeUsd",
            "leverage",
            "collateralToken",
            "walletAddress",
            "chainId"
          ]
        },
        {
          "description": "Build unsigned transaction calldata to close (fully or partially) an open perpetual position.",
          "mutating": true,
          "name": "buildClosePositionTx",
          "parameters": [
            "closeSizePercent",
            "exchange",
            "positionId",
            "walletAddress"
          ],
          "required": [
            "positionId",
            "exchange",
            "walletAddress",
            "closeSizePercent"
          ]
        },
        {
          "description": "Calculate liquidation price and margin ratio at various price levels for a hypothetical or existing position.",
          "mutating": false,
          "name": "getLiquidationPrice",
          "parameters": [
            "entryPrice",
            "exchange",
            "leverage",
            "side"
          ],
          "required": [
            "side",
            "entryPrice",
            "leverage",
            "exchange"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Perpetuals & derivatives trading across GMX, Hyperliquid, and dYdX — markets, positions, funding rates, and transaction building.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "lobe-perpetuals",
      "mcpGroups": [
        "predict"
      ],
      "package": "@lobechat/builtin-tool-perpetuals",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-perpetuals",
      "title": "Perpetuals"
    },
    {
      "apis": [
        {
          "description": "Deposit USDC into an allowlisted Plutus HedgeVault on behalf of the user using their agent smart account (ERC-4337). No wallet approval is needed per deposit — the on-chain permission validator caps each deposit at 100 USDC, restricts it to vaults A and B, and pins the receiver to the user's smart account. Requires the user to have completed agent smart account setup.",
          "mutating": true,
          "name": "agentDeposit",
          "parameters": [
            "amountUsdc",
            "vault"
          ],
          "required": [
            "vault",
            "amountUsdc"
          ]
        },
        {
          "description": "List all Plutus vaults (plvHEDGE, plvLOOP, plvDOLO) with current APY, TVL, risk level, and deposit token. Displays rich vault cards in chat.",
          "mutating": false,
          "name": "getPlutusVaults",
          "parameters": [
            "riskLevel"
          ],
          "required": []
        },
        {
          "description": "Get detailed information about a specific Plutus vault including strategy description, fee structure, historical APY, and performance metrics.",
          "mutating": false,
          "name": "getVaultDetails",
          "parameters": [
            "vaultId"
          ],
          "required": [
            "vaultId"
          ]
        },
        {
          "description": "List all plsASSETs (Plutus liquid staking wrapper tokens) with current prices, APR, and staking status.",
          "mutating": false,
          "name": "getPlsAssets",
          "parameters": [
            "symbol"
          ],
          "required": []
        },
        {
          "description": "Get user's current positions across all Plutus vaults including deposited amounts, current value, PnL, and earned rewards.",
          "mutating": false,
          "name": "getUserVaultPositions",
          "parameters": [
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Check pending staking rewards for a wallet across all Plutus protocols. Shows claimable amounts and USD values.",
          "mutating": false,
          "name": "getStakingRewards",
          "parameters": [
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "Plutus DAO yield aggregator — vaults, plsASSETs, and staking rewards",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-plutus",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-plutus",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-plutus",
      "title": "Plutus"
    },
    {
      "apis": [
        {
          "description": "List active Polymarket prediction markets. Use `q` to search by question text and `category`/`tag` to filter.",
          "mutating": false,
          "name": "listMarkets",
          "parameters": [
            "active",
            "category",
            "limit",
            "q",
            "tag"
          ],
          "required": []
        },
        {
          "description": "Fetch a single Polymarket market by id (the Gamma numeric id or slug).",
          "mutating": false,
          "name": "getMarket",
          "parameters": [
            "marketId"
          ],
          "required": [
            "marketId"
          ]
        },
        {
          "description": "Fetch the CLOB orderbook + midpoint for a market outcome token.",
          "mutating": false,
          "name": "getOrderbook",
          "parameters": [
            "conditionId",
            "tokenId"
          ],
          "required": [
            "conditionId",
            "tokenId"
          ]
        },
        {
          "description": "Fetch the most recent fills on a market.",
          "mutating": false,
          "name": "getLastTrades",
          "parameters": [
            "limit",
            "market"
          ],
          "required": [
            "market"
          ]
        },
        {
          "description": "Fetch a user's open positions on Polymarket.",
          "mutating": false,
          "name": "getUserPositions",
          "parameters": [
            "user"
          ],
          "required": [
            "user"
          ]
        },
        {
          "description": "Fetch a user's recent on-chain activity (trades, conversions, deposits).",
          "mutating": false,
          "name": "getUserActivity",
          "parameters": [
            "limit",
            "type",
            "user"
          ],
          "required": [
            "user"
          ]
        },
        {
          "description": "Fetch the Polymarket leaderboard.",
          "mutating": false,
          "name": "getLeaderboard",
          "parameters": [
            "interval",
            "limit",
            "sort"
          ],
          "required": []
        },
        {
          "description": "Place a signed limit order on Polymarket. The order must be EIP-712 signed before being passed here. Requires explicit user confirmation.",
          "mutating": true,
          "name": "placeOrder",
          "parameters": [
            "expiration",
            "orderType",
            "price",
            "side",
            "signature",
            "size",
            "tokenId"
          ],
          "required": [
            "tokenId",
            "side",
            "price",
            "size",
            "signature"
          ]
        },
        {
          "description": "Cancel a live order.",
          "mutating": true,
          "name": "cancelOrder",
          "parameters": [
            "orderId"
          ],
          "required": [
            "orderId"
          ]
        },
        {
          "description": "Fetch the current status of an order.",
          "mutating": false,
          "name": "getOrderStatus",
          "parameters": [
            "orderId"
          ],
          "required": [
            "orderId"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Read and trade on Polymarket prediction markets.",
      "findings": [],
      "identifier": "sperax-polymarket",
      "mcpGroups": [
        "predict"
      ],
      "package": "@lobechat/builtin-tool-polymarket",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-polymarket",
      "title": "Polymarket"
    },
    {
      "apis": [
        {
          "description": "Get a full portfolio overview including total value, 24h change, value breakdown (idle/deployed/DeFi), and a 30-day sparkline chart. Shows a rich visual card in chat.",
          "mutating": false,
          "name": "getPortfolioOverview",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get idle (undeployed) asset breakdown: stablecoins & fiat, majors (BTC/ETH), and tokens & memecoins. Displays a summary card in chat.",
          "mutating": false,
          "name": "getIdleAssets",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get deployed asset breakdown: lending positions, staked assets, and vesting schedules. Displays a summary card in chat.",
          "mutating": false,
          "name": "getDeployedAssets",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get top asset allocations with percentage breakdown. Displays a donut chart with asset legend in chat.",
          "mutating": false,
          "name": "getTopAssets",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get key portfolio changes in the last 24 hours. Shows protocol-level position changes with entry details.",
          "mutating": false,
          "name": "getKeyChanges",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get DeFi position breakdown: LP positions, yield farming, and total deployed in DeFi protocols.",
          "mutating": false,
          "name": "getDefiPositions",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        }
      ],
      "category": "defi-portfolio",
      "description": "View portfolio data, asset allocations, and DeFi positions in chat",
      "findings": [],
      "identifier": "sperax-portfolio",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-portfolio",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-portfolio",
      "title": "Portfolio"
    },
    {
      "apis": [
        {
          "description": "Get an AI-powered price prediction for a cryptocurrency asset. Returns predicted price, direction (bullish/bearish/neutral), confidence percentage, and price range. Uses LSTM neural network models trained on historical price data with technical indicators.",
          "mutating": false,
          "name": "getPrediction",
          "parameters": [
            "asset",
            "timeframe"
          ],
          "required": []
        },
        {
          "description": "Get historical accuracy metrics for the price prediction model. Shows past prediction accuracy by asset and timeframe to help users assess reliability.",
          "mutating": false,
          "name": "getHistoricalAccuracy",
          "parameters": [
            "asset"
          ],
          "required": []
        },
        {
          "description": "Get technical indicators for a cryptocurrency asset. Returns RSI, MACD, Bollinger Bands, Moving Averages, and an overall buy/sell/neutral signal.",
          "mutating": false,
          "name": "getTechnicalIndicators",
          "parameters": [
            "asset"
          ],
          "required": []
        }
      ],
      "category": "market-data",
      "description": "AI-powered cryptocurrency price predictions using LSTM neural networks",
      "findings": [],
      "identifier": "sperax-price-prediction",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-price-prediction",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-price-prediction",
      "title": "Price Prediction"
    },
    {
      "apis": [
        {
          "description": "Get a comprehensive risk score for a DeFi protocol. Analyzes smart contract security, economic risks, governance, oracle dependencies, and more. Returns a letter grade (A-F) with detailed breakdown.",
          "mutating": false,
          "name": "scoreProtocol",
          "parameters": [
            "chain",
            "detailed",
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Analyze smart contract security for a DeFi protocol. Checks verification, upgradeability, admin controls, audit history, known vulnerabilities, and code complexity.",
          "mutating": false,
          "name": "getContractRisk",
          "parameters": [
            "chain",
            "contractAddress",
            "protocol"
          ],
          "required": [
            "protocol",
            "chain"
          ]
        },
        {
          "description": "Analyze governance decentralization. Token distribution, voting participation, proposal activity, admin controls, and centralization risk score.",
          "mutating": false,
          "name": "analyzeGovernance",
          "parameters": [
            "includeHolderAnalysis",
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Assess economic security: TVL sustainability, tokenomics, whale concentration, revenue model, insurance coverage, and rug pull probability.",
          "mutating": false,
          "name": "getEconomicSecurity",
          "parameters": [
            "chain",
            "includeInsurance",
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Compare risk scores across multiple protocols side-by-side. Ranks protocols and shows best-in-category for each risk dimension.",
          "mutating": false,
          "name": "compareProtocols",
          "parameters": [
            "dimensions",
            "protocols"
          ],
          "required": [
            "protocols"
          ]
        }
      ],
      "category": "defi-security",
      "description": "Deep protocol risk analysis: smart contract security, governance centralization, economic sustainability, audit history, and rug pull probability scoring",
      "findings": [],
      "identifier": "sperax-protocol-risk",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-protocol-risk",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-protocol-risk",
      "title": "Protocol Risk Scorer"
    },
    {
      "apis": [
        {
          "description": "Describe the agentInitialize instruction that would register an AI agent on-chain for a token mint (authority + buyback percentage). Verifies that the mint account exists on-chain and returns a human-readable instruction sketch — NOT a serialized or signable transaction, and nothing is submitted. PDA addresses are not derived.",
          "mutating": true,
          "name": "initializeAgent",
          "parameters": [
            "mint",
            "agentAuthority",
            "buybackBps",
            "environment"
          ],
          "required": [
            "mint",
            "agentAuthority",
            "buybackBps"
          ]
        },
        {
          "description": "Describe the agentAcceptPayment instruction for a payment in a supported currency (USDC, SOL). Records an unsigned request with status \"pending_signature\" and returns a human-readable instruction sketch — NOT a serialized transaction. NO funds are received and no balance changes: the payer must build, sign and submit the real transaction with the Pump SDK.",
          "mutating": true,
          "name": "acceptPayment",
          "parameters": [
            "mint",
            "currencyMint",
            "amount",
            "user",
            "memo",
            "environment"
          ],
          "required": [
            "mint",
            "currencyMint",
            "amount",
            "user"
          ]
        },
        {
          "description": "Run STRUCTURAL checks on an invoice: the amount is positive, both mint accounts exist on-chain, and the current time is inside the invoice window. This does NOT verify that the payment settled — proving settlement needs the payment transaction signature or a decode of the program invoice account, neither of which this tool does. Never treat a pass as proof of payment.",
          "mutating": false,
          "name": "validateInvoice",
          "parameters": [
            "mint",
            "user",
            "currencyMint",
            "amount",
            "memo",
            "startTime",
            "endTime",
            "environment"
          ],
          "required": [
            "mint",
            "user",
            "currencyMint",
            "amount",
            "memo",
            "startTime",
            "endTime"
          ]
        },
        {
          "description": "Read what plain JSON-RPC can see for an agent mint: whether the mint account exists, how many recent signatures it has, and the currency balance held by the mint address itself. Vault addresses, total received and pending distribution are NOT returned — they live in program PDAs this tool cannot derive or decode.",
          "mutating": false,
          "name": "getBalances",
          "parameters": [
            "mint",
            "currencyMint",
            "environment"
          ],
          "required": [
            "mint",
            "currencyMint"
          ]
        },
        {
          "description": "Describe the agentDistributePayments instruction, which splits accumulated payments between the buyback and withdraw vaults using the agent buyback BPS. Returns a human-readable instruction sketch — NOT a serialized transaction, and nothing is submitted. The resulting split amounts are not previewed.",
          "mutating": true,
          "name": "distributePayments",
          "parameters": [
            "mint",
            "currencyMint",
            "environment"
          ],
          "required": [
            "mint",
            "currencyMint"
          ]
        },
        {
          "description": "Describe the agentBuybackTrigger instruction, which swaps currency from the buyback vault for the agent token and permanently burns it. Returns a human-readable instruction sketch — NOT a serialized transaction, and nothing is submitted or burned. No burn estimate is produced (that needs the vault balance and live AMM price).",
          "mutating": true,
          "name": "triggerBuyback",
          "parameters": [
            "mint",
            "currencyMint",
            "slippageBps",
            "environment"
          ],
          "required": [
            "mint",
            "currencyMint"
          ]
        },
        {
          "description": "Describe the agentWithdraw instruction, which sends the ENTIRE withdraw-vault balance to a destination wallet and can only be signed by the agent authority. Returns a human-readable instruction sketch — NOT a serialized transaction, and nothing is submitted. The vault balance is not readable here.",
          "mutating": true,
          "name": "withdrawFunds",
          "parameters": [
            "mint",
            "currencyMint",
            "destination",
            "environment"
          ],
          "required": [
            "mint",
            "currencyMint",
            "destination"
          ]
        },
        {
          "description": "Read the raw on-chain facts about an agent token mint (owner program, lamports, data length). The agent configuration itself — authority, buyback BPS, per-currency accounting — is NOT decoded and is returned as unavailable, because it lives in a program PDA that requires the Pump IDL. Existence of the mint does not mean an agent is registered.",
          "mutating": false,
          "name": "getAgentConfig",
          "parameters": [
            "mint",
            "environment"
          ],
          "required": [
            "mint"
          ]
        },
        {
          "description": "Describe the agentUpdateBuybackBps instruction, which changes the buyback basis points and can only be signed by the agent authority. Returns a human-readable instruction sketch — NOT a serialized transaction, and nothing is submitted. The current buyback BPS is not read.",
          "mutating": true,
          "name": "updateBuybackBps",
          "parameters": [
            "mint",
            "newBuybackBps",
            "environment"
          ],
          "required": [
            "mint",
            "newBuybackBps"
          ]
        },
        {
          "description": "Check whether the Pump Agent Payments program is deployed on the given network (real getAccountInfo on the program id) and list the currencies documented as supported. The protocol and buyback authorities are NOT read — the GlobalConfig PDA is not derivable here.",
          "mutating": false,
          "name": "getGlobalConfig",
          "parameters": [
            "environment"
          ],
          "required": []
        },
        {
          "description": "List recent transaction signatures for an agent mint, plus any unsigned payment requests built in this session. Signature timestamps, slots, SPL memos and failure status are real; amount, payer and currency are NOT decoded and no total volume is reported. These signatures are all mint activity, not confirmed payments.",
          "mutating": false,
          "name": "getPaymentHistory",
          "parameters": [
            "mint",
            "currencyMint",
            "limit",
            "environment"
          ],
          "required": [
            "mint"
          ]
        },
        {
          "description": "One-shot snapshot of activity: actions this tool performed in the current session plus recent transaction signatures for a mint. No websocket subscription is opened and the program Anchor events are NOT decoded, so filtering by program event names matches nothing.",
          "mutating": false,
          "name": "subscribeEvents",
          "parameters": [
            "mint",
            "eventNames",
            "limit",
            "environment"
          ],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Read-only Solana JSON-RPC reads plus instruction sketches for the Pump Agent Payments program: inspect agent mints and signatures, run structural invoice checks, and describe the accept-payment, distribute, buyback and withdraw instructions. It never signs or submits a transaction.",
      "findings": [],
      "identifier": "sperax-pump-agent-payments",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-pump-agent-payments",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-pump-agent-payments",
      "title": "Pump Agent Payments"
    },
    {
      "apis": [
        {
          "description": "Get a buy quote for a pump.fun token — estimate how many tokens you get for a given SOL amount. Uses constant-product AMM bonding curve math. Only works for non-graduated tokens.",
          "mutating": false,
          "name": "getBuyQuote",
          "parameters": [
            "mint",
            "solAmount"
          ],
          "required": [
            "mint",
            "solAmount"
          ]
        },
        {
          "description": "Get a sell quote for a pump.fun token — estimate how much SOL you receive for selling a given token amount. Uses constant-product AMM bonding curve math. Only works for non-graduated tokens.",
          "mutating": false,
          "name": "getSellQuote",
          "parameters": [
            "mint",
            "tokenAmount"
          ],
          "required": [
            "mint",
            "tokenAmount"
          ]
        },
        {
          "description": "Get detailed bonding curve status for a pump.fun token — progress percentage, lifecycle stage (new/growing/graduating/graduated), virtual reserves, spot price, and pool address if graduated.",
          "mutating": false,
          "name": "getBondingCurveStatus",
          "parameters": [
            "mint"
          ],
          "required": [
            "mint"
          ]
        },
        {
          "description": "Get pump.fun fee tiers showing protocol and creator fee rates at different market cap levels. Optionally pass a mint address to highlight which tier a specific token is in.",
          "mutating": false,
          "name": "getFeeTiers",
          "parameters": [
            "mint"
          ],
          "required": []
        },
        {
          "description": "Look up a pump.fun token creator by wallet address. Shows their tokens, graduation rate, and overall profile. Useful for evaluating creator reputation.",
          "mutating": false,
          "name": "getCreatorProfile",
          "parameters": [
            "limit",
            "wallet"
          ],
          "required": [
            "wallet"
          ]
        },
        {
          "description": "Look up a specific pump.fun token by its Solana mint address. Returns name, symbol, market cap, bonding curve status, creator, social links, ATH, reply count, and more.",
          "mutating": false,
          "name": "getCoinInfo",
          "parameters": [
            "mint"
          ],
          "required": [
            "mint"
          ]
        },
        {
          "description": "Browse the latest or most active pump.fun coins on Solana. Returns a list sorted by last trade time, creation time, or market cap.",
          "mutating": false,
          "name": "getLatestCoins",
          "parameters": [
            "limit",
            "order",
            "sort"
          ],
          "required": []
        },
        {
          "description": "Get pump.fun tokens that are currently live-streaming. These are actively promoted tokens with the most engagement.",
          "mutating": false,
          "name": "getLiveStreams",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Search for pump.fun tokens by name or symbol. Use when the user provides a token name but not an address.",
          "mutating": false,
          "name": "searchCoins",
          "parameters": [
            "limit",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Premium x402: Get tokens closest to graduating the bonding curve. Shows bonding progress %, buy velocity, and estimated time to graduation. Paid via x402 micropayment (0.001 USDC).",
          "mutating": false,
          "name": "getGraduationAlerts",
          "parameters": [
            "limit",
            "minProgress"
          ],
          "required": []
        },
        {
          "description": "Premium x402: Track large wallet (whale) buy/sell activity on pump.fun tokens. Shows trade size, direction, wallet address, and transaction. Paid via x402 micropayment (0.002 USDC).",
          "mutating": false,
          "name": "getWhaleActivity",
          "parameters": [
            "limit",
            "minSolAmount",
            "mint"
          ],
          "required": []
        },
        {
          "description": "Premium x402: Early-stage token signals — newly created tokens with high smart money activity, rising holder counts, and strong buy pressure. Paid via x402 micropayment (0.003 USDC).",
          "mutating": false,
          "name": "getSniperSignals",
          "parameters": [
            "limit",
            "maxAgeMinutes",
            "minHolders"
          ],
          "required": []
        }
      ],
      "category": "defi-trading",
      "description": "Real-time Solana memecoin data from pump.fun",
      "findings": [],
      "identifier": "sperax-pump-fun",
      "mcpGroups": [
        "predict"
      ],
      "package": "@lobechat/builtin-tool-pump-fun",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-pump-fun",
      "title": "Pump.fun"
    },
    {
      "apis": [
        {
          "description": "Fetch the latest research reports from top VC firms and crypto research organizations. Optionally filter by source firm (a16z, paradigm, messari, delphi, galaxy, pantera, electric-capital, variant, multicoin) or topic tag (defi, infrastructure, ai, gaming, social, regulation, scaling, privacy, identity, rwa).",
          "mutating": false,
          "name": "getLatestReports",
          "parameters": [
            "limit",
            "source",
            "topic"
          ],
          "required": []
        },
        {
          "description": "Search across all indexed VC research by keyword, technology, or thesis. Returns matching reports with key takeaways and source attribution.",
          "mutating": false,
          "name": "searchResearch",
          "parameters": [
            "limit",
            "query",
            "source"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get the trend radar — a bird's-eye view of emerging technologies and themes across all VC research. Each trend includes a confidence score (0-100), maturity stage (emerging/growing/mainstream/declining), mention count across firms, and time horizon (near-term/mid-term/long-term).",
          "mutating": false,
          "name": "getTrendRadar",
          "parameters": [
            "category",
            "horizon",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get a structured industry outlook with predictions organized by category. Each prediction includes confidence level and supporting evidence. Choose a time horizon: 1yr (near-term tactical), 3yr (mid-term strategic), or 5yr (long-term visionary).",
          "mutating": false,
          "name": "getOutlook",
          "parameters": [
            "category",
            "horizon"
          ],
          "required": []
        },
        {
          "description": "Deep-dive into a specific firm's thesis or report. Returns the full summary, key takeaways, actionable insights for builders, and relevance analysis for the SperaxOS ecosystem.",
          "mutating": false,
          "name": "getThesisSummary",
          "parameters": [
            "report",
            "source"
          ],
          "required": [
            "source"
          ]
        }
      ],
      "category": "social-intel",
      "description": "VC research intelligence from a16z, Paradigm, Messari, Delphi Digital and more — trend radar, industry outlooks, and actionable thesis analysis",
      "findings": [],
      "identifier": "sperax-research-intel",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-research-intel",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-research-intel",
      "title": "Research Intel"
    },
    {
      "apis": [
        {
          "description": "Get detailed information about a Gnosis Safe: owners list, signing threshold, current nonce, ETH and top ERC-20 token balances with USD values, and count of pending transactions. Use this first to orient the user around their Safe.",
          "mutating": false,
          "name": "getSafeInfo",
          "parameters": [
            "chainId",
            "safeAddress"
          ],
          "required": [
            "safeAddress"
          ]
        },
        {
          "description": "Get all pending (unexecuted) transactions for a Safe. Returns each transaction with: destination address, ETH value, calldata (decoded if possible), how many owners have signed, who still needs to sign, and a link to the Safe UI to complete signing.",
          "mutating": false,
          "name": "getPendingTransactions",
          "parameters": [
            "chainId",
            "safeAddress"
          ],
          "required": [
            "safeAddress"
          ]
        },
        {
          "description": "Propose a new transaction to a Gnosis Safe. Computes the Safe transaction hash and submits it to the Safe Transaction Service. Returns the safeTxHash and a link to the Safe UI where owners can sign it. ALWAYS confirm destination, value, and calldata with the user before calling this.",
          "mutating": true,
          "name": "proposeTransaction",
          "parameters": [
            "chainId",
            "data",
            "safeAddress",
            "senderAddress",
            "to",
            "value"
          ],
          "required": [
            "safeAddress",
            "to",
            "value",
            "senderAddress"
          ]
        },
        {
          "description": "Get the transaction history of a Safe — recently executed multisig transactions with timestamps, values, and decoded calldata descriptions.",
          "mutating": false,
          "name": "getSafeTransactionHistory",
          "parameters": [
            "chainId",
            "limit",
            "safeAddress"
          ],
          "required": [
            "safeAddress"
          ]
        },
        {
          "description": "Estimate the gas required for a proposed Safe transaction before submitting it. Useful for cost estimation before calling proposeTransaction.",
          "mutating": false,
          "name": "estimateSafeGas",
          "parameters": [
            "chainId",
            "data",
            "safeAddress",
            "to",
            "value"
          ],
          "required": [
            "safeAddress",
            "to",
            "value"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Gnosis Safe multi-sig treasury management: view balances, propose transactions, track signatures, and execute collected transactions.",
      "findings": [],
      "identifier": "lobe-safe-multisig",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-safe-multisig",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-safe-multisig",
      "title": "Safe Multisig"
    },
    {
      "apis": [
        {
          "description": "Post a message to a Slack channel. Requires user confirmation.",
          "mutating": false,
          "name": "postMessage",
          "parameters": [
            "channel",
            "text"
          ],
          "required": [
            "channel",
            "text"
          ]
        },
        {
          "description": "Send a direct message to a Slack user. Requires user confirmation.",
          "mutating": false,
          "name": "sendDirectMessage",
          "parameters": [
            "text",
            "userId"
          ],
          "required": [
            "userId",
            "text"
          ]
        },
        {
          "description": "Reply to an existing message thread. Requires user confirmation.",
          "mutating": false,
          "name": "replyToThread",
          "parameters": [
            "channel",
            "text",
            "threadTs"
          ],
          "required": [
            "channel",
            "threadTs",
            "text"
          ]
        },
        {
          "description": "Search for messages across the Slack workspace.",
          "mutating": false,
          "name": "searchMessages",
          "parameters": [
            "count",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "List channels in the Slack workspace.",
          "mutating": false,
          "name": "listChannels",
          "parameters": [
            "excludeArchived",
            "limit"
          ],
          "required": []
        },
        {
          "description": "Get details about a specific Slack channel.",
          "mutating": false,
          "name": "getChannelInfo",
          "parameters": [
            "channel"
          ],
          "required": [
            "channel"
          ]
        },
        {
          "description": "Create a new Slack channel.",
          "mutating": false,
          "name": "createChannel",
          "parameters": [
            "isPrivate",
            "name"
          ],
          "required": [
            "name"
          ]
        },
        {
          "description": "Archive a Slack channel. Requires user confirmation.",
          "mutating": false,
          "name": "archiveChannel",
          "parameters": [
            "channel"
          ],
          "required": [
            "channel"
          ]
        },
        {
          "description": "Set or update a channel's topic.",
          "mutating": false,
          "name": "setTopic",
          "parameters": [
            "channel",
            "topic"
          ],
          "required": [
            "channel",
            "topic"
          ]
        },
        {
          "description": "List members of a specific Slack channel.",
          "mutating": false,
          "name": "listMembers",
          "parameters": [
            "channel",
            "limit"
          ],
          "required": [
            "channel"
          ]
        }
      ],
      "category": "communication",
      "description": "Send messages, search conversations, and manage Slack channels",
      "findings": [],
      "identifier": "sperax-slack",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-slack",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-slack",
      "title": "Slack"
    },
    {
      "apis": [
        {
          "description": "Read the SPA token balance of an address on every chain SPA is deployed to — BNB Chain, Arbitrum and Ethereum — plus the xSPA and USDs balances on Arbitrum, straight from the token contracts. Returns human-readable amounts per chain and exact raw wei values.",
          "mutating": false,
          "name": "getSpaBalances",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Read the veSPA staking position of an address from the active escrow on Arbitrum: locked SPA principal, unlock date, cooldown state (auto or manual, initiated or not) and current decaying voting power. If the Arbitrum position is empty, the legacy Ethereum escrow is checked before concluding the address is not staking.",
          "mutating": false,
          "name": "getStakingPosition",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get the current USD price and 24-hour change of SPA and USDs (the Sperax stablecoin). Uses the public CoinGecko API with a DeFiLlama fallback; no key required.",
          "mutating": false,
          "name": "getSpaPrice",
          "parameters": [],
          "required": []
        },
        {
          "description": "Read Sperax staking protocol statistics live from Arbitrum: total SPA locked in the active veSPA escrow, xSPA total supply, the current SPA price, the USD value of all locked SPA, and locked SPA as a percentage of the Arbitrum SPA supply.",
          "mutating": false,
          "name": "getProtocolStats",
          "parameters": [],
          "required": []
        }
      ],
      "category": "sperax-protocol",
      "description": "Live Sperax $SPA token intelligence read directly on-chain: multi-chain SPA balances, veSPA staking positions with lock and cooldown state, SPA/USDs prices, and protocol-wide lock statistics.",
      "findings": [],
      "identifier": "sperax-spa",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-spa",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-spa",
      "title": "Sperax SPA"
    },
    {
      "apis": [
        {
          "description": "Create a new price, portfolio, or DeFi alert with customizable conditions and notification method.",
          "mutating": false,
          "name": "createAlert",
          "parameters": [
            "conditions",
            "name",
            "notificationMethod",
            "type"
          ],
          "required": [
            "type",
            "name",
            "conditions"
          ]
        },
        {
          "description": "List all alerts with their current status. Optionally filter by status.",
          "mutating": false,
          "name": "listAlerts",
          "parameters": [
            "status"
          ],
          "required": []
        },
        {
          "description": "Delete an alert by its ID.",
          "mutating": false,
          "name": "deleteAlert",
          "parameters": [
            "alertId"
          ],
          "required": [
            "alertId"
          ]
        },
        {
          "description": "Get history of triggered alerts with timestamps and outcomes.",
          "mutating": false,
          "name": "getAlertHistory",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Update an existing alert — modify its conditions, name, or notification method.",
          "mutating": false,
          "name": "updateAlert",
          "parameters": [
            "alertId",
            "conditions",
            "name",
            "notificationMethod"
          ],
          "required": [
            "alertId"
          ]
        }
      ],
      "category": "sperax-protocol",
      "description": "Manage price, portfolio, and DeFi alerts with smart notifications",
      "findings": [],
      "identifier": "sperax-alerts",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-sperax-alerts",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-sperax-alerts",
      "title": "Sperax Alerts"
    },
    {
      "apis": [
        {
          "description": "Get portfolio summary with total value, 24h change, and chain breakdown. Displays a rich summary card with chain distribution in chat.",
          "mutating": false,
          "name": "getPortfolioSummary",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get all token holdings with prices, amounts, USD value, and 24h change. Displays a sortable asset list in chat.",
          "mutating": false,
          "name": "getAssets",
          "parameters": [
            "chain",
            "sortBy",
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get active DeFi positions including lending, LP positions, and staking. Displays position cards with yield and health info.",
          "mutating": false,
          "name": "getDeFiPositions",
          "parameters": [
            "chain",
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get recent transaction history with type, amounts, timestamps, and transaction hashes.",
          "mutating": false,
          "name": "getTransactionHistory",
          "parameters": [
            "limit",
            "type",
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Analyze portfolio for risk, diversification, and recommendations. Displays a risk dashboard with scores and actionable suggestions.",
          "mutating": false,
          "name": "analyzePortfolio",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        }
      ],
      "category": "sperax-protocol",
      "description": "Portfolio analytics — assets, DeFi positions, transactions, and risk analysis",
      "findings": [],
      "identifier": "sperax-portfolio-v2",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-sperax-portfolio",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-sperax-portfolio",
      "title": "Portfolio Analytics"
    },
    {
      "apis": [
        {
          "description": "Get Sperax USDs auto-yield statistics including APY, TVL generating yield, auto-yield reserve, collateral breakdown, and active yield strategies. USDs holders earn yield automatically just by holding — no staking required.",
          "mutating": false,
          "name": "getAutoYieldStats",
          "parameters": [
            "walletAddress"
          ],
          "required": []
        },
        {
          "description": "Get Sperax LP farming pools with APR, TVL, daily rewards (xSPA, SPA, ARB), and status. Farms are liquidity pools on Camelot V3 where users earn rewards by providing liquidity.",
          "mutating": false,
          "name": "getFarms",
          "parameters": [
            "featuredOnly",
            "minApr",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Get SPA staking information including veSPA stats, lockup tiers (1 month to 4 years), APY per tier, total SPA locked, and governance power. Staking SPA for veSPA gives governance voting rights and staking rewards.",
          "mutating": false,
          "name": "getStakingInfo",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get xSPA token information including circulating supply, SPA burnt through xSPA, SPA locked in redemption, and xSPA to veSPA conversion details. xSPA can be staked to veSPA for governance power.",
          "mutating": false,
          "name": "getXSpaInfo",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get SPA buyback mechanism stats including total SPA bought back, USDs paid, buyback contract reserves, and available tokens. 30% of USDs yield revenue funds SPA buybacks.",
          "mutating": false,
          "name": "getBuybackStats",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get a comprehensive overview of the entire Sperax protocol: SPA price, USDs supply & peg, auto-yield APY, total TVL, farms TVL & best APR, staking stats, xSPA supply, buyback totals, and yield reserves. Best for general \"how is Sperax doing?\" queries.",
          "mutating": false,
          "name": "getProtocolOverview",
          "parameters": [],
          "required": []
        },
        {
          "description": "Mint USDs stablecoins by depositing collateral (USDC, USDC.e, or USDT) into the Sperax VaultCore on Arbitrum. Returns an unsigned transaction for the user to sign with their wallet. USDs holders automatically earn yield — no staking required.",
          "mutating": false,
          "name": "mintUSDs",
          "parameters": [
            "amount",
            "collateral",
            "slippage",
            "walletAddress"
          ],
          "required": [
            "collateral",
            "amount",
            "walletAddress"
          ]
        },
        {
          "description": "Redeem USDs for collateral (USDC, USDC.e, or USDT) from the Sperax VaultCore on Arbitrum. Burns USDs and returns the underlying collateral. Returns an unsigned transaction for wallet signing.",
          "mutating": false,
          "name": "redeemUSDs",
          "parameters": [
            "collateral",
            "slippage",
            "usdsAmount",
            "walletAddress"
          ],
          "required": [
            "collateral",
            "usdsAmount",
            "walletAddress"
          ]
        },
        {
          "description": "Sell SPA tokens for USDs via the Sperax SPABuyback contract on Arbitrum. SPA is exchanged at oracle price — a portion of the SPA is rewarded to veSPA stakers, the rest is burned. Returns an unsigned transaction for wallet signing.",
          "mutating": false,
          "name": "buybackSPA",
          "parameters": [
            "slippage",
            "spaAmount",
            "walletAddress"
          ],
          "required": [
            "spaAmount",
            "walletAddress"
          ]
        },
        {
          "description": "Stake (lock) SPA tokens into veSPA on Arbitrum to earn staking rewards and governance voting power. Locking for longer (up to 4 years / 1460 days) yields more veSPA and higher APY. Use this to create a NEW lock. Returns an unsigned transaction for wallet signing (approve SPA, then createLock).",
          "mutating": false,
          "name": "stakeSpa",
          "parameters": [
            "autoCooldown",
            "lockDurationDays",
            "spaAmount",
            "walletAddress"
          ],
          "required": [
            "spaAmount",
            "lockDurationDays",
            "walletAddress"
          ]
        },
        {
          "description": "Add more SPA to an EXISTING veSPA lock without changing its unlock time. The user must already have an active lock. Returns an unsigned transaction for wallet signing (approve SPA, then increaseAmount).",
          "mutating": false,
          "name": "increaseStake",
          "parameters": [
            "spaAmount",
            "walletAddress"
          ],
          "required": [
            "spaAmount",
            "walletAddress"
          ]
        },
        {
          "description": "Extend the unlock time of an EXISTING veSPA lock to increase veSPA voting power and APY. The new duration must be longer than the current one and at most 1460 days (4 years). Returns an unsigned transaction (increaseUnlockTime).",
          "mutating": false,
          "name": "extendStake",
          "parameters": [
            "lockDurationDays",
            "walletAddress"
          ],
          "required": [
            "lockDurationDays",
            "walletAddress"
          ]
        },
        {
          "description": "Withdraw SPA from an EXPIRED veSPA lock back to the wallet. Only works after the lock has ended (and cooldown, if applicable). Returns an unsigned transaction (withdraw).",
          "mutating": false,
          "name": "unstakeSpa",
          "parameters": [
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        }
      ],
      "category": "sperax-protocol",
      "description": "Sperax protocol data: Auto-Yield, Farms, Staking, xSPA, Buyback — live from Arbitrum",
      "findings": [],
      "identifier": "sperax-protocol",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-sperax-protocol",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-sperax-protocol",
      "title": "Sperax Protocol"
    },
    {
      "apis": [
        {
          "description": "Get a swap quote showing the best price for exchanging one token for another. Returns rate, gas cost, price impact, and minimum received. Always use this before executing a swap.",
          "mutating": false,
          "name": "getQuote",
          "parameters": [
            "amount",
            "chainId",
            "fromToken",
            "slippage",
            "toChainId",
            "toToken"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount"
          ]
        },
        {
          "description": "Execute a previously quoted swap. Requires the quoteId from getQuote and the user wallet address. ONLY call this after the user has explicitly confirmed the swap. The quoteData field is automatically populated from the quote state for serverless resilience.",
          "mutating": true,
          "name": "executeSwap",
          "parameters": [
            "quoteData",
            "quoteId",
            "walletAddress"
          ],
          "required": [
            "quoteId",
            "walletAddress"
          ]
        },
        {
          "description": "Check the status of a swap transaction by its hash.",
          "mutating": false,
          "name": "getSwapStatus",
          "parameters": [
            "chainId",
            "txHash"
          ],
          "required": [
            "txHash"
          ]
        },
        {
          "description": "Get the list of blockchain networks supported for swapping.",
          "mutating": false,
          "name": "getSupportedChains",
          "parameters": [],
          "required": []
        },
        {
          "description": "Get supported tokens for swapping on a specific chain. Optionally filter by search query.",
          "mutating": false,
          "name": "getSupportedTokens",
          "parameters": [
            "chainId",
            "search"
          ],
          "required": []
        },
        {
          "description": "Check if a cross-chain bridge route exists between two chains for a given token and amount. Returns route availability, estimated time, gas cost, and bridge name. Use this when a user asks \"can I bridge X from chain A to chain B?\".",
          "mutating": false,
          "name": "checkBridgeRoute",
          "parameters": [
            "amount",
            "chainId",
            "fromToken",
            "toChainId",
            "toToken"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount",
            "chainId",
            "toChainId"
          ]
        },
        {
          "description": "Bridge tokens from one chain to another. Returns an unsigned transaction for wallet signing. ALWAYS use checkBridgeRoute first to verify the route exists, then confirm with the user before executing. REAL TRANSACTION.",
          "mutating": true,
          "name": "bridgeTokens",
          "parameters": [
            "amount",
            "chainId",
            "fromToken",
            "slippage",
            "toChainId",
            "toToken",
            "walletAddress"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount",
            "chainId",
            "toChainId",
            "walletAddress"
          ]
        },
        {
          "description": "Check the status of a cross-chain bridge transaction. Shows source/destination tx hashes, amounts, and whether the bridge is still pending, complete, or failed. Use this to track bridge progress.",
          "mutating": false,
          "name": "getBridgeStatus",
          "parameters": [
            "chainId",
            "toChainId",
            "txHash"
          ],
          "required": [
            "txHash",
            "chainId",
            "toChainId"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Swap tokens across DEXs with best pricing and MEV protection",
      "findings": [],
      "identifier": "sperax-swap",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-swap",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-swap",
      "title": "Swap"
    },
    {
      "apis": [
        {
          "description": "Rebuild a wallet's realized gain/loss for a calendar year from on-chain transfer history. Replays the full history to establish cost basis, matches each disposal to the acquisitions that funded it, prices both sides in USD at the time they happened, and splits the result into short-term and long-term. Also totals the native-token gas fees paid in the window. Returns per-disposal rows plus a warnings list naming everything the data could not support — unpriced assets, disposals with no recorded acquisition, truncated history. This is a working paper computed from public chain data, not tax advice.",
          "mutating": false,
          "name": "generateTaxReport",
          "parameters": [
            "address",
            "chain",
            "costBasisMethod",
            "taxYear"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Show what a wallet still holds and what it cost. Replays the full acquisition and disposal history to derive the open lots per asset, then values them at the current price: quantity held, weighted average cost, market value and unrealized gain. Use this for 'what is my cost basis', 'am I up or down on this position', or before deciding what to sell. Assets CoinGecko does not price are listed with null values rather than being priced at zero.",
          "mutating": false,
          "name": "getCostBasis",
          "parameters": [
            "address",
            "asset",
            "chain",
            "costBasisMethod"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Export a year of the wallet's transfer history as a downloadable CSV, priced in USD at the time of each transfer. Use `koinly` for the Koinly Universal import template, or `generic` for one row per transfer leg with unit price and USD value. Use this when the user wants to file, hand figures to an accountant, or import into tax software — not when they just want to read the numbers, which is what generateTaxReport is for. Rows the price data cannot cover are exported with an empty value rather than zero.",
          "mutating": false,
          "name": "exportCsv",
          "parameters": [
            "address",
            "chain",
            "format",
            "taxYear"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "market-data",
      "description": "Realized gain/loss and cost basis rebuilt from on-chain transfer history, priced at the time of each event, with FIFO/LIFO/HIFO lot selection and an explicit list of what the data cannot support.",
      "findings": [],
      "identifier": "sperax-tax-reporting",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-tax-reporting",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-tax-reporting",
      "title": "Tax Reporting"
    },
    {
      "apis": [
        {
          "description": "Scan all active ERC-20 and ERC-721 token approvals (allowances) for a wallet address. Shows which contracts can spend your tokens, the approved amounts, and risk levels. Displays a rich approval list with risk indicators.",
          "mutating": false,
          "name": "getApprovals",
          "parameters": [
            "address",
            "chain",
            "tokenType"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get a comprehensive security risk assessment of all token approvals for a wallet. Returns an overall risk score, counts of unlimited/unverified approvals, total value at risk, and specific risk findings.",
          "mutating": false,
          "name": "getRiskAssessment",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Build an unsigned revoke transaction for a specific token approval. Returns transaction data (to, data, chainId) that the user must sign with their wallet. For ERC-20: calls approve(spender, 0). For ERC-721: calls setApprovalForAll(spender, false).",
          "mutating": true,
          "name": "revokeApproval",
          "parameters": [
            "address",
            "chain",
            "spenderAddress",
            "tokenAddress",
            "tokenType"
          ],
          "required": [
            "address",
            "tokenAddress",
            "spenderAddress"
          ]
        },
        {
          "description": "Build unsigned revoke transactions for all active approvals (or only high-risk ones). Returns an array of transactions that the user can sign in batch. Use riskyOnly=true to only revoke unlimited and high-risk approvals.",
          "mutating": true,
          "name": "revokeAllApprovals",
          "parameters": [
            "address",
            "chain",
            "riskyOnly"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "View the history of approval and revoke events for a wallet. Shows when approvals were granted and revoked, with timestamps and transaction hashes.",
          "mutating": false,
          "name": "getApprovalHistory",
          "parameters": [
            "address",
            "chain",
            "limit"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-security",
      "description": "Scan, assess, and revoke token approvals to protect your wallet from unlimited allowances",
      "findings": [],
      "identifier": "sperax-token-approvals",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-token-approvals",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-token-approvals",
      "title": "Token Approvals"
    },
    {
      "apis": [
        {
          "description": "List token categories/sectors sorted by market cap, volume, or 24h change. Shows category size, performance, and top tokens.",
          "mutating": false,
          "name": "getCategories",
          "parameters": [
            "limit",
            "sortBy"
          ],
          "required": []
        },
        {
          "description": "Get the top tokens in a specific category/sector. Returns token prices, 24h changes, and market caps.",
          "mutating": false,
          "name": "getCategoryTokens",
          "parameters": [
            "categoryId",
            "limit"
          ],
          "required": [
            "categoryId"
          ]
        },
        {
          "description": "Get a summary of token categories: top gaining sectors, top losing sectors, and largest by market cap.",
          "mutating": false,
          "name": "getCategorySummary",
          "parameters": [],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Browse crypto token categories/sectors — DeFi, L1, L2, AI, Meme, Gaming and more.",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-token-categories",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-token-categories",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-token-categories",
      "title": "Token Categories"
    },
    {
      "apis": [
        {
          "description": "Get token emission schedule and supply breakdown (circulating, total, max). Shows percent circulating and FDV.",
          "mutating": false,
          "name": "getEmissionsSchedule",
          "parameters": [
            "token"
          ],
          "required": [
            "token"
          ]
        },
        {
          "description": "Get supply metrics for a specific token: circulating supply, total supply, max supply, FDV, and inflation rate.",
          "mutating": false,
          "name": "getTokenSupplyInfo",
          "parameters": [
            "token"
          ],
          "required": [
            "token"
          ]
        },
        {
          "description": "Compare supply distribution across multiple tokens. Shows which tokens have the most/least supply circulating.",
          "mutating": false,
          "name": "getEmissionsSummary",
          "parameters": [
            "tokens"
          ],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Track token supply, inflation, emission schedules, and FDV vs market cap ratios.",
      "findings": [
        {
          "code": "no-tests",
          "message": "The package ships no test file.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-token-emissions",
      "mcpGroups": [
        "market"
      ],
      "package": "@lobechat/builtin-tool-token-emissions",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-token-emissions",
      "title": "Token Emissions"
    },
    {
      "apis": [
        {
          "description": "Get upcoming token unlock events across all protocols. Returns unlock date, token, amount, USD value, and percent of supply. Useful for identifying potential sell pressure.",
          "mutating": false,
          "name": "getUpcomingUnlocks",
          "parameters": [
            "days",
            "minValueUsd"
          ],
          "required": []
        },
        {
          "description": "Get the full unlock/vesting schedule for a specific protocol. Pass the protocol name or slug (e.g. \"arbitrum\", \"optimism\", \"aptos\").",
          "mutating": false,
          "name": "getProtocolUnlocks",
          "parameters": [
            "protocol"
          ],
          "required": [
            "protocol"
          ]
        },
        {
          "description": "Get an aggregated summary of token unlocks within a time window — total value, event count, largest single unlock, and breakdown by category.",
          "mutating": false,
          "name": "getUnlockSummary",
          "parameters": [
            "days"
          ],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Track upcoming token unlock schedules and cliff events from DefiLlama",
      "findings": [],
      "identifier": "sperax-token-unlocks",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-token-unlocks",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-token-unlocks",
      "title": "Token Unlocks"
    },
    {
      "apis": [
        {
          "description": "Analyze a cryptocurrency chart with technical analysis. Returns RSI, MACD, support/resistance levels, and trend direction based on recent OHLCV data from CoinGecko. Example: analyzeChart({ symbol: \"BTC\" })",
          "mutating": false,
          "name": "analyzeChart",
          "parameters": [
            "symbol",
            "timeframe"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Generate a Pine Script v5 indicator or strategy for TradingView. Returns complete, ready-to-paste Pine Script code. Example: generatePineScript({ scriptType: \"ma_crossover\", symbol: \"BTCUSD\" })",
          "mutating": false,
          "name": "generatePineScript",
          "parameters": [
            "includeAlerts",
            "scriptType",
            "symbol",
            "timeframe"
          ],
          "required": [
            "scriptType"
          ]
        },
        {
          "description": "Display an interactive TradingView Advanced Chart for a cryptocurrency or stock. Renders a fully interactive chart widget inline with drawing tools, indicators, and time range controls. Example: showChart({ symbol: \"BTC\" }) or showChart({ symbol: \"ETH\", interval: \"4H\" })",
          "mutating": false,
          "name": "showChart",
          "parameters": [
            "interval",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Display a TradingView Crypto Market Heatmap showing all major cryptocurrencies sized by market cap and colored by price change. Great for quick market overview. Example: showHeatmap() or showHeatmap({ blockColor: \"change|60\" }) for 1h change.",
          "mutating": false,
          "name": "showHeatmap",
          "parameters": [
            "blockColor",
            "blockSize",
            "dataSource"
          ],
          "required": []
        },
        {
          "description": "Display a scrolling TradingView ticker tape showing live prices for cryptocurrencies. Shows a horizontal bar with logos, prices, and % changes. Example: showTicker() or showTicker({ symbols: \"BTC,ETH,SOL,SPA\" })",
          "mutating": false,
          "name": "showTicker",
          "parameters": [
            "symbols"
          ],
          "required": []
        },
        {
          "description": "Display a compact TradingView mini chart sparkline for a single symbol. Shows price trend, current value, and % change in a small card. Example: showMiniChart({ symbol: \"BTC\" }) or showMiniChart({ symbol: \"ETH\", dateRange: \"3M\" })",
          "mutating": false,
          "name": "showMiniChart",
          "parameters": [
            "dateRange",
            "symbol"
          ],
          "required": [
            "symbol"
          ]
        },
        {
          "description": "Display a TradingView Crypto Screener table with sortable columns for price, 24h change, volume, and market cap. Great for scanning the market. Example: showScreener()",
          "mutating": false,
          "name": "showScreener",
          "parameters": [
            "defaultColumn",
            "defaultSort",
            "market"
          ],
          "required": []
        }
      ],
      "category": "market-data",
      "description": "Interactive TradingView charts, crypto heatmaps, and market screeners rendered inline",
      "findings": [],
      "identifier": "sperax-tradingview",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-tradingview",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-tradingview",
      "title": "TradingView Charts"
    },
    {
      "apis": [
        {
          "description": "Build a token swap transaction via DEX aggregator. Returns a quote and raw txData for user approval.",
          "mutating": true,
          "name": "buildSwap",
          "parameters": [
            "amount",
            "chain",
            "fromToken",
            "slippage",
            "toToken"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount",
            "chain"
          ]
        },
        {
          "description": "Build a token or native transfer transaction. Returns recipient, amount, gas, and raw txData for user approval.",
          "mutating": true,
          "name": "buildTransfer",
          "parameters": [
            "amount",
            "chain",
            "to",
            "token"
          ],
          "required": [
            "to",
            "token",
            "amount",
            "chain"
          ]
        },
        {
          "description": "Build a token approval/allowance transaction. Warns about unlimited approvals.",
          "mutating": true,
          "name": "buildApproval",
          "parameters": [
            "amount",
            "chain",
            "spender",
            "token"
          ],
          "required": [
            "token",
            "spender",
            "amount",
            "chain"
          ]
        },
        {
          "description": "Estimate gas cost for a raw transaction. Returns costs for slow/normal/fast speed tiers.",
          "mutating": false,
          "name": "estimateGas",
          "parameters": [
            "txData"
          ],
          "required": [
            "txData"
          ]
        },
        {
          "description": "Simulate a transaction and show what token balances change. Useful for reviewing complex DeFi interactions.",
          "mutating": false,
          "name": "simulateTransaction",
          "parameters": [
            "txData"
          ],
          "required": [
            "txData"
          ]
        },
        {
          "description": "Get a swap price quote without building a transaction. Shows estimated output, price impact, and available DEXes.",
          "mutating": false,
          "name": "getSwapQuote",
          "parameters": [
            "amount",
            "chain",
            "fromToken",
            "toToken"
          ],
          "required": [
            "fromToken",
            "toToken",
            "amount",
            "chain"
          ]
        }
      ],
      "category": "blockchain",
      "description": "Build, simulate, and preview DeFi transactions for user approval. Supports swaps, transfers, approvals, and gas estimation.",
      "findings": [],
      "identifier": "sperax-tx-builder",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-tx-builder",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-tx-builder",
      "title": "Transaction Builder"
    },
    {
      "apis": [
        {
          "description": "Simulate a single transaction to preview its outcome before signing. Returns: success/failure, revert reason, gas used, token balance changes (what you send and receive), state changes, and emitted events. Uses eth_call as base layer, optionally enhanced with Tenderly for rich decoded output.",
          "mutating": false,
          "name": "simulateTransaction",
          "parameters": [
            "chain",
            "data",
            "from",
            "gasLimit",
            "to",
            "value"
          ],
          "required": [
            "from",
            "to"
          ]
        },
        {
          "description": "Simulate a bundle of transactions in sequence (e.g. approve + swap). Shows the cumulative outcome of all transactions. Useful for multi-step DeFi operations.",
          "mutating": false,
          "name": "simulateBundle",
          "parameters": [
            "chain",
            "transactions"
          ],
          "required": [
            "transactions"
          ]
        },
        {
          "description": "Perform a security scan on a transaction to detect phishing, rug pulls, unlimited approvals, and other risks. Returns a safety verdict (safe/warning/danger), risk score, specific warnings, and a recommendation.",
          "mutating": false,
          "name": "securityScan",
          "parameters": [
            "chain",
            "data",
            "from",
            "to",
            "value"
          ],
          "required": [
            "from",
            "to"
          ]
        },
        {
          "description": "Decode transaction calldata into human-readable format. Shows the function name, parameters with names/types/values, and contract info. Useful for understanding what a raw transaction does.",
          "mutating": false,
          "name": "decodeTransaction",
          "parameters": [
            "chain",
            "data",
            "to"
          ],
          "required": [
            "to",
            "data"
          ]
        },
        {
          "description": "Get the history of recent transaction simulations performed in this session.",
          "mutating": false,
          "name": "getSimulationHistory",
          "parameters": [
            "limit"
          ],
          "required": []
        }
      ],
      "category": "defi-security",
      "description": "Simulate transactions before signing — preview outcomes, detect risks, and decode calldata",
      "findings": [],
      "identifier": "sperax-tx-simulator",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-tx-simulator",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-tx-simulator",
      "title": "TX Simulator"
    },
    {
      "apis": [
        {
          "description": "Get all Uniswap V3 LP positions for a wallet. Shows each position's token pair, fee tier, tick range, in-range status, value in USD, uncollected fees, and capital efficiency. Use this FIRST when a user asks about their concentrated liquidity positions.",
          "mutating": false,
          "name": "getPositions",
          "parameters": [
            "chain",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        },
        {
          "description": "Deep-analyze a single V3 position: risk score (0-100), days out of range, estimated missed fees, 7d/30d time-in-range, 30-day volatility, and a suggested action. Use after getPositions to drill into a specific position.",
          "mutating": false,
          "name": "analyzePosition",
          "parameters": [
            "chain",
            "tokenId"
          ],
          "required": [
            "chain",
            "tokenId"
          ]
        },
        {
          "description": "Simulate rebalancing a V3 position to a new tick range. Shows new capital efficiency, estimated daily fees, gas cost, and days to recover gas. ALWAYS use this before buildRebalanceTx to confirm the rebalance is worthwhile.",
          "mutating": false,
          "name": "simulateRebalance",
          "parameters": [
            "chain",
            "currentTokenId",
            "newTickLower",
            "newTickUpper"
          ],
          "required": [
            "chain",
            "currentTokenId",
            "newTickLower",
            "newTickUpper"
          ]
        },
        {
          "description": "Build unsigned rebalance transactions for a V3 position. Returns an array of transactions (collect fees, remove liquidity, add liquidity at new range) for the user's wallet to sign. REAL TRANSACTION — always confirm with the user first.",
          "mutating": true,
          "name": "buildRebalanceTx",
          "parameters": [
            "chain",
            "currentTokenId",
            "newTickLower",
            "newTickUpper",
            "slippage",
            "walletAddress"
          ],
          "required": [
            "chain",
            "currentTokenId",
            "newTickLower",
            "newTickUpper",
            "walletAddress"
          ]
        },
        {
          "description": "Get statistics for a Uniswap V3 pool: TVL, 24h volume, 24h fees, APY, current price, and 24h price change. Use when comparing pools or checking a pool's performance.",
          "mutating": false,
          "name": "getPoolStats",
          "parameters": [
            "chain",
            "poolAddress"
          ],
          "required": [
            "chain",
            "poolAddress"
          ]
        },
        {
          "description": "Find optimal tick ranges for a Uniswap V3 pool based on recent volatility. Returns conservative, moderate, and aggressive range options with estimated capital efficiency and time-in-range. Use when a user asks for range recommendations.",
          "mutating": false,
          "name": "findOptimalRange",
          "parameters": [
            "chain",
            "poolAddress",
            "riskTolerance"
          ],
          "required": [
            "chain",
            "poolAddress"
          ]
        }
      ],
      "category": "defi-trading",
      "description": "Manage Uniswap V3 concentrated liquidity: positions, analysis, rebalancing",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-uniswap-v3",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-uniswap-v3",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-uniswap-v3",
      "title": "Uniswap V3 Liquidity"
    },
    {
      "apis": [
        {
          "description": "Get recent crypto/DeFi fundraising rounds. Optionally filter by category, time window, or minimum amount raised.",
          "mutating": false,
          "name": "getRecentRaises",
          "parameters": [
            "category",
            "days",
            "minAmount"
          ],
          "required": []
        },
        {
          "description": "Search fundraising rounds by project name or investor name. Case-insensitive substring match.",
          "mutating": false,
          "name": "searchRaises",
          "parameters": [
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get aggregate fundraising summary: total raised, round count, average size, top categories, and most active investors.",
          "mutating": false,
          "name": "getRaiseSummary",
          "parameters": [
            "days"
          ],
          "required": []
        }
      ],
      "category": "blockchain",
      "description": "Track crypto & DeFi fundraising rounds and VC investments via DefiLlama",
      "findings": [],
      "identifier": "sperax-vc-raises",
      "mcpGroups": [
        "risk"
      ],
      "package": "@lobechat/builtin-tool-vc-raises",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-vc-raises",
      "title": "VC Fundraising"
    },
    {
      "apis": [
        {
          "description": "Trace where funds moved from a wallet address. Detects direct transfers, exchange hops (instant exchanges like ChangeNow/SimpleSwap), and follows the money up to maxDepth hops using timing correlation and amount matching.",
          "mutating": false,
          "name": "traceAddress",
          "parameters": [
            "address",
            "chain",
            "maxDepth",
            "minAmountUsd"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Identify exchange hops from a wallet — detect when funds passed through an instant exchange (ChangeNow, SimpleSwap, SideShift, FixedFloat, etc.) and find the exit address on the other side using timing correlation.",
          "mutating": false,
          "name": "getExchangeHops",
          "parameters": [
            "address",
            "chain",
            "lookbackDays"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Find other wallet addresses likely controlled by the same entity as the given address, using common-input heuristics (UTXO co-spending), timing correlation, peeling chains, and thin-relay detection.",
          "mutating": false,
          "name": "getAddressClusters",
          "parameters": [
            "address",
            "chain"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "productivity",
      "description": "Blockchain forensics: trace fund flows across wallets, detect instant exchange hops via timing correlation, and cluster addresses by ownership heuristics.",
      "findings": [],
      "identifier": "sperax-wallet-trace",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-wallet-trace",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-wallet-trace",
      "title": "Wallet Trace"
    },
    {
      "apis": [
        {
          "description": "a search service. Useful for when you need to answer questions about current events. Input should be a search query. Output is a JSON array of the query results",
          "mutating": false,
          "name": "search",
          "parameters": [
            "query",
            "searchCategories",
            "searchEngines",
            "searchTimeRange"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "A crawler can visit page content. Output is a JSON object of title, content, url and website",
          "mutating": false,
          "name": "crawlSinglePage",
          "parameters": [
            "url"
          ],
          "required": [
            "url"
          ]
        },
        {
          "description": "A crawler can visit multi pages. If need to visit multi website, use this one. Output is an array of JSON object of title, content, url and website",
          "mutating": false,
          "name": "crawlMultiPages",
          "parameters": [
            "urls"
          ],
          "required": [
            "urls"
          ]
        }
      ],
      "category": "web",
      "description": "Search the web and read pages — run a query across search engines, then crawl one page or many to pull their full text into the conversation.",
      "findings": [],
      "identifier": "lobe-web-browsing",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-web-browsing",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-web-browsing",
      "title": "Web Browsing"
    },
    {
      "apis": [
        {
          "description": "Fetch recent large on-chain transfers (\"whale moves\") from Whale Alert with owner labels and exchange inflow/outflow classification. Free tier covers the last 60 minutes with a $500,000 minimum transfer value.",
          "mutating": false,
          "name": "getLargeTransactions",
          "parameters": [
            "currency",
            "endTime",
            "limit",
            "minValueUsd",
            "startTime"
          ],
          "required": []
        },
        {
          "description": "List the blockchains and asset symbols Whale Alert is currently connected to and tracking.",
          "mutating": false,
          "name": "getTrackedChains",
          "parameters": [],
          "required": []
        }
      ],
      "category": "productivity",
      "description": "Large on-chain transfer monitoring powered by Whale Alert — whale moves, exchange inflows/outflows, and owner-labeled transfers across all major blockchains.",
      "findings": [],
      "identifier": "sperax-whale-alert",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-whale-alert",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-whale-alert",
      "title": "Whale Alert"
    },
    {
      "apis": [
        {
          "description": "Analyze crypto sentiment for a token or topic. Returns a sentiment score (0–100) derived from the Fear & Greed Index and 24h CoinGecko price change, plus related news articles.",
          "mutating": false,
          "name": "getCryptoSentiment",
          "parameters": [
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get the top trending crypto coins from CoinGecko. Returns a ranked list with real trading volume and sentiment based on 24h price changes.",
          "mutating": false,
          "name": "getTrendingCrypto",
          "parameters": [
            "limit"
          ],
          "required": []
        },
        {
          "description": "Search crypto news articles from aggregated news sources. Returns real headlines with source attribution.",
          "mutating": false,
          "name": "searchNews",
          "parameters": [
            "limit",
            "query"
          ],
          "required": [
            "query"
          ]
        },
        {
          "description": "Get trending coins from CoinGecko with correlated news articles. Filter by category: defi, bitcoin, ethereum, trading, or all.",
          "mutating": false,
          "name": "getInfluencerFeed",
          "parameters": [
            "category"
          ],
          "required": []
        }
      ],
      "category": "social-intel",
      "description": "Crypto market intelligence — real-time sentiment, trends, and news from CoinGecko & news aggregators",
      "findings": [],
      "identifier": "sperax-x-social",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-x-social",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-x-social",
      "title": "Crypto Intelligence"
    },
    {
      "apis": [
        {
          "description": "Discover available \"pumps\" (paid endpoints) at an x402 gas station. Returns a list of services with names, descriptions, and prices. Always call this first before refueling.",
          "mutating": false,
          "name": "discoverStation",
          "parameters": [
            "url"
          ],
          "required": [
            "url"
          ]
        },
        {
          "description": "Pay via x402 protocol to access a premium endpoint at the gas station. Supports USDC and USDs on Base, Arbitrum, and Ethereum. Handles the full payment flow: initial request → 402 → sign payment → retry with payment → receive data. Returns the premium data and a payment receipt.",
          "mutating": true,
          "name": "refuelAtPump",
          "parameters": [
            "url",
            "endpoint",
            "chainId",
            "token"
          ],
          "required": [
            "url",
            "endpoint"
          ]
        },
        {
          "description": "Check the agent wallet balance — shows current token balance, chain, total spent this session, and remaining budget.",
          "mutating": false,
          "name": "checkBalance",
          "parameters": [
            "chainId",
            "token"
          ],
          "required": []
        },
        {
          "description": "Get a full receipt of all x402 payments made during this session. Shows each purchase with pump name, price, chain, token, tx hash, and a total summary.",
          "mutating": false,
          "name": "getReceipt",
          "parameters": [],
          "required": []
        }
      ],
      "category": "sperax-protocol",
      "description": "Autonomous agent payments via x402 protocol. Pay for premium data and services with USDC or USDs on Base, Arbitrum, or Ethereum — like a gas station for AI agents.",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-x402",
      "mcpGroups": [],
      "package": "@lobechat/builtin-tool-x402",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-x402",
      "title": "x402 Gas Station"
    },
    {
      "apis": [
        {
          "description": "Find the best risk-adjusted yield opportunities across 10+ chains and 100+ protocols. Accounts for bridge costs, gas, protocol risk, IL risk, and reward sustainability. Returns scored and ranked routes.",
          "mutating": false,
          "name": "findOptimalYield",
          "parameters": [
            "amount",
            "asset",
            "includeLeveraged",
            "minTvl",
            "preferredChains",
            "riskTolerance"
          ],
          "required": [
            "asset",
            "amount"
          ]
        },
        {
          "description": "Generate a step-by-step migration plan to move yield positions from one protocol/chain to another, including bridge routing, gas estimates, and breakeven analysis.",
          "mutating": false,
          "name": "getYieldMigrationPlan",
          "parameters": [
            "fromAsset",
            "fromChain",
            "fromProtocol",
            "positionValue",
            "toChain",
            "toProtocol"
          ],
          "required": [
            "fromProtocol",
            "fromChain",
            "fromAsset",
            "positionValue"
          ]
        },
        {
          "description": "Simulate a yield strategy over a time horizon with bull/bear/base scenarios, optimal allocation, and risk-reward metrics (Sharpe ratio, max drawdown, Sortino).",
          "mutating": false,
          "name": "simulateYieldStrategy",
          "parameters": [
            "amount",
            "horizonDays",
            "pools",
            "riskTolerance"
          ],
          "required": [
            "amount",
            "horizonDays"
          ]
        },
        {
          "description": "Compare yield paths side-by-side with detailed pros/cons analysis, risk metrics, and AI-powered recommendation.",
          "mutating": false,
          "name": "compareYieldPaths",
          "parameters": [
            "asset",
            "chains",
            "protocols"
          ],
          "required": [
            "asset"
          ]
        },
        {
          "description": "Analyze historical APY data for a protocol/pool with statistical metrics (mean, median, std dev, reliability score, trend direction).",
          "mutating": false,
          "name": "getHistoricalYieldAnalysis",
          "parameters": [
            "days",
            "pool",
            "protocol"
          ],
          "required": [
            "protocol",
            "pool"
          ]
        },
        {
          "description": "Backtest a DeFi yield strategy using real historical APY data from DefiLlama. Simulates daily compounding from startDate to endDate, computes total return, gas costs, max drawdown, Sharpe ratio, and an optional impermanent loss estimate for LP pools. Answer questions like: \"If I had put $10k in Aave USDC on Arbitrum 6 months ago, what would I have now?\"",
          "mutating": false,
          "name": "backtestStrategy",
          "parameters": [
            "amount",
            "chain",
            "endDate",
            "poolId",
            "startDate"
          ],
          "required": [
            "poolId",
            "amount",
            "startDate",
            "endDate"
          ]
        },
        {
          "description": "Backtest a DeFi yield strategy AND compare it against a HODL (hold stablecoins at 0% APY) benchmark. Returns both results so users can directly compare: \"Was this yield strategy worth it vs just holding USDC?\"",
          "mutating": false,
          "name": "compareToHodl",
          "parameters": [
            "amount",
            "endDate",
            "poolId",
            "startDate"
          ],
          "required": [
            "poolId",
            "amount",
            "startDate",
            "endDate"
          ]
        },
        {
          "description": "Create an automated DeFi strategy that runs on a schedule or when market conditions are met. Supports three modes: monitor (alerts only), suggest (queues transactions for approval), or autopilot (executes within guardrails). Returns a validated strategy config — save it via the strategy tRPC endpoint to activate.",
          "mutating": false,
          "name": "createAutomatedStrategy",
          "parameters": [
            "guardrails",
            "mode",
            "name",
            "strategy",
            "trigger"
          ],
          "required": [
            "name",
            "mode",
            "trigger",
            "strategy"
          ]
        },
        {
          "description": "Get the current status of an automated strategy: whether it is active/paused, when it last ran, how many times it has succeeded or failed, and when it is next scheduled to fire.",
          "mutating": false,
          "name": "getStrategyStatus",
          "parameters": [
            "strategyId"
          ],
          "required": [
            "strategyId"
          ]
        },
        {
          "description": "Pause an active automated strategy, preventing it from firing until manually resumed. Useful when market conditions change or the user wants to review before continuing.",
          "mutating": false,
          "name": "pauseStrategy",
          "parameters": [
            "reason",
            "strategyId"
          ],
          "required": [
            "strategyId"
          ]
        },
        {
          "description": "Simulate the next execution of an automated strategy. Fetches current market state, evaluates trigger conditions, builds the transactions that would be executed, and returns a full plain-language report including gas cost, net annual benefit, and any guardrail violations — without actually executing anything.",
          "mutating": false,
          "name": "simulateNextExecution",
          "parameters": [
            "modeOverride",
            "strategyId"
          ],
          "required": [
            "strategyId"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "AI-powered cross-chain yield optimization with risk-adjusted routing, migration planning, and strategy simulation",
      "findings": [],
      "identifier": "sperax-yield-optimizer",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-yield-optimizer",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-yield-optimizer",
      "title": "Yield Optimizer"
    },
    {
      "apis": [
        {
          "description": "Browse available yield vaults from Yearn V3 and Beefy Finance. Filter by chain, deposit token, minimum APY, and minimum TVL. Returns a list of vaults with APY, TVL, risk level, and audit status.",
          "mutating": false,
          "name": "getVaults",
          "parameters": [
            "chain",
            "minApy",
            "minTvl",
            "token"
          ],
          "required": []
        },
        {
          "description": "Get detailed information about a specific vault, including strategy description, fee breakdown (management, performance, deposit, withdrawal), and historical APY (7-day, 30-day).",
          "mutating": false,
          "name": "getVaultDetails",
          "parameters": [
            "vaultId"
          ],
          "required": [
            "vaultId"
          ]
        },
        {
          "description": "Deposit tokens into a yield vault. Returns an unsigned transaction for the user to sign in their wallet (non-custodial). May include an ERC-20 approval transaction if token allowance is insufficient. ONLY call after the user has explicitly confirmed the deposit.",
          "mutating": true,
          "name": "deposit",
          "parameters": [
            "amount",
            "chain",
            "vaultId",
            "walletAddress"
          ],
          "required": [
            "vaultId",
            "amount",
            "chain",
            "walletAddress"
          ]
        },
        {
          "description": "Withdraw tokens from a yield vault. Returns an unsigned transaction for the user to sign. Use amount \"max\" for full withdrawal. ONLY call after the user has explicitly confirmed the withdrawal.",
          "mutating": true,
          "name": "withdraw",
          "parameters": [
            "amount",
            "chain",
            "vaultId",
            "walletAddress"
          ],
          "required": [
            "vaultId",
            "amount",
            "chain",
            "walletAddress"
          ]
        },
        {
          "description": "Get the user's current vault positions across all protocols and chains. Shows deposited amounts, current value, earned yield, and APY for each position.",
          "mutating": false,
          "name": "getUserPositions",
          "parameters": [
            "chain",
            "walletAddress"
          ],
          "required": [
            "walletAddress"
          ]
        }
      ],
      "category": "defi-analytics",
      "description": "Earn yield on your tokens through audited Yearn V3 and Beefy Finance vaults",
      "findings": [],
      "identifier": "sperax-yield-vaults",
      "mcpGroups": [
        "defi"
      ],
      "package": "@lobechat/builtin-tool-yield-vaults",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-yield-vaults",
      "title": "Yield Vaults"
    },
    {
      "apis": [
        {
          "description": "Get all token balances across chains for a wallet. Displays multi-chain balance cards in chat.",
          "mutating": false,
          "name": "getWalletBalances",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get active DeFi positions including lending, LP, farming and staking. Displays position cards with protocol icons.",
          "mutating": false,
          "name": "getDefiPositions",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get NFT holdings summary with collection names, floor prices, and estimated values. Displays an NFT grid.",
          "mutating": false,
          "name": "getNftHoldings",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get transaction history with DeFi categorization (swap, deposit, withdraw, mint, transfer).",
          "mutating": false,
          "name": "getWalletHistory",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        },
        {
          "description": "Get total net worth across all chains including tokens, DeFi, and NFT estimates.",
          "mutating": false,
          "name": "getNetWorth",
          "parameters": [
            "address"
          ],
          "required": [
            "address"
          ]
        }
      ],
      "category": "defi-portfolio",
      "description": "Track DeFi portfolio, token balances, NFTs, and net worth across chains",
      "findings": [],
      "identifier": "sperax-zapper",
      "mcpGroups": [
        "onchain"
      ],
      "package": "@lobechat/builtin-tool-zapper",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-zapper",
      "title": "Zapper"
    },
    {
      "apis": [
        {
          "description": "Get basic information about a Zealy community — name, description, member count, and image.",
          "mutating": false,
          "name": "getCommunityInfo",
          "parameters": [
            "subdomain"
          ],
          "required": []
        },
        {
          "description": "Look up a Zealy community member by user ID, wallet address, Discord handle, Twitter username, or email. Returns XP, rank, level, and connected accounts.",
          "mutating": false,
          "name": "getUser",
          "parameters": [
            "blockchainAddress",
            "blockchainNetwork",
            "discordHandle",
            "discordId",
            "email",
            "ethAddress",
            "subdomain",
            "twitterId",
            "twitterUsername",
            "userId"
          ],
          "required": []
        },
        {
          "description": "Retrieve the community leaderboard showing top members ranked by XP. Supports all-time and sprint-specific leaderboards with pagination.",
          "mutating": false,
          "name": "getLeaderboard",
          "parameters": [
            "limit",
            "page",
            "sprintId",
            "subdomain"
          ],
          "required": []
        },
        {
          "description": "List all quests in a Zealy community with their rewards, recurrence settings, and validation status. Requires admin access.",
          "mutating": false,
          "name": "listQuests",
          "parameters": [
            "subdomain"
          ],
          "required": []
        },
        {
          "description": "List sprints (time-limited competitions) in a Zealy community. Includes active and past sprints with start/end dates and reward zones.",
          "mutating": false,
          "name": "listSprints",
          "parameters": [
            "onlyCurrent",
            "subdomain"
          ],
          "required": []
        },
        {
          "description": "Review quest submissions — approve, reject, or set pending. Can optionally add a comment and bonus XP. Requires admin API key.",
          "mutating": false,
          "name": "reviewSubmission",
          "parameters": [
            "claimedQuestIds",
            "comment",
            "status",
            "subdomain"
          ],
          "required": [
            "claimedQuestIds",
            "status"
          ]
        }
      ],
      "category": "productivity",
      "description": "Zealy community engagement — quests, leaderboards, sprints & XP",
      "findings": [
        {
          "code": "no-router-keywords",
          "message": "No Smart Tool Router keyword overrides, so routing to this tool depends entirely on the classifier reading its description.",
          "severity": "info"
        }
      ],
      "identifier": "sperax-zealy",
      "mcpGroups": [
        "news"
      ],
      "package": "@lobechat/builtin-tool-zealy",
      "registered": true,
      "source": "https://github.com/nirholas/sperax/tree/main/packages/builtin-tool-zealy",
      "title": "Zealy"
    }
  ],
  "totals": {
    "apis": 596,
    "errors": 0,
    "infos": 33,
    "mcpExposed": 64,
    "packages": 102,
    "registered": 102,
    "warns": 0
  }
}
