Watch the Chia fee market
You are watching chia-explorer's fee estimator and notifying when recommended fees drop below a threshold the user can live with. Useful for batching low-priority spends.
This skill follows the conventions in this repo's SKILLS.md. Read that if anything below is unclear.
Required capabilities
- chia-explorer (
mcp__chia-explorer__*) — mandatory. - A notification MCP — pick whichever is installed. Fall back to
~/.chia-skills/alerts/if none.
Resolve inputs
You need: $max_fee_mojos, $target_minutes, $spend_type, $channel.
$max_fee_mojos— alert when the recommended fee for the target inclusion window is at or below this many mojos. Required. (1 XCH = 1,000,000,000,000 mojos, so 1,000,000 mojos = 0.000001 XCH, a typical "cheap" fee.)$target_minutes— inclusion window:1,5, or15minutes. Default5.$spend_type— bias the estimate for a specific spend kind:xch,cat,nft,offer, orauto(default).$channel— notification channel, defaultauto.
Resolve: arguments → context → ask user.
If the user describes the threshold in XCH or USD, convert to mojos before validating. Tell them the conversion in the confirmation.
Load or initialise state
State file: ~/.chia-skills/state/watch-fee-market__<target_minutes>m_<spend_type>.json.
Shape:
{
"max_fee_mojos": 1000000,
"target_minutes": 5,
"spend_type": "auto",
"last_recommended_mojos": 5000000,
"last_check_iso": "2026-05-19T14:33:00Z",
"last_alerted_at": null
}
On first run: fetch current recommended fee, record it, write state, emit STATUS: success, EVENTS: 0. Don't fire an alert even if the current fee already satisfies the condition.
Check the fee
Call chia-explorer's estimate_fee for target_minutes = $target_minutes and spend_type = $spend_type.
Extract the recommended mojo fee for the target window.
Decide whether to alert
Alert if both:
last_recommended_mojos > $max_fee_mojosANDcurrent_recommended_mojos <= $max_fee_mojos
(That is: fees just dropped through the threshold from above.)
Debounce: if last_alerted_at is within the last 30 minutes, suppress. Fee market is noisier than price; tighter debounce.
Compose the notification
Chia fees dropped — cheap window for $spend_type spends
Recommended fee (5-min inclusion): 500,000 mojos (0.0000005 XCH)
Your threshold: 1,000,000 mojos (0.000001 XCH)
Previously: 5,000,000 mojos
Good window to broadcast queued transactions. Open your wallet to send.
Don't sign anything. Just notify.
Send the notification
Pick a channel by priority. Fall back to inline file.
Update state
Update last_recommended_mojos, last_check_iso, and (if alert fired) last_alerted_at. Write state atomically.
Scheduling
This skill is one-shot. Wire to:
scheduleskill / cron — every 2-5 minutes. The fee market moves block-by-block./loop— for short focused waits.
Hard rules
- No retroactive alerts on first run.
- Debounce 30 minutes.
- Display mojos and XCH together in every message. Mojos are the canonical unit but XCH is what humans budget in.
Recovery patterns
- chia-explorer call fails. Don't update state. Emit
STATUS: failed. - Estimate returns 0 mojos. That's the genuine "mempool is empty, any fee works" signal — still alert (it's the cheapest possible window).
Output
STATUS: success | no_change | partial | failed | aborted
ALERTED: true | false
RECOMMENDED_MOJOS: <int>
RECOMMENDED_XCH: <decimal>
THRESHOLD_MOJOS: <int>
TARGET_MINUTES: <1|5|15>
CHANNEL: <channel used> | inline | none
ARTIFACT: <path to inline alert file> | none
REASON: <one line, only when STATUS is failed, partial, or aborted, or when no_change is due to debounce>