alerts.watch
ActiveTool of Syenite
Registers a persistent background monitor that fires alerts when user-defined thresholds are crossed, persisting across server restarts. Supports four watch types: lending (monitors a wallet's health factor on Aave, Morpho, Spark, or Compound — fires when health factor drops below healthFactorThreshold), rate (monitors borrow/supply APY and pool utilization for a collateral/borrowAsset pair — fires on APY crossings via rateBorrowThreshold/rateSupplyThreshold or utilization via rateUtilizationThreshold), carry (monitors the net spread between best supply APY and cheapest borrow rate — fires when spread exceeds carryThreshold), and yield (monitors best available yield for an asset — fires when APY crosses yieldApyThreshold in the specified direction). Provide webhookUrl to receive POST payloads when alerts fire; otherwise poll alerts.check to retrieve unacknowledged alerts. Does not execute trades — alert data must be acted on by the agent. Returns a watch ID needed for alerts.remove.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"type": {
"enum": [
"lending",
"rate",
"carry",
"yield"
],
"type": "string",
"default": "lending",
"description": "Watch type: lending (health factor), rate (APY/utilization), carry (net spread), yield (best APY)"
},
"chain": {
"enum": [
"ethereum",
"arbitrum",
"base",
"all"
],
"type": "string",
"description": "Chain filter (lending)"
},
"address": {
"type": "string",
"description": "EVM address to monitor (lending watches)"
},
"protocol": {
"enum": [
"aave-v3",
"compound-v3",
"morpho",
"spark",
"all"
],
"type": "string",
"description": "Protocol filter (lending)"
},
"rateChain": {
"type": "string",
"description": "Chain filter (rate)"
},
"yieldRisk": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "Max risk level (yield)"
},
"webhookUrl": {
"type": "string",
"description": "HTTP(S) URL to POST alerts to in real-time"
},
"yieldAsset": {
"type": "string",
"description": "Asset to watch, e.g. ETH, USDC, stables (yield)"
},
"yieldChains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Chains to include (yield)"
},
"rateProtocol": {
"enum": [
"aave-v3",
"morpho",
"spark",
"compound-v3",
"fluid",
"all"
],
"type": "string",
"description": "Protocol filter (rate)"
},
"rateDirection": {
"enum": [
"above",
"below"
],
"type": "string",
"description": "APY threshold direction (rate, default above)"
},
"carryThreshold": {
"type": "number",
"description": "Minimum net spread % to fire carry_opportunity (carry)"
},
"rateCollateral": {
"type": "string",
"description": "Collateral asset, e.g. wBTC (rate)"
},
"yieldDirection": {
"enum": [
"above",
"below"
],
"type": "string",
"description": "APY threshold direction (yield, default above)"
},
"carryCollateral": {
"type": "string",
"description": "Collateral you post to borrow, e.g. wBTC (carry)"
},
"rateBorrowAsset": {
"type": "string",
"description": "Borrow asset, e.g. USDC (rate, default USDC)"
},
"carryBorrowAsset": {
"type": "string",
"description": "Asset you borrow, e.g. USDC (carry)"
},
"carrySupplyAsset": {
"type": "string",
"description": "Asset you supply — defaults to carryBorrowAsset (carry)"
},
"yieldApyThreshold": {
"type": "number",
"description": "APY % threshold (yield)"
},
"rateBorrowThreshold": {
"type": "number",
"description": "Borrow APY % threshold (rate)"
},
"rateSupplyThreshold": {
"type": "number",
"description": "Supply APY % threshold (rate)"
},
"healthFactorThreshold": {
"type": "number",
"maximum": 5,
"minimum": 1,
"description": "Alert threshold (lending, default 1.5)"
},
"rateUtilizationThreshold": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Utilization % threshold — fires rate_utilization; critical at ≥95% (rate)"
}
}
}No endpoints wrapped at confidence ≥ 0.50.
Parent server
Syenite
https://github.com/syenite-ai/syenite
1/7 registries