# three.ws pump.fun MCP (remote · three.ws)

Free, read-only pump.fun and Solana token discovery and on-chain analysis tools, by three.ws.

- Trust score: 71/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `three.ws`: 71/100 (this document), [markdown](https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp.md), [page](https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp)

## Channel facts

- Endpoint: `https://three.ws/api/pump-fun-mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 62/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2303 tokens (~121/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 58% of tool parameters carry a description.
  - Structured output schemas are declared (53% of tools); any adoption earns full credit.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http nirholas-threews-pumpfun https://three.ws/api/pump-fun-mcp
```

### Codex

```toml
[mcp_servers.nirholas-threews-pumpfun]
url = "https://three.ws/api/pump-fun-mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nirholas-threews-pumpfun": {
      "type": "remote",
      "url": "https://three.ws/api/pump-fun-mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add nirholas-threews-pumpfun --url https://three.ws/api/pump-fun-mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  nirholas-threews-pumpfun:
    url: "https://three.ws/api/pump-fun-mcp"
```

### Other

```json
{
  "mcpServers": {
    "nirholas-threews-pumpfun": {
      "type": "http",
      "url": "https://three.ws/api/pump-fun-mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 70, +5)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 65, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 65, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (19)

### `get_token_details` (~28 tokens)

Token Details

Full details for a specific pump.fun token by mint address.

Input parameters:

- `mint` (string, required)

### `get_bonding_curve` (~167 tokens)

Bonding Curve

Bonding curve analysis: real reserves, virtual reserves, and graduation progress (on-chain). Pre-graduation only: these reserves come from the pump program bonding-curve account, not from a PumpSwap pool. Pump renamed the quote-side fields on-chain (real_sol_reserves -> real_quote_reserves, virtual_sol_reserves -> virtual_quote_reserves) once a non-SOL quote asset became possible; the response keys below keep their original names and are still denominated in SOL, because the curve quote_mint is the SOL default on every coin created to date. Once complete=true the curve is retired and pricing moves to the PumpSwap pool, so use pumpfun_quote_swap from that point on.

Input parameters:

- `mint` (string, required)
- `network` (string)

Output parameters:

- `complete` (boolean): true once the curve has graduated
- `graduationPercent` (number): 0–100 graduation progress
- `mint` (string)
- `network` (string)
- `solReserves` (string): Real quote reserves in SOL (4-decimal string). On-chain field: real_quote_reserves.
- `tokenReserves` (string): Real token reserves (raw base units)
- `virtualSolReserves` (string): Virtual quote reserves (lamports). On-chain field: virtual_quote_reserves (u64). Spot price = virtual_quote_reserves / virtual_token_reserves. Distinct from the identically-named PumpSwap Pool.virtua…
- `virtualTokenReserves` (string): Virtual token reserves (raw base units)

### `get_token_trades` (~33 tokens)

Token Trades

Recent buy/sell history for a token.

Input parameters:

- `limit` (integer)
- `mint` (string, required)

### `get_token_holders` (~43 tokens)

Token Holders

Top holders of a token with concentration analysis (on-chain).

Input parameters:

- `limit` (integer)
- `mint` (string, required)
- `network` (string)

### `pumpfun_vanity_mint` (~106 tokens)

Vanity Mint Keypair

Generate a Solana keypair whose address ends/starts with a vanity pattern. Returns publicKey + secretKey (base58). Caller must save the secret key immediately — it is never stored. Hard timeout: 60 s.

Input parameters:

- `caseSensitive` (boolean)
- `maxAttempts` (integer)
- `prefix` (string): Desired address prefix (case-insensitive by default)
- `suffix` (string): Desired address suffix (case-insensitive by default)

Output parameters:

- `attempts` (integer): Keypairs ground before the match
- `ms` (number): Wall-clock grind time in milliseconds
- `publicKey` (string): Matched Solana address (base58)
- `secretKey` (string): Secret key (base58) — caller is sole custodian

### `pumpfun_watch_whales` (~93 tokens)

Watch Whale Trades

Collect whale trades on a pump.fun token for a short window (max 10 s). Returns all trades whose USD value meets minUsd.

Input parameters:

- `durationMs` (number): Collection window in ms (default 5000, max 10000)
- `minUsd` (number): Minimum trade value in USD (default 5000)
- `mint` (string, required): SPL mint pubkey (base58)

### `pumpfun_list_claims` (~74 tokens)

List Creator Fee Claims

List recent pump.fun fee-claim events for a creator wallet (on-chain, no indexer needed). Returns signature, mint, lamports, and Unix timestamp for each claim.

Input parameters:

- `creator` (string, required): Creator wallet address (base58)
- `limit` (integer)
- `network` (string)

### `pumpfun_watch_claims` (~88 tokens)

Watch Creator Fee Claims

Return all pump.fun fee-claim events for a creator wallet within a look-back window (durationMs). Useful for batch collection after a delay.

Input parameters:

- `creator` (string, required): Creator wallet address (base58)
- `durationMs` (number): Look-back window in ms (default 300000 = 5 min, max 1800000)
- `network` (string)

### `pumpfun_first_claims` (~74 tokens)

First Creator Fee Claims

First-ever pump.fun creator fee claims in a time window: a cash-out signal. Returns creators who have never claimed before, with creator wallet, mint, lamports, and timestamp.

Input parameters:

- `limit` (integer)
- `sinceMinutes` (integer): How far back to look for new claimers (minutes)

### `sns_resolve` (~44 tokens)

Resolve .sol Domain

Resolve a .sol Solana Name Service domain to its owner wallet address.

Input parameters:

- `name` (string, required): .sol domain name, e.g. "bonfida.sol"

Output parameters:

- `address` (string): Owner wallet address (base58)
- `name` (string): The .sol domain that was resolved

### `sns_reverseLookup` (~38 tokens)

Reverse .sol Lookup

Reverse-lookup a Solana wallet address to its primary .sol domain name.

Input parameters:

- `address` (string, required): Base58 Solana wallet address

Output parameters:

- `address` (string): The wallet address that was looked up
- `name` (string): Primary .sol domain for the address

### `social_cashtag_sentiment` (~71 tokens)

Cashtag Sentiment

Score social-post sentiment for a cashtag using a deterministic lexicon. Returns score (-1..1), positive/negative/neutral percentages, and example posts.

Input parameters:

- `posts` (array, required): Array of post objects. Each must have a text field; id, ts, and author are optional.

Output parameters:

- `count` (integer): Number of posts scored
- `examples` (object)
- `negPct` (number): Percentage of negative posts (0–100)
- `neuPct` (number): Percentage of neutral posts (0–100)
- `posPct` (number): Percentage of positive posts (0–100)
- `score` (number): Net sentiment, -1 (bearish) to 1 (bullish)

### `kol_leaderboard` (~52 tokens)

KOL Leaderboard

Top KOL traders ranked by P&L for a given time window. Returns wallet, pnlUsd, winRate, trades, rank.

Input parameters:

- `limit` (integer)
- `window` (string)

### `pumpfun_quote_swap` (~224 tokens)

Swap Quote (Read-Only)

Read-only price quote for a pump.fun AMM (PumpSwap) swap. No signing or tx sending. One of inputMint/outputMint must be wSOL (So11111111111111111111111111111111111111112). Only GRADUATED coins have an AMM pool; for a coin still on its bonding curve use get_bonding_curve instead. Pricing runs on the pool effective quote reserves (quote vault balance + pool.virtual_quote_reserves); the base side is the raw base vault balance. Returns amountOut, priceImpactBps, route, expiresAtMs, plus the reserves the quote was computed from so the number can be reproduced.

Input parameters:

- `amountIn` (number, required): Input amount in raw base units (lamports for SOL).
- `inputMint` (string, required): Input token mint (base58).
- `network` (string)
- `outputMint` (string, required): Output token mint (base58).
- `slippageBps` (number): Slippage tolerance in basis points (default 100 = 1%).

Output parameters:

- `amountOut` (string): Expected output amount in raw base units
- `base_reserve` (string): Raw base vault balance. Unchanged by the virtual-reserve rollout.
- `effective_quote_reserve` (string): quote_reserve + virtual_quote_reserves. This is what the quote is priced against.
- `expiresAtMs` (number): Epoch ms after which the quote is stale
- `priceImpactBps` (number): Price impact in basis points
- `quote_reserve` (string): Raw quote vault balance, before virtual reserves are added.
- `route` (string): AMM pool address the quote routes through (base58)
- `virtual_quote_reserves` (string): Pool.virtual_quote_reserves. Quote-side liquidity the pool carries outside its vault. 0 on non-launchpad pools.

### `social_x_post_impact` (~120 tokens)

X Post Price Impact

Correlate an X (Twitter) post to a memecoin price impact. Fetches post metadata via oEmbed (no API key) and computes price delta from the pump.fun bonding curve in a ±windowMin window around the post.

Input parameters:

- `mint` (string, required): Solana token mint address (base58)
- `network` (string)
- `postUrl` (string, required): X post URL (e.g. https://x.com/user/status/123)
- `windowMin` (integer): ±window in minutes around the post time

### `get_coin_intel` (~147 tokens)

Coin Intel

Full Coin Intelligence snapshot for a pump.fun mint. Returns every signal the engine recorded during the observation window: bundle vs organic verdict, bubblemaps-style cluster connectivity, smart-money presence (with wallet labels and win-rates), dev behaviour, category/classification, news-meme detection with the matching headline, risk flags, and a 0–100 quality score. Also returns the outcome if the coin is old enough to be labeled (graduated/rugged/ATH multiple). This is the single highest-signal read for a trade decision — call this before entering any position.

Input parameters:

- `mint` (string, required): Solana mint address (base58).
- `network` (string)

Output parameters:

- `bubblemap_connectivity` (number): 0–1 wallet-cluster share. null = enrichment not yet run.
- `bundle_score` (number): 0–1, coordinated-launch likelihood.
- `category` (string)
- `dev_buy_sol` (number)
- `dev_sold` (boolean)
- `found` (boolean)
- `is_news_meme` (boolean)
- `mint` (string)
- `name` (string)
- `news_headline` (string)
- `oracle` (object): Fused Oracle conviction score (null if the Oracle engine has not yet scored this coin). Call get_oracle_conviction for the full read including who's-in roster and narrative.
- `oracle_url` (string): Oracle deep-link for the coin — opens the Oracle war-room drawer directly.
- `organic_score` (number): 0–1, organic-demand likelihood.
- `outcome` (object): Labeled outcome if available (graduated, ath_multiple, etc).
- `quality_score` (number): 0–100 composite quality.
- `risk_flags` (array)
- `smart_money_count` (integer): Proven wallets (score≥65) in this coin.
- `smart_money_notable` (array)
- `smart_money_score` (number)
- `symbol` (string)
- `unique_buyers` (integer)
- `verdict` (object)

### `get_oracle_conviction` (~199 tokens)

Oracle Conviction

Oracle conviction score for a pump.fun mint: the fused 0-100 score the Oracle engine produces by combining four intelligence pillars: pedigree (who bought it), structure (organic vs bundle, holder concentration, bubblemaps connectivity), narrative (category, meme virality, news hook), and momentum (timing, velocity). Returns the tier (prime ≥86 / strong ≥72 / lean ≥54 / watch ≥36 / avoid), the per-pillar breakdown, the natural-language reasons that drove the score, the full "who's in" trader roster with reputation labels and win-rates, and the narrative read (category, virality, tags). Call this when you need the highest-confidence trade signal; it synthesises everything get_coin_intel exposes into one actionable score. Pairs with get_coin_intel for raw signals.

Input parameters:

- `mint` (string, required): Solana mint address (base58).
- `network` (string)

Output parameters:

- `conviction` (object): Fused conviction verdict. null if the Oracle has not yet scored this coin.
- `found` (boolean)
- `mint` (string)
- `name` (string)
- `narrative` (object): Narrative classification for the coin.
- `outcome` (object): Labeled outcome if available.
- `symbol` (string)
- `url` (string): Oracle deep-link URL for this coin.
- `whos_in` (array): Classified trader roster — every wallet that touched this coin, annotated with their reputation.

### `pumpfun_upload_metadata` (~234 tokens)

Upload Coin Metadata

Upload coin metadata (name, symbol, description, image) to IPFS and get back a pump.fun-ready metadata URI. Call this before launching a coin — pass the returned uri to the launch-agent endpoint or the studio launch flow. Requires a valid bearer token (API key). Image may be a public HTTPS URL or a base64 data URI (max 10 MB). The returned uri is a permanent ipfs:// link; the call is idempotent for the same content.

Input parameters:

- `description` (string, required): Coin description (max 500 chars).
- `image_url` (string, required): Image for the coin icon. Public HTTPS URL or base64 data URI (data:image/png;base64,…). Square image, at least 400×400 px, under 5 MB.
- `name` (string, required): Coin name (1–32 chars).
- `symbol` (string, required): Ticker symbol (1–10 chars, no $).
- `telegram` (string): Telegram URL (optional).
- `twitter` (string): Twitter/X handle or URL (optional).
- `website` (string): Website URL (optional).

Output parameters:

- `cid` (string): IPFS CID of the metadata JSON.
- `image_cid` (string): IPFS CID of the uploaded image.
- `provider` (string): IPFS provider used.
- `uri` (string): ipfs:// URI ready for the pump.fun launch-agent `uri` field.

### `pumpfun_bot_status` (~38 tokens)

Indexer Status

Returns the configuration and health status of the pump.fun indexer backend. Always available — does not require PUMPFUN_BOT_URL.

Output parameters:

- `configured` (boolean): true when PUMPFUN_BOT_URL is set on the server
- `error` (string): Failure reason when healthy is false
- `healthy` (boolean): true when the indexer answered the health ping
- `latencyMs` (number): Round-trip ms of the health ping (configured backends only)
- `message` (string): Human-readable note when the indexer is unconfigured

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp#diagnostics

## Score history

- 2026-08-03: 71
- 2026-08-02: 71
- 2026-08-01: 70
- 2026-07-31: 70
- 2026-07-30: 65
- 2026-07-29: 66
- 2026-07-28: 66
- 2026-07-27: 65
- 2026-07-26: 64

## Links

- Remote endpoint: https://three.ws/api/pump-fun-mcp
- Repository: https://github.com/nirholas/three.ws
- Website: https://three.ws/
- Changelog RSS feed: https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/nirholas-threews-pumpfun/api-pump-fun-mcp
