three.ws pump.fun MCP
REMOTE · THREE.WS · SCANNED AUG 3
Free, read-only pump.fun and Solana token discovery and on-chain analysis tools, by three.ws.
Available components
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. How we score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (good).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 58% of tool parameters carry a description.Partial
- Structured output schemas are declared (53% of tools); any adoption earns full credit.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · three.ws
claude mcp add --transport http nirholas-threews-pumpfun https://three.ws/api/pump-fun-mcp
[mcp_servers.nirholas-threews-pumpfun] url = "https://three.ws/api/pump-fun-mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nirholas-threews-pumpfun": {
"type": "remote",
"url": "https://three.ws/api/pump-fun-mcp",
"enabled": true
}
}
} openclaw mcp add nirholas-threews-pumpfun --url https://three.ws/api/pump-fun-mcp --transport streamable-http
mcp_servers:
nirholas-threews-pumpfun:
url: "https://three.ws/api/pump-fun-mcp" {
"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.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 2 Aug 26 +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.
- 31 Jul 26 +5
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 −1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 +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.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 64
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://three.ws/api/pump-fun-mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=three.ws | CN=WR3,O=Google Trust Services,C=US | 7 Jul 2026 | 5 Oct 2026 | RSA 2048 | SHA256-RSA | 83aad5cd398d14990ac531b5c97a842e |
| SANs: three.ws, www.three.ws | ||||||
| CN=WR3,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a91568d63abc22861684aa4b5a |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
DNSSEC secure
Validation of three.ws. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ws. | present | 36454 | 8 | Verified |
| three.ws. | present | 62777 | 13 | Verified |
| three.ws. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | base-uri 'self'; object-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' blob: https://cdn.jsdelivr.net https://cdnjs.cloudflare.com https://unpkg.com https://esm.sh https://ajax.googleapis.com https://s3.tradingview.com https://platform.twitter.com https://3d-agent.vercel.app https://three.ws; worker-src 'self' blob:; frame-ancestors 'self' https://ibm.com https://*.ibm.com https://*.seismic.com; report-uri /api/client-errors |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | accelerometer=(), autoplay=(self), camera=(), display-capture=(), encrypted-media=(self), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), midi=(), payment=(self), serial=(), usb=(), xr-spatial-tracking=(self) |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://three.ws/api/pump-fun-mcp | Verified | 200 | |
| http (plaintext) | http://three.ws/api/pump-fun-mcp | HTTPS enforced | 301 | https://three.ws:443/api/pump-fun-mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_bonding_curve Bonding Curve ~167
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | — |
| network | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| complete | boolean | yes | true once the curve has graduated |
| graduationPercent | number | yes | 0–100 graduation progress |
| mint | string | yes | — |
| network | string | yes | — |
| solReserves | string | yes | Real quote reserves in SOL (4-decimal string). On-chain field: real_quote_reserves. |
| tokenReserves | string | yes | Real token reserves (raw base units) |
| virtualSolReserves | string | yes | 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 | yes | Virtual token reserves (raw base units) |
No examples provided.
get_coin_intel Coin Intel ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | Solana mint address (base58). |
| network | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | — |
| 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 | — | — |
No examples provided.
get_oracle_conviction Oracle Conviction ~199
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | Solana mint address (base58). |
| network | string | — | — |
| Name | Type | Req | Description |
|---|---|---|---|
| conviction | object | — | Fused conviction verdict. null if the Oracle has not yet scored this coin. |
| found | boolean | yes | — |
| 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. |
No examples provided.
get_token_details Token Details ~28
Full details for a specific pump.fun token by mint address.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | — |
No output schema declared.
No examples provided.
get_token_holders Token Holders ~43
Top holders of a token with concentration analysis (on-chain).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| mint | string | yes | — |
| network | string | — | — |
No output schema declared.
No examples provided.
get_token_trades Token Trades ~33
Recent buy/sell history for a token.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| mint | string | yes | — |
No output schema declared.
No examples provided.
kol_leaderboard KOL Leaderboard ~52
Top KOL traders ranked by P&L for a given time window. Returns wallet, pnlUsd, winRate, trades, rank.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| window | string | — | — |
No output schema declared.
No examples provided.
pumpfun_bot_status Indexer Status ~38
Returns the configuration and health status of the pump.fun indexer backend. Always available — does not require PUMPFUN_BOT_URL.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| configured | boolean | yes | true when PUMPFUN_BOT_URL is set on the server |
| error | string | — | Failure reason when healthy is false |
| healthy | boolean | yes | 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 |
No examples provided.
pumpfun_first_claims First Creator Fee Claims ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | — |
| sinceMinutes | integer | — | How far back to look for new claimers (minutes) |
No output schema declared.
No examples provided.
pumpfun_list_claims List Creator Fee Claims ~74
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.
| Name | Type | Req | Description |
|---|---|---|---|
| creator | string | yes | Creator wallet address (base58) |
| limit | integer | — | — |
| network | string | — | — |
No output schema declared.
No examples provided.
pumpfun_quote_swap Swap Quote (Read-Only) ~224
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amountIn | number | yes | Input amount in raw base units (lamports for SOL). |
| inputMint | string | yes | Input token mint (base58). |
| network | string | — | — |
| outputMint | string | yes | Output token mint (base58). |
| slippageBps | number | — | Slippage tolerance in basis points (default 100 = 1%). |
| Name | Type | Req | Description |
|---|---|---|---|
| amountOut | string | yes | 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 | yes | Epoch ms after which the quote is stale |
| priceImpactBps | number | yes | Price impact in basis points |
| quote_reserve | string | — | Raw quote vault balance, before virtual reserves are added. |
| route | string | yes | 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. |
No examples provided.
pumpfun_upload_metadata Upload Coin Metadata ~234
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.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | yes | Coin description (max 500 chars). |
| image_url | string | yes | 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 | yes | Coin name (1–32 chars). |
| symbol | string | yes | Ticker symbol (1–10 chars, no $). |
| telegram | string | — | Telegram URL (optional). |
| string | — | Twitter/X handle or URL (optional). | |
| website | string | — | Website URL (optional). |
| Name | Type | Req | Description |
|---|---|---|---|
| cid | string | yes | IPFS CID of the metadata JSON. |
| image_cid | string | — | IPFS CID of the uploaded image. |
| provider | string | — | IPFS provider used. |
| uri | string | yes | ipfs:// URI ready for the pump.fun launch-agent `uri` field. |
No examples provided.
pumpfun_vanity_mint Vanity Mint Keypair ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| caseSensitive | boolean | — | — |
| maxAttempts | integer | — | — |
| prefix | string | — | Desired address prefix (case-insensitive by default) |
| suffix | string | — | Desired address suffix (case-insensitive by default) |
| Name | Type | Req | Description |
|---|---|---|---|
| attempts | integer | yes | Keypairs ground before the match |
| ms | number | yes | Wall-clock grind time in milliseconds |
| publicKey | string | yes | Matched Solana address (base58) |
| secretKey | string | yes | Secret key (base58) — caller is sole custodian |
No examples provided.
pumpfun_watch_claims Watch Creator Fee Claims ~88
Return all pump.fun fee-claim events for a creator wallet within a look-back window (durationMs). Useful for batch collection after a delay.
| Name | Type | Req | Description |
|---|---|---|---|
| creator | string | yes | Creator wallet address (base58) |
| durationMs | number | — | Look-back window in ms (default 300000 = 5 min, max 1800000) |
| network | string | — | — |
No output schema declared.
No examples provided.
pumpfun_watch_whales Watch Whale Trades ~93
Collect whale trades on a pump.fun token for a short window (max 10 s). Returns all trades whose USD value meets minUsd.
| Name | Type | Req | Description |
|---|---|---|---|
| durationMs | number | — | Collection window in ms (default 5000, max 10000) |
| minUsd | number | — | Minimum trade value in USD (default 5000) |
| mint | string | yes | SPL mint pubkey (base58) |
No output schema declared.
No examples provided.
sns_resolve Resolve .sol Domain ~44
Resolve a .sol Solana Name Service domain to its owner wallet address.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | .sol domain name, e.g. "bonfida.sol" |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Owner wallet address (base58) |
| name | string | yes | The .sol domain that was resolved |
No examples provided.
sns_reverseLookup Reverse .sol Lookup ~38
Reverse-lookup a Solana wallet address to its primary .sol domain name.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Base58 Solana wallet address |
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | The wallet address that was looked up |
| name | string | yes | Primary .sol domain for the address |
No examples provided.
social_cashtag_sentiment Cashtag Sentiment ~71
Score social-post sentiment for a cashtag using a deterministic lexicon. Returns score (-1..1), positive/negative/neutral percentages, and example posts.
| Name | Type | Req | Description |
|---|---|---|---|
| posts | array | yes | Array of post objects. Each must have a text field; id, ts, and author are optional. |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | Number of posts scored |
| examples | object | yes | — |
| negPct | number | yes | Percentage of negative posts (0–100) |
| neuPct | number | yes | Percentage of neutral posts (0–100) |
| posPct | number | yes | Percentage of positive posts (0–100) |
| score | number | yes | Net sentiment, -1 (bearish) to 1 (bullish) |
No examples provided.
social_x_post_impact X Post Price Impact ~120
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.
| Name | Type | Req | Description |
|---|---|---|---|
| mint | string | yes | Solana token mint address (base58) |
| network | string | — | — |
| postUrl | string | yes | X post URL (e.g. https://x.com/user/status/123) |
| windowMin | integer | — | ±window in minutes around the post time |
No output schema declared.
No examples provided.