yield-pool-watcher

Track APY and TVL across pools and alert on changes. Zero-config defaults perfect for x402scan payments.

Entrypoints

Explore the capabilities exposed by this agent. Invoke with JSON, stream responses when available, and inspect pricing where monetization applies.

monitor

Invoke

Monitor DeFi pool metrics (APY, TVL) across multiple networks with block-level precision and configurable alert thresholds. Returns real-time data, change deltas, and triggered alerts. Works with zero parameters (defaults to Base + Compound V3).

Pricing Invoke: 0.001
Network base
Invoke Endpoint POST /entrypoints/monitor/invoke

No input schema provided. Expect bare JSON payload.

Invoke with curl
curl -s -X POST \
  'https://yield-pool-watcher.vercel.app/entrypoints/monitor/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {}
    }
  '

get_history

Invoke

Retrieve historical APY and TVL metrics for a specific pool, with configurable limit. Useful for tracking trends and analyzing pool performance over time. Works with zero parameters (defaults to Compound V3 USDC on Base).

Pricing Invoke: 0.001
Network base
Invoke Endpoint POST /entrypoints/get_history/invoke

No input schema provided. Expect bare JSON payload.

Invoke with curl
curl -s -X POST \
  'https://yield-pool-watcher.vercel.app/entrypoints/get_history/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {}
    }
  '

echo

Invoke

Health check endpoint that echoes input text and provides system status including RPC connectivity, current block number, monitored pools count, and server uptime. Works with zero parameters (uses default greeting).

Pricing Invoke: 0.001
Network base
Invoke Endpoint POST /entrypoints/echo/invoke

No input schema provided. Expect bare JSON payload.

Invoke with curl
curl -s -X POST \
  'https://yield-pool-watcher.vercel.app/entrypoints/echo/invoke' \
  -H 'Content-Type: application/json' \
  -d '
    {
      "input": {}
    }
  '

Client Example: x402-fetch

Use the x402-fetch helpers to wrap a standard fetch call and automatically attach payments. This script loads configuration from .env, pays the facilitator, and logs both the response body and the decoded payment receipt.

import { config } from "dotenv";
import {
  decodeXPaymentResponse,
  wrapFetchWithPayment,
  createSigner,
  type Hex,
} from "x402-fetch";

config();

const privateKey = process.env.PRIVATE_KEY as Hex | string;
const baseURL = process.env.RESOURCE_SERVER_URL as string; // e.g. https://example.com
const endpointPath = process.env.ENDPOINT_PATH as string; // e.g. /weather
const url = `${baseURL}${endpointPath}`; // e.g. https://example.com/weather

if (!baseURL || !privateKey || !endpointPath) {
  console.error("Missing required environment variables");
  process.exit(1);
}

/**
 * Demonstrates paying for a protected resource using x402-fetch.
 *
 * Required environment variables:
 * - PRIVATE_KEY            Signer private key
 * - RESOURCE_SERVER_URL    Base URL of the agent
 * - ENDPOINT_PATH          Endpoint path (e.g. /entrypoints/echo/invoke)
 */
async function main(): Promise<void> {
  // const signer = await createSigner("solana-devnet", privateKey); // uncomment for Solana
  const signer = await createSigner("base-sepolia", privateKey);
  const fetchWithPayment = wrapFetchWithPayment(fetch, signer);

  const response = await fetchWithPayment(url, { method: "GET" });
  const body = await response.json();
  console.log(body);

  const paymentResponse = decodeXPaymentResponse(
    response.headers.get("x-payment-response")!
  );
  console.log(paymentResponse);
}

main().catch((error) => {
  console.error(error?.response?.data?.error ?? error);
  process.exit(1);
});