get_expiring_names
List ENS names by lifecycle window — THE tool for "which names are in premium / on Dutch auction", "names in grace period", "what's expiring soon / about to drop". Statuses:
premium: 90-111 days past expiry, registerable NOW at a decaying premium. Each result includes premiumUsd (decay-curve estimate) and, when the on-chain read landed, premiumEth + firstYearEth (live rentPrice).
grace: 0-90 days past expiry. NOT registerable — only renewable.
active: registered, expiring within
days(they will drop into grace, then premium). Grace/premium results are validated against on-chain state, so renewed or already-released names are filtered out — statuses here are reliable, unlike the coarse EXPIRED flag in search results. Supports length/charType/category/dictionary filters. Use search_ens_names for pattern/price/theme queries instead. SCOPE: every row here has an EXISTING registration moving through a lifecycle window. This tool cannot answer "what is available / unregistered / free to register" in general — those names have no lease to expire, so they are not in this dataset at all. Route "which X are available to register" to search_ens_names, even when X is a digit pattern. Only send a query here when it names a lifecycle window (premium / Dutch auction / grace / expiring soon); "registerable NOW" in the premium line describes that one window, not availability at large. The length/charType filters and sortBy do NOT make this the tool for a plain pattern list: "3-letter numbers sorted by name", "4-letter words", "5-digit names" name no lifecycle window and belong to search_ens_names — sending them here returns a grace/premium dump the user did not ask for.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | For status "active"/"all": look-ahead window in days (default 30). | |
| limit | No | Max results (default 25, max 100) | |
| sortBy | No | Sort order (default expires ascending — closest to dropping first). "grade" = best expected auction outcome first; use it for "which premium names are worth the most / best opportunities". | |
| status | No | Lifecycle window: "premium" = in the 21-day post-grace Dutch auction (registerable at a decaying premium), "grace" = 0-90d past expiry (NOT registerable, holder can renew), "active" = registered names expiring within `days`, "all" = any of these. | premium |
| category | No | Collection slug filter (e.g. "crypto-terms", "999-club") | |
| charType | No | Character composition filter. When this tool is the right one AND the request is for digits — "N-digit", "numeric", or a digit club (999 Club = 3-digit, 10K Club = 4-digit, 100K Club = 5-digit) — set this to "numbers", otherwise letter names of the same length pollute the results. This governs how to FILL this parameter, not whether to call this tool: digit phrasing on its own is not a reason to choose get_expiring_names over search_ens_names. | |
| minGrade | No | Only names graded at least this well (A best). Combine with sortBy:"grade" for the shortlist. | |
| maxLength | No | Maximum label length in CHARACTERS (see minLength note re digits). | |
| minLength | No | Minimum label length in CHARACTERS. Length alone does NOT imply digits — a "4-digit" query needs charType:"numbers" too, or 4-letter names leak in. | |
| dictionaryOnly | No | Only dictionary words |