Altcoin discovery on Base

Returns JSON with new tokens on Base that just got liquidity: Uniswap v3 pools created in the last hours against WETH or USDC, read on-chain from pool creation events, with price, depth and age.

Use when you need altcoin discovery, new token listings or fresh Base tokens with real liquidity to research.

Do not use for established coins, other chains or DEXs, price history, trading signals or token safety audits.

Price: 0.005 USDC per call (x402, eip155:8453). Typical response time: 3000 ms (p95).

Call it over HTTP (x402)

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/altcoin-discovery. A request without payment gets 402 Payment Required with the PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.

curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/altcoin-discovery -H 'content-type: application/json' -d '{"hours":24,"limit":3}'
Pay to0xb510c30097476eC5863B5b3aA486F1838a8619EA
Asset0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
Amount5000 atomic units (0.005 USDC)
Authorization window60 s

Call it over MCP

Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool blackwood_altcoin_discovery. Payment goes in _meta["x402/payment"]; without it the tool returns the payment requirements.

Input

FieldTypeMeaning
hours (optional)integerLook back this many hours for new pools, 1 to 72 (24 when omitted), e.g. 24
minDepthUsd (optional)numberMinimum USD on the WETH or USDC side of the pool (5000 when omitted), e.g. 10000
limit (optional)integerTokens to return, 1 to 25 (10 when omitted), e.g. 5
quote (optional)stringQuote side of the pool (any when omitted), e.g. "WETH"

Example:

{
  "hours": 24,
  "limit": 3
}

Output

Real example:

{
  "tokens": [
    {
      "token": "0xf8cfec7b01455831800c188715f4c43242f32b46",
      "symbol": "WLF",
      "name": "MajorWOLF",
      "decimals": 18,
      "quote": "WETH",
      "pool": "0x19d0203318e9889add539b5bf0e9b054d1f62889",
      "feeTier": 3000,
      "createdBlock": 52776914,
      "ageHours": 1.9,
      "priceUsd": 0.00118304,
      "depthUsd": 11830
    }
  ],
  "window": {
    "hours": 24,
    "fromBlock": 52737095,
    "toBlock": 52780295
  },
  "coverage": {
    "fromBlock": 52758696,
    "hours": 12
  },
  "scannedPools": 46,
  "source": "Uniswap v3 PoolCreated events and pool state on Base (on-chain)",
  "note": "New tokens are read on-chain from Uniswap v3 PoolCreated events on Base, paired with WETH or USDC; depth is the WETH or USDC balance of the pool in USD and price comes from the pool itself (WETH priced by the WETH/USDC pool). A new pool says nothing about safety: check the contract, holders and liquidity locks before trading. Other DEXs (Uniswap v4, Aerodrome) are not read."
}
JSON Schema
{
  "type": "object",
  "properties": {
    "tokens": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string"
          },
          "symbol": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "decimals": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "quote": {
            "type": "string",
            "enum": [
              "WETH",
              "USDC"
            ]
          },
          "pool": {
            "type": "string"
          },
          "feeTier": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "createdBlock": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "ageHours": {
            "type": "number"
          },
          "priceUsd": {
            "type": "number"
          },
          "depthUsd": {
            "type": "number"
          }
        },
        "required": [
          "token",
          "symbol",
          "name",
          "decimals",
          "quote",
          "pool",
          "feeTier",
          "createdBlock",
          "ageHours",
          "priceUsd",
          "depthUsd"
        ],
        "additionalProperties": false
      }
    },
    "window": {
      "type": "object",
      "properties": {
        "hours": {
          "type": "number"
        },
        "fromBlock": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "toBlock": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "hours",
        "fromBlock",
        "toBlock"
      ],
      "additionalProperties": false
    },
    "coverage": {
      "type": "object",
      "properties": {
        "fromBlock": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "hours": {
          "type": "number"
        }
      },
      "required": [
        "fromBlock",
        "hours"
      ],
      "additionalProperties": false
    },
    "scannedPools": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "source": {
      "type": "string"
    },
    "note": {
      "type": "string"
    },
    "next": {
      "type": "object",
      "properties": {
        "service": {
          "type": "string",
          "description": "Service id of the suggested next paid call"
        },
        "tool": {
          "type": "string",
          "description": "MCP tool name of the same call"
        },
        "method": {
          "type": "string",
          "enum": [
            "GET",
            "POST"
          ]
        },
        "url": {
          "type": "string",
          "description": "Paid route of the next call"
        },
        "useWhen": {
          "type": "string",
          "description": "When the next call is the right one"
        },
        "sample": {
          "type": "string",
          "description": "Free fixed sample of the whole family"
        }
      },
      "required": [
        "service",
        "tool",
        "method",
        "url",
        "useWhen",
        "sample"
      ],
      "additionalProperties": false,
      "description": "Suggested next paid call in the same family (call it in a loop when the task continues)"
    }
  },
  "required": [
    "tokens",
    "window",
    "coverage",
    "scannedPools",
    "source",
    "note"
  ],
  "additionalProperties": false
}

More

Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/altcoin-discovery. OpenAPI 3.1 · llms.txt · All services