<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Almandine Data</title>
    <description>The latest articles on DEV Community by Almandine Data (@almandinedata).</description>
    <link>https://dev.to/almandinedata</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4237504%2F76b098d6-fa65-4da0-85c8-141ed699ac57.jpg</url>
      <title>DEV Community: Almandine Data</title>
      <link>https://dev.to/almandinedata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/almandinedata"/>
    <language>en</language>
    <item>
      <title>Check the mint, not the ticker: rule-checking 65 Solana tokens</title>
      <dc:creator>Almandine Data</dc:creator>
      <pubDate>Tue, 10 Nov 2026 16:38:31 +0000</pubDate>
      <link>https://dev.to/almandinedata/check-the-mint-not-the-ticker-rule-checking-65-solana-tokens-2j4a</link>
      <guid>https://dev.to/almandinedata/check-the-mint-not-the-ticker-rule-checking-65-solana-tokens-2j4a</guid>
      <description>&lt;p&gt;DexScreener shows tickers, and tickers collide: 4 of the 65 Solana tokens we checked were called PUMP, and two had $0 liquidity. So we wrote a read-only checker on Apify that returns one row of rule checks per mint, from public DexScreener data and Solana account state.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule checks on public on-chain and DEX data, not predictions. Not financial advice. A WATCH or VALID_SETUP verdict doesn't mean a token is safe to buy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What we ran
&lt;/h2&gt;

&lt;p&gt;65 tokens: 34 from DexScreener keyword search, 12 from token profiles, 18 from paid boost lists, and 1 input mint. Results: 53 WATCH, 12 SKIP, 0 VALID_SETUP. 24 of the 65 had liquidity under 5% of market cap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the mint, not the ticker
&lt;/h2&gt;

&lt;p&gt;Four rows had the symbol PUMP. Two of them had $0 liquidity. Always pass the mint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"mints_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"mintAddresses"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reading one row
&lt;/h2&gt;

&lt;p&gt;For that mint, here is an excerpt of the &lt;code&gt;ruleChecks&lt;/code&gt; block from our run (6 of 8 rules shown):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"minLiquidityUsd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;      &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;24010739.72&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nl"&gt;"minVolume1hUsd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;       &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;436949.66&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2500&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nl"&gt;"mintAuthorityRevoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nl"&gt;"freezeAuthorityRevoked"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nl"&gt;"minLiquidityToMcapPct"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="nl"&gt;"maxTop10HoldersPct"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"pass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="nl"&gt;"limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;pass: null&lt;/code&gt; means "not checked", not "passed". That's the honest part: without your own RPC, holder rules are skipped, &lt;code&gt;autopsyScore&lt;/code&gt; is capped at 7.0, &lt;code&gt;confidence&lt;/code&gt; is &lt;code&gt;limited&lt;/code&gt;, and the verdict can't go above WATCH. Add &lt;code&gt;rpcUrl&lt;/code&gt; (a free Helius, QuickNode or Triton key is enough) to turn the holder rules on.&lt;/p&gt;

&lt;p&gt;The 1.14 above is an example of a rule failing (liquidity is 1.14% of market cap against a 5% floor). It isn't a call on the token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost and limits
&lt;/h2&gt;

&lt;p&gt;$2.50 per 1,000 rows. Read-only: no wallets, keys, trading or signing. No holder data unless you bring an RPC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apify.com/informed_almandine_vzb/solana-pumpfun-token-autopsy-scanner" rel="noopener noreferrer"&gt;https://apify.com/informed_almandine_vzb/solana-pumpfun-token-autopsy-scanner&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"mints_only"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nl"&gt;"mintAddresses"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Which of these rules would you change, and to what threshold?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule checks on public on-chain and DEX data, not predictions. Not financial advice. A WATCH or VALID_SETUP verdict doesn't mean a token is safe to buy.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>solana</category>
      <category>python</category>
      <category>blockchain</category>
      <category>cryptocurrency</category>
    </item>
  </channel>
</rss>
