Skip to main content
Glama
sjohnewa

memecoin-spotter

by sjohnewa

memecoin-mcp

Read-only MCP server for spotting trending/new memecoin pools, scoring them against known rug patterns, and surfacing the wallets buying in early — across Solana, Base, Ethereum, and anything else GeckoTerminal covers. No API key, free tier. Nothing in this server can move funds or place a trade — it only reads public on-chain data.

Tools

Tool

What it does

get_trending_pools

currently-trending pools on one chain

get_new_pools

freshly-created pools — where new launches show up first

get_pool_risk

liquidity/age/volume stats + a transparent rug-risk score

get_pool_trades

recent individual trades on a pool, with wallet addresses

find_early_wallets

earliest unique buyer wallets in the returned trade window

Related MCP server: deepnets

Setup

npm install
npm run demo      # proves the pipeline live across solana/base/eth

Wire it into Claude Code

claude mcp add memecoin-spotter -- node "C:\Users\PC\Desktop\Research\memecoin-mcp\src\index.js"

or add by hand:

{
  "mcpServers": {
    "memecoin-spotter": {
      "command": "node",
      "args": ["C:\\Users\\PC\\Desktop\\Research\\memecoin-mcp\\src\\index.js"]
    }
  }
}

Unattended refresh (scheduled routine)

The dashboard's paper-trading section is now machine-regenerable: paper-trade.js marks/screens positions into paper-ledger.json, then build-dashboard.js rewrites the block between <!-- PAPER_TRADE_START --> and <!-- PAPER_TRADE_END --> in dashboard-demo.html from that ledger. That's the whole pipeline a scheduled routine needs to run.

Blocked on: this repo isn't on GitHub yet, and this machine has no gh CLI and no git credentials configured, so it can't be pushed from here unattended. To close the loop: install the GitHub CLI and run gh auth login once (interactive, one-time) — after that, push access and routine creation can happen from an agent session without further manual steps. The routine, once wired, would run roughly: npm ci && node paper-trade.js && node build-dashboard.js, then commit+push the updated ledger/dashboard, then republish the artifact at the URL pinned in the routine's own prompt.

Paper trading

node paper-trade.js

Simulated $10,000 bankroll, $250 per position, persisted to paper-ledger.json. Each run: marks every open position to its latest price, then screens get_new_pools across all three chains and opens a position in anything that doesn't get flagged "high" risk by computeRiskSignals. No real wallet, no key, no trade ever leaves this script. This is the actual test of the wallet- spotting/risk-screen work above: does avoiding the obviously-flagged pools beat just buying everything new?

This does not run on its own. The dashboard (dashboard-demo.html) bakes in the ledger state at publish time — it can't poll GeckoTerminal itself (published Artifacts can't fetch arbitrary external APIs, and the runtime's live-data bridge only reaches claude.ai connectors, not a local MCP server). To refresh: run paper-trade.js, then rebuild the dashboard's paper-trading section from the updated paper-ledger.json and republish. Currently done on request, not on a schedule — ask for a refresh, or ask to set up a recurring one if that's wanted later.

Real limitations, found while building this (read before trusting the output)

  • find_early_wallets is window-limited, not history-complete. The trades endpoint returns recent trades, not a full pool history. On a pool that's been trading for days at high volume, "earliest in the window" might mean "earliest in the last five minutes." It's only a true "since launch" signal on pools young enough that the window covers their whole life — which, conveniently, is also when spotting early wallets is most interesting.

  • Free-tier rate limits are real. The /trades endpoint 429'd repeatedly while building this. Space out calls; don't hammer it in a loop.

  • XBRL-style tag inconsistency has a crypto equivalent: token name squatting. While testing get_new_pools, five separate brand-new "billy"-named tokens showed up in the same 15-minute window, riding a trending name. Name/symbol alone is not identity — always check the pool address.

  • Being early is not being smart. The wallets in find_early_wallets are ranked by timestamp only. On the live example in the dashboard, eight wallets bought within the same two seconds — that's sniper bots racing a new pool, not considered conviction. Treat "early" as a fact to investigate, never as a signal to copy.

What this deliberately doesn't do

This was scoped as read-only on purpose. A "copy trading agent" that auto-executes real trades is a fundamentally different, much higher-risk build — it means holding a private key capable of moving funds, and memecoin copy-trading in particular tends to lose to latency (bots see a tracked wallet's buy before you can act on it) and to survivorship bias (a wallet that looks smart in hindsight was usually just early or an insider). If that's still wanted later, it deserves its own deliberate scoping conversation — paper-trading first, explicit capital limits, and key custody that never touches plaintext in a config file — not a bolt-on to this tool.

Available Tools

5 tools
find_early_walletsFind early wallets on a poolA

The earliest unique buyer wallets within the trade data the API returns, in chronological order. Most accurate on newly-created, lower-volume pools where the returned window covers most of the pool's history; on a high-volume pool that's been trading for days, 'earliest in window' may only mean 'earliest in the last few minutes,' not since launch. Chronology only — being early is not proof of skill or insider status, just a fact you can go investigate further.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNoHow many wallets to return (default 10)
minUsdNoIgnore buys smaller than this (default 100)
networkYesChain id, e.g. "solana", "base", "eth", "bsc", "arbitrum"
poolAddressYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It honestly explains that results are window-relative, not launch-relative, and warns against overinterpreting early entry as skill or insider status. It does not discuss rate limits, authentication, or exact return shape, but the key behavioral caveat is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long and front-loads the core behavior in the first sentence, followed by an important accuracy caveat and a short interpretive warning. Each sentence serves a purpose, though the third sentence is slightly interpretive rather than purely functional.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main limitation and intended use well, but because there is no output schema, an agent still has to infer the exact return format, such as whether it returns addresses alone or with additional metadata. For a fairly simple lookup tool this is workable, but it leaves some behavioral and return-shape details unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents topN, minUsd, network, and poolAddress with descriptions, giving roughly 75% coverage. The description adds contextual meaning to the output rather than to the parameters themselves, so it does not significantly improve parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's action and result: finding the earliest unique buyer wallets in chronological order from the returned trade data. It also distinguishes this from sibling tools like get_pool_trades or get_trending_pools by focusing on buyer wallets rather than trades or pool rankings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit context on when results are most meaningful, noting accuracy on newly-created, lower-volume pools and warning that high-volume pools may only reflect a recent window. It does not explicitly name alternative tools or state hard exclusion criteria, but the guidance is clear enough for an agent to decide when the tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_new_poolsGet newest poolsB

Freshly created token pools on one chain — where brand-new memecoin launches show up first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
networkYesChain id, e.g. "solana", "base", "eth", "bsc", "arbitrum"

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must disclose behavior. It conveys recency and chain scope, but says nothing about ordering, time window, returned fields, pagination, or the fact that results are limited to 20 items.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the core idea front-loaded; the memecoin clause adds color but costs little. It is appropriately sized even if the metaphor is slightly loose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter list tool, the description gives the core purpose and a hint of when to use it. But with no output schema and no annotations, the missing ordering and limit details leave an agent guessing about response behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, the description needed to clarify both parameters. It only gestures at the network parameter ('one chain') and says nothing about the limit parameter, leaving its meaning and optional behavior undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('freshly created token pools') and the key angle ('newest'), and frames it as a discovery surface for new memecoin launches. It doesn't explicitly name a sibling, but 'new' is enough to differentiate from get_trending_pools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the right use case — finding newest pool launches on a network — but doesn't state when to prefer it over get_trending_pools or get_pool_trades. There are no explicit exclusions or alternative conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pool_riskGet pool risk signalsA

Pull one pool's stats (liquidity, volume, age, buy/sell counts) and score it against known rug/risk patterns. Heuristic, not a prediction — read the flags, don't just trust the score.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesChain id, e.g. "solana", "base", "eth", "bsc", "arbitrum"
poolAddressYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the behavioral burden. It explicitly discloses that the scoring is 'Heuristic, not a prediction' and warns to 'read the flags, don't just trust the score,' which are genuinely useful behavioral caveats. It also lists the stats it pulls, though it does not explicitly confirm whether the call is read-only or describe side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the core behavior front-loaded and the important heuristic caveat immediately after. Every phrase adds information; there is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, yet the description covers the main return concepts (stats, score, flags), the heuristic caveat, and the single-pool scope. It does not detail the exact response shape or score scale, but for a two-parameter analytics tool this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents network, but poolAddress has no schema description. The phrase 'one pool's stats' adds meaning by clarifying that poolAddress identifies the pool being assessed. However, the description does not specify the expected address format or whether a pool ID/symbol might also be accepted, so it only partially compensates for the missing schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and object: 'Pull one pool's stats' and then says it scores that pool 'against known rug/risk patterns.' This clearly targets a single pool for risk assessment, which distinguishes it from siblings like get_trending_pools and get_pool_trades without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this when you need a risk/rug-pattern read on one specific pool. However, the description does not explicitly mention sibling tools or state when not to use this tool, so the agent must infer the selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pool_tradesGet recent trades on a poolA

Recent individual buy/sell trades on a pool, including the trader's wallet address.

ParametersJSON Schema
NameRequiredDescriptionDefault
minUsdNoOnly trades above this USD size (default 100)
networkYesChain id, e.g. "solana", "base", "eth", "bsc", "arbitrum"
poolAddressYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the full burden of behavioral disclosure. It tells the agent the data is trade-level, includes buy/sell direction and wallet addresses, but does not disclose limits, ordering, time window, pagination, or error behavior. This is adequate for a simple read-only tool but leaves important ambiguities around what 'recent' means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. It states the core behavior and the most relevant data point (wallet address) without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter read-only tool with no output schema, the description together with the input schema is reasonably complete. However, it lacks details about result limits, sorting, the meaning of 'recent' (time window), and the exact return format, which an agent would need for robust invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents network and minUsd with helpful descriptions, while poolAddress lacks a description. The description implicitly clarifies that poolAddress identifies the pool whose trades are returned, but adds no further parameter-level meaning. With roughly two-thirds schema coverage and a self-evident poolAddress, the description does not need to compensate heavily.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource ('a pool') and the specific kind of data returned ('individual buy/sell trades'), and adds the distinctive detail that the trader's wallet address is included. This distinguishes it from aggregate or summary-style pool tools. However, it does not explicitly differentiate from any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool's purpose implies it should be used when an agent needs recent individual trade records for a pool, but there is no explicit when/when-not guidance or mention of alternatives. No sibling tools are listed, and the description does not say when a different tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedfind_early_wallets
    • First observedget_new_pools
    • First observedget_pool_risk
    • First observedget_pool_trades
    • First observedget_trending_pools

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a clearly distinct purpose: discovery (trending/new pools), single-pool risk assessment, raw trade history, and wallet extraction. There is no meaningful overlap even between get_pool_trades and find_early_wallets, as the latter is a specific aggregation over the former.

Naming Consistency4/5

Four tools follow the predictable get_<object> pattern, but find_early_wallets breaks the convention by using 'find' instead of 'get.' This is a minor deviation and the overall naming remains readable and consistent.

Tool Count5/5

Five tools is an ideal size for a focused memecoin-spotting toolkit. Each tool serves a distinct step in the discovery-to-analysis workflow and none feel redundant or extraneous.

Completeness5/5

The toolset covers the full stated domain: discovering trending or freshly launched pools, checking risk, examining recent trades, and identifying early wallets. No obvious missing operation that would block a typical memecoin research workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Paid access to Solana DeFi risk intelligence — rug/honeypot scans, liquidity-pool analysis, and wash-trade-filtered pool rankings. Automatically settles micropayments in USDC via x402.
    10
    35
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides deep analysis of Solana tokens, their risks, and holder information.
    49
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sjohnewa/memecoin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server