---
id: nova/tools/mempool-inspector
title: "Mempool Inspector"
description: "The Mempool Inspector answers three everyday questions about pending (unconfirmed) transactions: how congested is the network right now, do I have anything stuck, and why hasn't my transaction confirmed."
product: nova
canonical: https://zeroauthoritydao.ai/docs/nova/tools/mempool-inspector
related: [nova/tools]
tokens: 1280
---

# Mempool Inspector

Check how congested Stacks, Bitcoin or EVM chains are, list an address's pending transactions, or diagnose why one transaction is stuck (fee too low, nonce gap, RBF/CPFP). Read-only.

The Mempool Inspector answers three everyday questions about **pending (unconfirmed) transactions**: *how congested is the network right now*, *do I have anything stuck*, and *why hasn't my transaction confirmed*. It works on **Stacks**, **Bitcoin**, and **EVM** chains, each with the same three modes.

> [!TIP]
> **Read-only and keyless.** The Inspector only reads public mempool / RPC data — it never signs, broadcasts, or moves funds, and needs no admin or DM. Stacks (Hiro) and Bitcoin (mempool.space) are fully keyless.

***

## Supported Chains

| Chain | Source | Notes |
| ----- | ------ | ----- |
| **Stacks** | Hiro API | Full mempool: stats, per-address pending txs, per-tx stuck diagnosis |
| **Bitcoin** | mempool.space | Full mempool: stats, per-address pending txs, per-tx stuck diagnosis (incl. CPFP & RBF) |
| **EVM** (Ethereum, Base, Arbitrum, Optimism, Polygon, BSC, Avalanche) | Alchemy RPC | Gas/fee snapshot, per-address pending **count** + nonce gap, per-tx stuck diagnosis |

> [!NOTE]
> **Solana is not covered.** Solana has no mempool — transactions go straight to the block leader, so there is nothing pending to inspect.

***

## The Three Modes

You pick the mode by what you pass:

| Mode | What you pass | What you get |
| ---- | ------------- | ------------ |
| **Stats** | *(nothing)* | A live congestion snapshot — how busy the network is and what fee gets you in right now |
| **Address** | an `address` | That address's pending (unconfirmed) transactions |
| **Transaction** | a `tx_id` / txid / tx hash | A **"stuck" diagnosis** for one transaction |

On **EVM** you can also set `chain` (default `ethereum`; accepts `base`, `arbitrum`, `optimism`, `polygon`, `bsc`, `avalanche`, and aliases like `eth` / `arb` / `op` / `matic` / `bnb` / `avax`).

***

### Stats — "how congested is it right now?"

Run it with no address or transaction to get a network-wide snapshot.

- **Stacks** — total pending count, a breakdown by transaction type (token transfer / contract call / contract deploy), the **fee percentiles in STX** (p25/p50/p75/p95) needed to get in per type, and **how long** pending txs of each type have been waiting.
- **Bitcoin** — pending count, total backlog in vMB, **projected blocks to clear**, a congestion level, the current **recommended fee rates in sat/vB** (next block / 30 min / 1 hour / economy), and the fee histogram.
- **EVM** — current and **next-block base fee**, **priority-fee percentiles** (p10/p50/p90), suggested **low / medium / high** all-in gas prices in gwei, and the pending block's transaction count.

On EVM, the suggested gas price = next-block base fee + a priority-fee percentile. The pending-block tx count is the node's view of the **next block**, not the entire mempool — public RPCs don't expose the full pending pool.

### Address — "do I have pending transactions?"

Pass an address to see what's unconfirmed for it.

- **Stacks** — outgoing and incoming pending txs with fee, nonce, type, and age.
- **Bitcoin** — pending txs touching the address, each with fee, vsize, sat/vB rate, and net value direction (incoming / outgoing).
- **EVM** — the **count** of pending transactions plus a **nonce-gap** read (confirmed vs pending nonce). Public RPCs don't expose the individual pending txs, so this is a count, not a listing.

### Transaction — "why is my tx stuck?"

Pass a transaction id/hash for a stuck diagnosis.

- **Stacks** — the tx's fee vs live mempool fee percentiles for its type (**underpriced / below median / competitive**) and a sender **nonce-gap** check — the most common reason a tx won't confirm regardless of fee.
- **Bitcoin** — the tx's sat/vB rate, the **effective** rate including any **CPFP** child, a verdict vs current recommended tiers (competitive / low / underpriced), and whether **RBF** is signaled (so you know if you can bump it).
- **EVM** — whether the tx is still pending, its max/effective gas price vs the current base fee and median priority, and a sender **nonce-gap** check (is it stuck behind an earlier-nonce tx?).

A **nonce gap** means an earlier transaction from the same sender hasn't confirmed yet — everything behind it is blocked **regardless of fee** until that one confirms or is replaced. The Inspector flags this on Stacks and EVM.

***

## Example Prompts

> "How congested is the Bitcoin mempool right now, and what sat/vB do I need for the next block?"

> "What gas price do I need on Base at the moment?"

> "Why is my Stacks transaction stuck? `0x…`"

> "Do I have any pending transactions? `SP…`"

> "Is this Bitcoin tx going to confirm or is the fee too low? `<txid>`"

> "Check this Ethereum tx — is it stuck behind an earlier nonce? `0x…`"

***

## Using It From an Agent (x402 / MCP)

The per-chain tools are on the public Tools Platform as `stacks-mempool-inspector`, `bitcoin-mempool-inspector`, and `evm-mempool-inspector` (REST + MCP, **free**). Agents can use them to **time a broadcast** (wait for low fees), **right-size a fee** before signing, or **detect and recover a stuck transaction** (bump via RBF/CPFP on Bitcoin, or replace-by-nonce on Stacks/EVM).
