npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@flashbank/mcp

v1.1.1

Published

MCP server exposing the FlashBank contracts (P2P term loans + flash-loan router) to AI agents: browse offers, quote fees, and optionally transact on Ethereum, Base, Arbitrum and the Sepolia playground.

Readme

FlashBank MCP server

Listed on Glama

A Model Context Protocol server that lets AI agents browse, quote and (optionally) transact with the FlashBank contracts — the P2P term-loan escrow and the flash-loan router — on Ethereum, Base, Arbitrum and the Sepolia playground.

Self-contained: inline minimal ABIs, public RPCs, no Hardhat compilation needed. Read tools work with zero configuration; write tools are opt-in and safety-gated. Beyond the 15 tools it serves resources (flashbank://guide, flashbank://chains, flashbank://cooling-off, flashbank://safety), guided prompts (play_on_sepolia, lend_assets, borrow_against_collateral) and connect-time instructions, and every tool carries MCP safety annotations (readOnlyHint / destructiveHint / idempotentHint) so agent clients can reason about risk before calling anything.

cd mcp && npm install && npm test     # 16 tests incl. a full MCP stdio handshake — no network/key needed
npm run smoke                         # live read-only check against the deployed contracts
npm run drill                         # LIVE two-agent lifecycle drill on Sepolia (needs a funded key)

The drill spawns two real MCP server instances (lender agent + a throwaway borrower agent) and walks faucet → create → browse → take (pinned) → early repay (cooling-off rebate verified) → withdraw-unclaimed probe → cancel, with real transactions on the Sepolia playground.

Safety model

| Mode | Requirement | What it allows | | --- | --- | --- | | Read-only (default) | nothing | browse offers, quotes, pool stats, wallet lookups | | Playground writes | FLASHBANK_MCP_PRIVATE_KEY | create/take/repay/claim/cancel + faucet on Sepolia | | Mainnet writes | …and FLASHBANK_MCP_ALLOW_MAINNET=true | the same on Ethereum/Base — real assets, real risk |

Use a dedicated throwaway key for agents; never a key holding meaningful funds. Mainnet writes are deliberately double-gated and the contracts carry no external audit.

Tools

Read (always available)

| Tool | Purpose | | --- | --- | | explain | Plain-English primer on both products — agents should call this first | | list_chains | Chains, contract addresses, registry tokens, current write permissions | | wallet_status | Signer address + native/token balances on a chain | | p2p_list_offers | Open offers, boosted first, with human-readable terms | | p2p_get_loan | Full detail: terms, take quote, repayment quote, default split, terms pin | | p2p_my_loans | Loans created by an address (or the signing wallet) | | flash_pools | Flash-loan liquidity, fee bps, caps and provider count per token | | flash_quote | Fee + fundability quote for a flash-borrow amount |

Write (gated as above)

| Tool | Purpose | | --- | --- | | p2p_create_offer | Post a lend offer / borrow request (escrows your side; handles the approval; optional coolingOffHours on v2 chains) | | p2p_take_offer | Accept an offer, pinning the exact reviewed terms on-chain (terms hash, or version pin on older builds — feature-detected) | | p2p_repay | Repay and redeem collateral; on v2 chains reports the vested fee and any cooling-off rebate | | p2p_claim_default | Lender claims collateral after the repay window closes | | p2p_cancel | Cancel your untaken offer and reclaim escrow | | p2p_withdraw_unclaimed | v2: withdraw a payout that queued because it couldn't be delivered to you | | faucet_mint | Mint 10,000 fpUSD/fpETH play-money (Sepolia only) |

Flash loans are quote/read only by design: executing one requires a smart contract implementing the borrower callback, which is not something an MCP tool should improvise.

Resources & prompts

| Resource | Content | | --- | --- | | flashbank://guide | The product primer (same text as explain) | | flashbank://chains | Chain/contract/token registry as JSON, incl. per-chain contract versions | | flashbank://cooling-off | The v2 fee-vesting model with the exact formula | | flashbank://safety | The write-gating model and agent rules of thumb |

| Prompt | Workflow | | --- | --- | | play_on_sepolia | Safe first session: faucet → post → inspect → cancel, narrated | | lend_assets | Compose a sensible lend offer (cushion, fee, term, surplus-return) and place it | | borrow_against_collateral | Shortlist offers, compare true cost + default risk, take with pinned terms |

Installation

From this repo (works today):

{
	"mcpServers": {
		"flashbank": {
			"command": "node",
			"args": ["mcp/src/server.js"],
			"env": {
				"FLASHBANK_MCP_PRIVATE_KEY": "0x<throwaway-key-funded-on-sepolia>"
			}
		}
	}
}

The repo ships a project-level .cursor/mcp.json that registers it for Cursor in read-only mode (omit the env block and it stays read-only). Claude Desktop uses the same JSON shape in claude_desktop_config.json; Claude Code: claude mcp add flashbank -- node mcp/src/server.js.

Via npm (once published as flashbank-mcp):

{
	"mcpServers": {
		"flashbank": {
			"command": "npx",
			"args": ["-y", "flashbank-mcp"]
		}
	}
}

Via Docker:

cd mcp && docker build -t flashbank-mcp .
docker run -i --rm flashbank-mcp                # read-only

Any other MCP client works the same way — stdio transport, command node src/server.js.

Environment variables

| Variable | Default | Meaning | | --- | --- | --- | | FLASHBANK_MCP_PRIVATE_KEY | unset | Signing key; unset = read-only | | FLASHBANK_MCP_ALLOW_MAINNET | unset | true unlocks mainnet writes | | FLASHBANK_MCP_RPC_<CHAIN> | public RPC | Override the RPC per chain, e.g. FLASHBANK_MCP_RPC_ETHEREUM |

Layout

src/chains.js         chain registry (addresses, tokens, RPCs, p2pVersion) — update on redeploys
src/abi.js            inline minimal ABIs, version-aware (v1 mainnets, v2 Sepolia playground)
src/clients.js        providers, signer, write gate, token resolution, allowances
src/format.js         pure formatting helpers (unit-tested)
src/server.js         the MCP server: tools, resources, prompts, annotations
scripts/mcp-client.js minimal stdio client shared by the protocol test and the drill
scripts/smoke.js      live read-only smoke against the real deployments
scripts/drill.js      live two-agent lifecycle drill on Sepolia
test/                 node:test suites incl. a full MCP stdio protocol test
Dockerfile            container build (stdio entrypoint), used by hosts like Glama

The listing on Glama is maintained via the repo-root glama.json.

The Sepolia playground runs FlashBankP2PLoanV2 (0x536f…1E76): cooling-off rebate, token validation and pull-payouts (see docs/design/P2P_V2_COOLING_OFF.md). Mainnets stay on v1 until v2 graduates.