<?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: Neurobyteio. Agentrisk M2M</title>
    <description>The latest articles on DEV Community by Neurobyteio. Agentrisk M2M (@agentrisk_m2m).</description>
    <link>https://dev.to/agentrisk_m2m</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%2F4098494%2F82f29858-0ae5-4c78-ab22-c59210fc0607.png</url>
      <title>DEV Community: Neurobyteio. Agentrisk M2M</title>
      <link>https://dev.to/agentrisk_m2m</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentrisk_m2m"/>
    <language>en</language>
    <item>
      <title>AgentRisk: A Pay-Per-Call Risk Oracle for Autonomous Trading Agents</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Fri, 02 Oct 2026 08:38:06 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/agentrisk-a-pay-per-call-risk-oracle-for-autonomous-trading-agents-4390</link>
      <guid>https://dev.to/agentrisk_m2m/agentrisk-a-pay-per-call-risk-oracle-for-autonomous-trading-agents-4390</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;AI trading agents on Base are increasingly autonomous — they see a&lt;br&gt;
token, decide, and execute, often with no human in the loop. But&lt;br&gt;
"decide" usually means trusting whatever on-chain data the agent&lt;br&gt;
can scrape in the few hundred milliseconds it has before the trade&lt;br&gt;
window closes. That's a thin foundation for judgment: honeypot&lt;br&gt;
contracts, unlocked liquidity, rug-pull patterns — none of that is&lt;br&gt;
visible from a raw balance check.&lt;/p&gt;

&lt;p&gt;Most existing risk tools are built for humans: a dashboard, a&lt;br&gt;
search box, a subscription. None of that works for an agent that&lt;br&gt;
needs a machine-readable answer in one HTTP call, with no signup&lt;br&gt;
flow, no API key provisioning, no human clicking "I agree" anywhere&lt;br&gt;
in the loop.&lt;/p&gt;

&lt;p&gt;AgentRisk is built for that gap specifically — an m2m risk oracle,&lt;br&gt;
not a dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pay-per-call via x402.&lt;/strong&gt; No subscription, no key. An agent sends&lt;br&gt;
a request, gets a 402 Payment Required response, pays 0.15 USDC on&lt;br&gt;
Base, and the same request goes through. No account creation&lt;br&gt;
anywhere in the flow — which matters when the caller is a bot, not&lt;br&gt;
a person who can fill out a signup form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-referenced signal, not a single source.&lt;/strong&gt; Every scan&lt;br&gt;
combines GoPlus token-security data with independent on-chain&lt;br&gt;
checks — LP lock status, holder concentration, sell simulation&lt;br&gt;
against the live pool. A token can look clean on one source and&lt;br&gt;
show a blocked sell path on the other; AgentRisk surfaces both&lt;br&gt;
rather than picking one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signed, cacheable verdicts.&lt;/strong&gt; Every response can carry a signed&lt;br&gt;
attestation: risk score, scan id, rulepack hash, policy version,&lt;br&gt;
input digest, chain, timestamp. This came directly from a&lt;br&gt;
conversation with another agent builder (@AxiomBot / Protean&lt;br&gt;
Labs) who pointed out that agents calling this at scale need to&lt;br&gt;
&lt;em&gt;cache&lt;/em&gt; a verdict and trust it without re-querying — the receipt is&lt;br&gt;
what makes that safe. An agent can verify the signature offline,&lt;br&gt;
check the timestamp isn't stale, and skip the network call entirely&lt;br&gt;
on a cache hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machine-readable failure states.&lt;/strong&gt; A signature check doesn't just&lt;br&gt;
return "invalid" — it distinguishes &lt;code&gt;expired&lt;/code&gt;, &lt;code&gt;revoked&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;replayed&lt;/code&gt;, and &lt;code&gt;unsigned&lt;/code&gt;, so a calling agent can decide&lt;br&gt;
programmatically whether to retry, re-scan, or hard-fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration surface
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;REST endpoint&lt;/strong&gt; — &lt;code&gt;POST /scan&lt;/code&gt; with a contract address, x402
payment header, get back structured JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt; — for agents built on Claude/MCP-compatible
stacks, risk scoring is exposed as a tool call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A Agent Card&lt;/strong&gt; — so other agents can discover the service
and its capabilities without hardcoded integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it stands
&lt;/h2&gt;

&lt;p&gt;The service has been live on Base Mainnet for a few months. It's&lt;br&gt;
listed in a couple of community agent-tooling directories&lt;br&gt;
(&lt;code&gt;awesome-a2a&lt;/code&gt; among them) and has processed real scans end to end,&lt;br&gt;
including real x402 payments settling on-chain.&lt;/p&gt;

&lt;p&gt;It's early — real usage is still small, and that's a plain&lt;br&gt;
statement, not a hedge. If you're building an agent that trades&lt;br&gt;
autonomously on Base and want pre-trade risk data without wiring up&lt;br&gt;
your own token-security pipeline, the endpoint is open:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;agentrisk.dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Feedback — especially from anyone building m2m agent infrastructure&lt;br&gt;
— is genuinely welcome. The attestation spec above exists because&lt;br&gt;
someone in a Twitter thread asked a sharp question about staleness&lt;br&gt;
and caching; more of that kind of pressure-testing is exactly what&lt;br&gt;
this needs right now.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>web3</category>
      <category>webdev</category>
      <category>agents</category>
    </item>
    <item>
      <title>MiniAppShield: Building Infrastructure Intelligence for Telegram Mini Apps</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Thu, 01 Oct 2026 11:17:57 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/miniappshield-building-infrastructure-intelligence-for-telegram-mini-apps-16cp</link>
      <guid>https://dev.to/agentrisk_m2m/miniappshield-building-infrastructure-intelligence-for-telegram-mini-apps-16cp</guid>
      <description>&lt;p&gt;The Hidden Layer Behind Telegram's Mini App Explosion&lt;br&gt;
Telegram Mini Apps have transformed the messenger from a communication tool into a full commercial platform. The numbers tell a story of explosive growth: Mini Apps grew from 2,388 to 8,923 between January and October 2025, while the number of bots surged from 9,297 to 58,482 . Rewarded ads now generate eCPMs of $12-35 in hypercasual games, with completion rates reaching 70-90% .&lt;/p&gt;

&lt;p&gt;But beneath this growth lies a structural problem that ad networks and advertisers are only beginning to understand: the infrastructure layer of Telegram Mini Apps is largely invisible.&lt;/p&gt;

&lt;p&gt;What Ad Networks Currently See&lt;br&gt;
PropellerAds, RichAds, AdsGram, and Monetag have all built sophisticated anti-fraud systems. They detect bots, filter invalid traffic, score publishers, and monitor behavioral anomalies. PropellerAds explicitly states that Mini App advertising may be less exposed to traditional fraud because "ads are shown during real in-app activity rather than through channel inventory that can be artificially padded" .&lt;/p&gt;

&lt;p&gt;RichAds has developed TMA-specific targeting, including options for "Telegram Premium subscribers only" and "users with positive TON wallet balance" . AdsGram advertises multi-layer anti-fraud against bots and dishonest impressions.&lt;/p&gt;

&lt;p&gt;These systems work inside the advertising transaction. They answer: Is this impression valid? Is this click real? Is this user human?&lt;/p&gt;

&lt;p&gt;What they do not answer is a different question: What is this Mini App? What infrastructure stands behind it? How has it changed over time? Is it related to previously observed risky publishers?&lt;/p&gt;

&lt;p&gt;The Infrastructure Intelligence Gap&lt;br&gt;
This is where MiniAppShield operates. Not as a competitor to ad network anti-fraud, but as an adjacent layer that observes the Mini App ecosystem at a structural level.&lt;/p&gt;

&lt;p&gt;Consider what our Observatory has already discovered:&lt;/p&gt;

&lt;p&gt;A complete K6 cluster: Six Telegram Mini Apps, each connected to every other through shared application-specific JavaScript hashes and API endpoints. Fifteen out of fifteen possible pairs. Sixteen shared JS artifacts and fourteen shared API endpoints per pair.&lt;/p&gt;

&lt;p&gt;A GPT-focused K4 cluster: Four AI-related Mini Apps with thirty-nine shared JS artifacts per pair.&lt;/p&gt;

&lt;p&gt;Two separate VPN triangles: Six VPN-related Mini Apps forming two independent infrastructure clusters.&lt;/p&gt;

&lt;p&gt;These are not coincidences. They are technical fingerprints that reveal shared infrastructure behind different Telegram identities.&lt;/p&gt;

&lt;p&gt;Why This Matters for Ad Networks&lt;br&gt;
PropellerAds' own reporting acknowledges that fraud in Telegram has historically involved "fake channel metrics, cloned administrators selling ad placements, and bot-inflated audiences" . The company argues Mini Apps are less vulnerable because ads are served during real activity.&lt;/p&gt;

&lt;p&gt;This is partially true. But it misses a critical scenario:&lt;/p&gt;

&lt;p&gt;A banned Mini App can return under a new Telegram identity while maintaining the same backend infrastructure.&lt;/p&gt;

&lt;p&gt;For an ad network, a new bot ID looks like a new publisher. For MiniAppShield, it looks like a reincarnation—the same domain family, same JS hashes, same API endpoints, same CDN buckets, same analytics IDs.&lt;/p&gt;

&lt;p&gt;The network sees a new source. We see continuity with a previously observed risk.&lt;/p&gt;

&lt;p&gt;The Time-Based Moat&lt;br&gt;
Scanning Mini Apps can be replicated. Anyone can build a crawler and capture runtime data.&lt;/p&gt;

&lt;p&gt;What cannot be replicated retroactively is historical infrastructure intelligence.&lt;/p&gt;

&lt;p&gt;MiniAppShield currently tracks:&lt;/p&gt;

&lt;p&gt;650+ Telegram Mini Apps&lt;/p&gt;

&lt;p&gt;1,100+ historical snapshots&lt;/p&gt;

&lt;p&gt;55+ exact technical relationships&lt;/p&gt;

&lt;p&gt;Every relationship has an observation_count. Currently, most are at 1—a single observation. But as monitoring continues, these counts grow. A relationship observed across 6 snapshots over 3 weeks becomes something fundamentally different from a one-time detection.&lt;/p&gt;

&lt;p&gt;This enables signal types that do not exist elsewhere:&lt;/p&gt;

&lt;p&gt;Publisher Reincarnation Detection: Identifying when a previously banned Mini App returns under a new Telegram identity through shared infrastructure artifacts.&lt;/p&gt;

&lt;p&gt;Monetization Drift: Detecting when a Mini App that previously served no ads suddenly integrates an ad SDK, adds rewarded video endpoints, or introduces external redirectors—signaling a pivot toward aggressive monetization.&lt;/p&gt;

&lt;p&gt;Infrastructure Relationship Graph: Mapping hidden connections between seemingly unrelated Mini Apps, revealing clusters that operate as coordinated entities.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>ads</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Beyond the Username: Analyzing Telegram Mini Apps with MiniAppShield</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Wed, 30 Sep 2026 13:14:44 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/beyond-the-username-analyzing-telegram-mini-apps-with-miniappshield-24eo</link>
      <guid>https://dev.to/agentrisk_m2m/beyond-the-username-analyzing-telegram-mini-apps-with-miniappshield-24eo</guid>
      <description>&lt;p&gt;A Telegram Mini App can look like an independent product while sharing its frontend, backend, and advertising infrastructure with other apps.&lt;/p&gt;

&lt;p&gt;For advertisers, developers, and security researchers, those connections matter. But they are difficult to spot from a Telegram username or a few screenshots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MiniAppShield&lt;/strong&gt; is a Telegram Mini App intelligence platform that combines runtime analysis, advertising technology detection, technical relationships, and historical observations into one &lt;strong&gt;Full Audit&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is a real example of what that analysis can reveal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Mini Apps, one technical cluster
&lt;/h2&gt;

&lt;p&gt;During our research, MiniAppShield identified exact technical relationships between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@aqptuuybot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@fpngoobot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@xoimqrbot&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@gretaxrobot&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The applications shared:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Evidence&lt;/th&gt;
&lt;th&gt;Finding&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Launch destination&lt;/td&gt;
&lt;td&gt;The same launch URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend code&lt;/td&gt;
&lt;td&gt;16 shared app-specific JavaScript fingerprints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend surface&lt;/td&gt;
&lt;td&gt;14 shared API endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime behavior&lt;/td&gt;
&lt;td&gt;Very similar runtime profiles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical relationships&lt;/td&gt;
&lt;td&gt;All 6 possible pairs matched&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These findings establish shared technical infrastructure. They do not prove common ownership or fraudulent activity.&lt;/p&gt;

&lt;p&gt;For someone evaluating advertising placements, that distinction is valuable: four different usernames may represent substantially overlapping technical products.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MiniAppShield examines
&lt;/h2&gt;

&lt;p&gt;A username starts the investigation. The Full Audit brings together several evidence layers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Identity and launch destination:&lt;/strong&gt; Is this a Telegram Mini App or an ordinary bot? Where does the application load?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Browser runtime:&lt;/strong&gt; What network requests, JavaScript assets, API activity, storage indicators, and rendered content appear during execution?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Runtime quality:&lt;/strong&gt; Were navigation errors, failed requests, HTTP errors, or page-level exceptions observed?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advertising technology:&lt;/strong&gt; Which advertising components, SDK configurations, and execution signals were captured?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical relationships:&lt;/strong&gt; Does the app share distinctive artifacts with other applications?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;History:&lt;/strong&gt; What changed between observations?&lt;/p&gt;

&lt;p&gt;Users receive a summary in Telegram and can open a detailed browser report to inspect the supporting evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript fingerprints and API endpoints
&lt;/h2&gt;

&lt;p&gt;JavaScript fingerprinting helps identify matching code across applications. A content hash supports an exact match for a captured JavaScript asset.&lt;/p&gt;

&lt;p&gt;However, shared public libraries are common. Two apps using the same framework do not necessarily have a meaningful relationship.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App-specific code is more informative&lt;/strong&gt;, especially when multiple fingerprints match alongside API endpoints and launch destinations.&lt;/p&gt;

&lt;p&gt;That combination made our four-app cluster interesting. It was more than a shared analytics script: it included 16 application-specific JavaScript fingerprints and 14 API endpoints.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advertising SDK detection versus ad execution
&lt;/h2&gt;

&lt;p&gt;For Telegram advertisers and ad networks, detecting advertising technology is useful—but the evidence needs precise interpretation.&lt;/p&gt;

&lt;p&gt;An SDK reference, a configuration response, an ad request, and an impression event represent different stages.&lt;/p&gt;

&lt;p&gt;An SDK may load without requesting an ad. A request may return no fill. A tracking reference alone does not establish a completed impression.&lt;/p&gt;

&lt;p&gt;MiniAppShield separates &lt;strong&gt;observed advertising infrastructure&lt;/strong&gt; from &lt;strong&gt;observed advertising execution&lt;/strong&gt;, helping reviewers understand what the captured session actually shows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Runtime errors need context
&lt;/h2&gt;

&lt;p&gt;A failed image and a failed authentication request can both increase an error counter. Their impact on the application is very different.&lt;/p&gt;

&lt;p&gt;Useful runtime analysis asks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which resource failed?&lt;/li&gt;
&lt;li&gt;Was it part of a core user flow?&lt;/li&gt;
&lt;li&gt;Did the application initialize successfully?&lt;/li&gt;
&lt;li&gt;Did the problem repeat?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similarly, an HTTP 403 response to an automated scanner does not establish that regular Telegram users encounter the same restriction.&lt;/p&gt;

&lt;p&gt;The goal is to connect technical observations to practical consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why historical evidence matters
&lt;/h2&gt;

&lt;p&gt;A single scan captures one session. Historical comparisons help reveal destination changes, advertising stack changes, repeated failures, and newly observed infrastructure relationships.&lt;/p&gt;

&lt;p&gt;As the database grows, new Mini Apps can be compared with previously captured JavaScript fingerprints and API surfaces.&lt;/p&gt;

&lt;p&gt;This supports &lt;strong&gt;Telegram Mini App due diligence&lt;/strong&gt;, publisher review, portfolio analysis, and security research.&lt;/p&gt;

&lt;p&gt;The central question becomes:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is this Mini App technically connected to, and where have we seen these artifacts before?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore MiniAppShield
&lt;/h2&gt;

&lt;p&gt;MiniAppShield brings together Telegram Mini App analysis, JavaScript fingerprinting, advertising intelligence, runtime inspection, and infrastructure relationship detection.&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://appshield.app/" rel="noopener noreferrer"&gt;https://appshield.app/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which evidence matters most to you when evaluating a Mini App: advertising activity, runtime reliability, or shared infrastructure?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>analytics</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>How to Audit a Telegram Mini App Before Running Ads</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Sat, 26 Sep 2026 11:13:23 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/how-to-audit-a-telegram-mini-app-before-running-ads-4lof</link>
      <guid>https://dev.to/agentrisk_m2m/how-to-audit-a-telegram-mini-app-before-running-ads-4lof</guid>
      <description>&lt;p&gt;How to Audit a Telegram Mini App Before Running Ads&lt;br&gt;
Telegram Mini Apps have become a real distribution layer for games, Web3 products, wallets, utilities, e-commerce experiences, loyalty systems, advertising funnels, and many other services.&lt;br&gt;
But for advertisers, agencies, ad networks, traffic partners, and ecosystem operators, one problem remains:&lt;br&gt;
What do you actually know about a Mini App before sending traffic or budget to it?&lt;br&gt;
A Telegram username and a landing page are not enough.&lt;br&gt;
A Mini App may look completely normal while still having technical characteristics that matter commercially:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;its destination URL may have changed&lt;/li&gt;
&lt;li&gt;its backend infrastructure may have changed&lt;/li&gt;
&lt;li&gt;advertising SDKs may have been added or removed&lt;/li&gt;
&lt;li&gt;runtime behavior may differ from what was observed previously&lt;/li&gt;
&lt;li&gt;multiple Mini Apps may share exact technical artifacts&lt;/li&gt;
&lt;li&gt;multiple apps may use the same observed advertising identity&lt;/li&gt;
&lt;li&gt;a Mini App may technically load while showing degraded runtime behavior&lt;/li&gt;
&lt;li&gt;advertising infrastructure may exist even when active ad delivery is not observed in a particular session
This is the problem we are working on with MiniAppShield.
MiniAppShield is a Telegram Mini App intelligence and audit system designed to turn technical observations into evidence that can be reviewed before commercial decisions are made.
Why Telegram Mini App due diligence is difficult
Traditional website checks are not enough for Telegram Mini Apps.
The application often depends on several layers at once:&lt;/li&gt;
&lt;li&gt;Telegram bot metadata&lt;/li&gt;
&lt;li&gt;Telegram Mini App launch configuration&lt;/li&gt;
&lt;li&gt;WebView destination&lt;/li&gt;
&lt;li&gt;frontend application&lt;/li&gt;
&lt;li&gt;backend APIs&lt;/li&gt;
&lt;li&gt;third-party SDKs&lt;/li&gt;
&lt;li&gt;analytics systems&lt;/li&gt;
&lt;li&gt;advertising infrastructure&lt;/li&gt;
&lt;li&gt;wallet or blockchain integrations&lt;/li&gt;
&lt;li&gt;runtime behavior
A static URL check only covers a fraction of this.
For example, discovering an advertising SDK in JavaScript does not prove that an advertisement was actually delivered.
Likewise:
SDK detected ≠ ad execution
ad request ≠ impression
technical relationship ≠ common ownership
absence of observed advertising ≠ advertising is never present
These distinctions are important if the output is supposed to be used for real due diligence.
What MiniAppShield analyzes
Our current Full Audit pipeline combines multiple independent intelligence layers.&lt;/li&gt;
&lt;li&gt;Identity and relationships
MiniAppShield looks for exact observed relationships between Mini Apps.
These can include:&lt;/li&gt;
&lt;li&gt;shared advertising identity signals&lt;/li&gt;
&lt;li&gt;shared technical artifacts&lt;/li&gt;
&lt;li&gt;infrastructure relationships&lt;/li&gt;
&lt;li&gt;application-specific fingerprints&lt;/li&gt;
&lt;li&gt;connected Mini App clusters
The goal is not to make unsupported claims such as "these apps have the same owner."
Instead, we preserve the evidence and describe the relationship that was actually observed.
For example:
Exact technical relationship observed through a shared application-specific artifact.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That statement is much stronger and more defensible than guessing who operates the applications.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Activity and liveness
A Mini App can exist in a catalog or Telegram while being partially broken, inactive, inaccessible, or operational only under certain conditions.
MiniAppShield therefore examines runtime evidence such as:&lt;/li&gt;
&lt;li&gt;HTTP response state&lt;/li&gt;
&lt;li&gt;rendered application content&lt;/li&gt;
&lt;li&gt;DOM activity&lt;/li&gt;
&lt;li&gt;Telegram WebView bridge activity&lt;/li&gt;
&lt;li&gt;network requests&lt;/li&gt;
&lt;li&gt;interactive surfaces&lt;/li&gt;
&lt;li&gt;runtime failures&lt;/li&gt;
&lt;li&gt;page-level errors&lt;/li&gt;
&lt;li&gt;console errors&lt;/li&gt;
&lt;li&gt;server errors
This gives a more useful question than simply:
Does the URL exist?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The real question is:&lt;br&gt;
Was meaningful Mini App runtime activity observed during the audit?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Runtime quality
Operational status is tracked independently from security or commercial interpretation.
Examples of runtime diagnostics include:&lt;/li&gt;
&lt;li&gt;failed network requests&lt;/li&gt;
&lt;li&gt;HTTP 4xx responses&lt;/li&gt;
&lt;li&gt;HTTP 5xx responses&lt;/li&gt;
&lt;li&gt;navigation failures&lt;/li&gt;
&lt;li&gt;JavaScript page errors&lt;/li&gt;
&lt;li&gt;console errors&lt;/li&gt;
&lt;li&gt;total observed requests&lt;/li&gt;
&lt;li&gt;runtime coverage
A degraded runtime observation does not automatically mean the application is malicious.
It simply means that technical instability was observed during that audit.&lt;/li&gt;
&lt;li&gt;Advertising intelligence
Advertising inside Telegram Mini Apps is particularly interesting because static detection is not enough.
MiniAppShield separates several levels of evidence.
Advertising technology observed
An ad SDK, script, configuration, or advertising endpoint may be present.
Advertising execution observed
The application actually performs advertising-related runtime activity.
Creative delivery observed
Evidence associated with an advertising creative is observed.
Impression-related evidence observed
Runtime evidence indicates a later stage of the advertising lifecycle.
This prevents one of the most common analytical mistakes:
detecting an advertising library and immediately claiming that the Mini App is actively serving ads.&lt;/li&gt;
&lt;li&gt;Network and infrastructure intelligence
During runtime observation, MiniAppShield records structural network information such as:&lt;/li&gt;
&lt;li&gt;contacted domains&lt;/li&gt;
&lt;li&gt;application endpoints&lt;/li&gt;
&lt;li&gt;third-party services&lt;/li&gt;
&lt;li&gt;advertising endpoints&lt;/li&gt;
&lt;li&gt;analytics infrastructure&lt;/li&gt;
&lt;li&gt;JavaScript assets&lt;/li&gt;
&lt;li&gt;technical artifacts
These observations can later become useful when comparing applications.
A single domain may not mean much.
But the same specific technical artifact appearing across several otherwise unrelated Mini Apps may be much more interesting.&lt;/li&gt;
&lt;li&gt;Change intelligence
One scan tells you what happened once.
A historical dataset tells you what changed.
This is one of the most important parts of the MiniAppShield direction.
Repeated observations can reveal:&lt;/li&gt;
&lt;li&gt;destination changes&lt;/li&gt;
&lt;li&gt;infrastructure changes&lt;/li&gt;
&lt;li&gt;SDK changes&lt;/li&gt;
&lt;li&gt;advertising stack changes&lt;/li&gt;
&lt;li&gt;technical relationship changes&lt;/li&gt;
&lt;li&gt;audience metadata changes&lt;/li&gt;
&lt;li&gt;runtime behavior changes
This turns a scanner into an observatory.
For commercial due diligence, history is often more valuable than a single point-in-time verdict.&lt;/li&gt;
&lt;li&gt;Telegram audience intelligence
Where Telegram exposes audience information, MiniAppShield can preserve observations such as monthly active user metadata.
But audience numbers are treated separately from traffic quality.
For example:
100,000 monthly active users&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;does not automatically mean:&lt;br&gt;
100,000 high-quality advertising users.&lt;/p&gt;

&lt;p&gt;Audience size, audience authenticity, conversion quality, and advertising performance are different questions.&lt;br&gt;
A practical Mini App audit workflow&lt;br&gt;
A useful pre-flight workflow can look like this:&lt;br&gt;
Step 1 — Identify the exact Telegram source&lt;br&gt;
Start from the Telegram username rather than a manually supplied external website.&lt;br&gt;
This reduces ambiguity about which Mini App is actually being analyzed.&lt;br&gt;
Step 2 — Resolve the Mini App launch destination&lt;br&gt;
Observe the Main WebView or other legitimate application route.&lt;br&gt;
Step 3 — Perform static and structural analysis&lt;br&gt;
Collect technical characteristics without making conclusions from a single indicator.&lt;br&gt;
Step 4 — Observe the application runtime&lt;br&gt;
Launch the application in a controlled environment and observe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;initialization&lt;/li&gt;
&lt;li&gt;network activity&lt;/li&gt;
&lt;li&gt;Telegram bridge behavior&lt;/li&gt;
&lt;li&gt;runtime errors&lt;/li&gt;
&lt;li&gt;third-party integrations&lt;/li&gt;
&lt;li&gt;advertising execution
Step 5 — Compare against historical observations
Ask:&lt;/li&gt;
&lt;li&gt;Has the destination changed?&lt;/li&gt;
&lt;li&gt;Has the advertising stack changed?&lt;/li&gt;
&lt;li&gt;Have new domains appeared?&lt;/li&gt;
&lt;li&gt;Have important technical artifacts changed?
Step 6 — Compare against other Mini Apps
Look for exact observed technical or advertising relationships.
Step 7 — Present evidence, not a magic score
A single "risk score" can hide too much context.
MiniAppShield instead separates independent layers such as:&lt;/li&gt;
&lt;li&gt;identity and relationships&lt;/li&gt;
&lt;li&gt;activity and liveness&lt;/li&gt;
&lt;li&gt;runtime quality&lt;/li&gt;
&lt;li&gt;advertising activity&lt;/li&gt;
&lt;li&gt;change intelligence&lt;/li&gt;
&lt;li&gt;observation depth&lt;/li&gt;
&lt;li&gt;audience intelligence
This makes the result easier to explain and review.
What MiniAppShield is becoming
MiniAppShield started as a Mini App scanner.
The larger direction is different.
We are building a growing Telegram Mini App Observatory.
The process includes:&lt;/li&gt;
&lt;li&gt;discovering Mini Apps from multiple public sources&lt;/li&gt;
&lt;li&gt;removing bots, aliases, duplicates, and weak candidates&lt;/li&gt;
&lt;li&gt;validating actual Mini App runtime&lt;/li&gt;
&lt;li&gt;preserving structured technical observations&lt;/li&gt;
&lt;li&gt;identifying exact relationships&lt;/li&gt;
&lt;li&gt;monitoring applications over time
We already have hundreds of confirmed Telegram Mini Apps in the dataset, with additional candidates going through discovery and validation.
The goal is not simply to collect the largest possible list of usernames.
The goal is to build a clean, deeply analyzed, historical intelligence dataset for Telegram Mini Apps.
Who can use this type of intelligence?
Potential users include:
Advertising networks
Before accepting a new traffic source or Mini App partner, a network can inspect its technical and advertising context.
Performance marketing agencies
Agencies buying Telegram traffic can perform technical due diligence before committing campaign budget.
Advertisers
An advertiser can review the environment where campaigns may appear.
Security teams
Security analysts can investigate runtime behavior, infrastructure, and application relationships.
Wallet and Web3 teams
Telegram has become an important distribution channel for crypto, gaming, TON, and wallet-related products.
Runtime and infrastructure intelligence can provide additional context around applications interacting with these ecosystems.
Investors and due-diligence teams
Historical technical observations can complement product, financial, and legal due diligence.
Why historical intelligence matters
Imagine evaluating a Mini App today.
Everything looks normal.
But historical observations show that:&lt;/li&gt;
&lt;li&gt;its WebView destination changed three times&lt;/li&gt;
&lt;li&gt;a new advertising integration appeared two weeks ago&lt;/li&gt;
&lt;li&gt;the backend domain changed recently&lt;/li&gt;
&lt;li&gt;an exact technical artifact also appears in several other Mini Apps&lt;/li&gt;
&lt;li&gt;the runtime behavior changed after the previous observation
None of those facts independently proves wrongdoing.
But together they provide context that a one-time website inspection cannot provide.
That is the real value of continuous Mini App intelligence.
MiniAppShield
MiniAppShield is being developed as an independent intelligence layer for the Telegram Mini App ecosystem.
The current platform focuses on:&lt;/li&gt;
&lt;li&gt;Telegram Mini App audit&lt;/li&gt;
&lt;li&gt;runtime analysis&lt;/li&gt;
&lt;li&gt;advertising intelligence&lt;/li&gt;
&lt;li&gt;infrastructure analysis&lt;/li&gt;
&lt;li&gt;technical relationships&lt;/li&gt;
&lt;li&gt;historical monitoring&lt;/li&gt;
&lt;li&gt;change intelligence&lt;/li&gt;
&lt;li&gt;Telegram audience observations&lt;/li&gt;
&lt;li&gt;Mini App discovery
You can follow the project at:
Website: &lt;a href="https://appshield.app/" rel="noopener noreferrer"&gt;https://appshield.app/&lt;/a&gt;
Telegram: @MiniAppShield
Telegram Bot: @MiniAppShield_bot&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>web3</category>
      <category>security</category>
      <category>ads</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building a Pre-Trade Token Safety API for AI Trading Agents on Base — Lessons from Shipping x402 Bazaar Discovery</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Fri, 25 Sep 2026 06:53:22 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/building-a-pre-trade-token-safety-api-for-ai-trading-agents-on-base-lessons-from-shipping-x402-3967</link>
      <guid>https://dev.to/agentrisk_m2m/building-a-pre-trade-token-safety-api-for-ai-trading-agents-on-base-lessons-from-shipping-x402-3967</guid>
      <description>&lt;p&gt;AgentRisk M2M is a pre-trade token risk and honeypot detection API built for autonomous AI trading agents operating on Base. Every AI agent that trades ERC-20 tokens faces the same problem before executing a swap: is this contract a honeypot, a rug pull, or a legitimate token? Doing that check reliably — not just reading a static score, but verifying a token is actually sellable — turns out to be harder than it looks.&lt;/p&gt;

&lt;p&gt;The core problem: static safety scores aren't enough&lt;/p&gt;

&lt;p&gt;Most token safety checkers return a single boolean or score based on static bytecode analysis. That catches obvious red flags — mint functions, blacklist functions, ownership that was never renounced — but it misses a critical class of scams: contracts that look clean statically but block sells dynamically, through logic that only triggers under specific conditions.&lt;/p&gt;

&lt;p&gt;AgentRisk M2M's core differentiator is live sell simulation — instead of trusting a static flag, it actually simulates a sell against the live pool state on-chain, across Uniswap V2, V3, V4, and Aerodrome (both V1 and Slipstream). If the simulated sell reverts, the token is flagged as a honeypot regardless of what the static analysis says.&lt;/p&gt;

&lt;p&gt;What the API checks&lt;br&gt;
Honeypot detection (via live sell simulation + GoPlus Security cross-reference)&lt;br&gt;
Buy/sell tax percentage, including hidden tax flags&lt;br&gt;
Ownership: renounced status, hidden owner detection, "can take back ownership" flag&lt;br&gt;
Mint, blacklist, whitelist, pause, and self-destruct function presence&lt;br&gt;
LP lock/burn status and percentage&lt;br&gt;
Holder concentration (top-10 holder %, creator %)&lt;br&gt;
Deployer wallet reputation and freshness&lt;br&gt;
Brand impersonation detection&lt;br&gt;
Exit Liquidity Score — simulated price impact at $100/$1k/$10k sell sizes&lt;/p&gt;

&lt;p&gt;The output is a machine-readable riskScore (0–100), a riskLevel (SAFE / CAUTION / HIGH_RISK / CRITICAL_HONEYPOT), and a shouldExecute boolean an agent can act on directly — no natural-language parsing required.&lt;/p&gt;

&lt;p&gt;Payment: x402, not API keys&lt;/p&gt;

&lt;p&gt;AgentRisk uses the x402 protocol for pay-per-call access — 0.15 USDC per scan on Base, settled directly on-chain. No signup, no API key management, no rate-limit tiers. An agent's wallet signs a payment authorization, the facilitator (Coinbase CDP) verifies and settles it, and the scan result comes back in the same request. A free trial (3 scans per wallet) is available via /scan-trial for testing before committing to paid calls.&lt;/p&gt;

&lt;p&gt;This matters specifically for autonomous agents: there's no human in the loop to manage credentials. The agent's wallet is the identity.&lt;/p&gt;

&lt;p&gt;Discovery: what actually makes an agent find your API&lt;/p&gt;

&lt;p&gt;Here's the part most people skip when writing about x402: shipping an API that accepts x402 payments is not the same as being discoverable by autonomous agents. That requires implementing the x402 Bazaar discovery extension correctly — declaring input/output schemas in your 402 response so a facilitator can catalog your service and agents can find it via semantic search, not just direct URL knowledge.&lt;/p&gt;

&lt;p&gt;I found this out the hard way: a builder-code attribution extension I'd added was being merged into the extensions object with a dict-unpack (**declare_builder_code_extension(...)) instead of being nested under its own named key. That silently broke the Bazaar extension's schema validity — the service was accepting payments and returning valid results the whole time, but wasn't properly cataloged for discovery. Fixed by nesting each extension under its constant key (BUILDER_CODE: declare_builder_code_extension(...)) instead of unpacking blindly.&lt;/p&gt;

&lt;p&gt;Lesson: if you're building an x402 service, decode your own 402 response and check the extensions object structure against the spec. A working payment flow tells you nothing about discoverability.&lt;/p&gt;

&lt;p&gt;Where it's live&lt;br&gt;
API / MCP server: agentrisk.dev&lt;br&gt;
x402 Bazaar: cataloged and discoverable&lt;br&gt;
MCP Registry: io.github.Neurobyteio/agentrisk&lt;br&gt;
Smithery: daniel-arbitr/agentriskm2m&lt;br&gt;
Integrations: MCP server, Python SDK (agentriskm2m), MetaMask Snap, ElizaOS plugin, LangChain tool, Vercel AI SDK tool, Coinbase AgentKit action provider&lt;br&gt;
Live on-chain stats: viewable on x402 Lens — transaction volume and settlement data, publicly verifiable&lt;br&gt;
What's next&lt;/p&gt;

&lt;p&gt;Still early — the goal now is getting the API in front of more agent developers building on Base, not adding more features. If you're building a trading agent, an MEV bot, or any autonomous system that needs pre-trade due diligence on Base tokens, I'd genuinely like feedback: github.com/Neurobyteio/agentrisk.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>web3</category>
      <category>cryptocurrency</category>
      <category>cloud</category>
    </item>
    <item>
      <title>AgentRisk: A Pay-Per-Call Risk Oracle for Autonomous Trading Agents</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Sat, 19 Sep 2026 13:41:27 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/agentrisk-a-pay-per-call-risk-oracle-for-autonomous-trading-agents-2hp9</link>
      <guid>https://dev.to/agentrisk_m2m/agentrisk-a-pay-per-call-risk-oracle-for-autonomous-trading-agents-2hp9</guid>
      <description>&lt;p&gt;AI trading agents on Base are increasingly autonomous — they see a&lt;br&gt;
token, decide, and execute, often with no human in the loop. But&lt;br&gt;
"decide" usually means trusting whatever on-chain data the agent&lt;br&gt;
can scrape in the few hundred milliseconds it has before the trade&lt;br&gt;
window closes. That's a thin foundation for judgment: honeypot&lt;br&gt;
contracts, unlocked liquidity, rug-pull patterns — none of that is&lt;br&gt;
visible from a raw balance check.&lt;/p&gt;

&lt;p&gt;Most existing risk tools are built for humans: a dashboard, a&lt;br&gt;
search box, a subscription. None of that works for an agent that&lt;br&gt;
needs a machine-readable answer in one HTTP call, with no signup&lt;br&gt;
flow, no API key provisioning, no human clicking "I agree" anywhere&lt;br&gt;
in the loop.&lt;/p&gt;

&lt;p&gt;AgentRisk is built for that gap specifically — an m2m risk oracle,&lt;br&gt;
not a dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pay-per-call via x402.&lt;/strong&gt; No subscription, no key. An agent sends&lt;br&gt;
a request, gets a 402 Payment Required response, pays 0.15 USDC on&lt;br&gt;
Base, and the same request goes through. No account creation&lt;br&gt;
anywhere in the flow — which matters when the caller is a bot, not&lt;br&gt;
a person who can fill out a signup form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-referenced signal, not a single source.&lt;/strong&gt; Every scan&lt;br&gt;
combines GoPlus token-security data with independent on-chain&lt;br&gt;
checks — LP lock status, holder concentration, sell simulation&lt;br&gt;
against the live pool. A token can look clean on one source and&lt;br&gt;
show a blocked sell path on the other; AgentRisk surfaces both&lt;br&gt;
rather than picking one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Signed, cacheable verdicts.&lt;/strong&gt; Every response can carry a signed&lt;br&gt;
attestation: risk score, scan id, rulepack hash, policy version,&lt;br&gt;
input digest, chain, timestamp. This came directly from a&lt;br&gt;
conversation with another agent builder (@AxiomBot / Protean&lt;br&gt;
Labs) who pointed out that agents calling this at scale need to&lt;br&gt;
&lt;em&gt;cache&lt;/em&gt; a verdict and trust it without re-querying — the receipt is&lt;br&gt;
what makes that safe. An agent can verify the signature offline,&lt;br&gt;
check the timestamp isn't stale, and skip the network call entirely&lt;br&gt;
on a cache hit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Machine-readable failure states.&lt;/strong&gt; A signature check doesn't just&lt;br&gt;
return "invalid" — it distinguishes &lt;code&gt;expired&lt;/code&gt;, &lt;code&gt;revoked&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;replayed&lt;/code&gt;, and &lt;code&gt;unsigned&lt;/code&gt;, so a calling agent can decide&lt;br&gt;
programmatically whether to retry, re-scan, or hard-fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration surface
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;REST endpoint&lt;/strong&gt; — &lt;code&gt;POST /scan&lt;/code&gt; with a contract address, x402
payment header, get back structured JSON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP server&lt;/strong&gt; — for agents built on Claude/MCP-compatible
stacks, risk scoring is exposed as a tool call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A Agent Card&lt;/strong&gt; — so other agents can discover the service
and its capabilities without hardcoded integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it stands
&lt;/h2&gt;

&lt;p&gt;The service has been live on Base Mainnet for a few months. It's&lt;br&gt;
listed in a couple of community agent-tooling directories&lt;br&gt;
(&lt;code&gt;awesome-a2a&lt;/code&gt; among them) and has processed real scans end to end,&lt;br&gt;
including real x402 payments settling on-chain.&lt;/p&gt;

&lt;p&gt;It's early — real usage is still small, and that's an honest&lt;br&gt;
statement, not a hedge. If you're building an agent that trades&lt;br&gt;
autonomously on Base and want pre-trade risk data without wiring up&lt;br&gt;
your own token-security pipeline, the endpoint is open:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;agentrisk.dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Feedback — especially from anyone building m2m agent infrastructure&lt;br&gt;
— is genuinely welcome. The attestation spec above exists because&lt;br&gt;
someone in a Twitter thread asked a sharp question about staleness&lt;br&gt;
and caching; more of that kind of pressure-testing is exactly what&lt;br&gt;
this needs right now.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>web3</category>
    </item>
    <item>
      <title>Giving AI Agents a Way to Say "No" Before They Get Rekt: Building AgentRisk M2M</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Mon, 14 Sep 2026 06:25:44 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/giving-ai-agents-a-way-to-say-no-before-they-get-rekt-building-agentrisk-m2m-56a1</link>
      <guid>https://dev.to/agentrisk_m2m/giving-ai-agents-a-way-to-say-no-before-they-get-rekt-building-agentrisk-m2m-56a1</guid>
      <description>&lt;h1&gt;
  
  
  Giving AI Agents a Way to Say "No" Before They Get Rekt
&lt;/h1&gt;

&lt;p&gt;AI agents are increasingly being handed wallets and told to trade. Swap bots, portfolio agents, &lt;br&gt;
arbitrage bots built on frameworks like Coinbase AgentKit, ElizaOS, and LangChain now execute &lt;br&gt;
on-chain transactions with no human in the loop.&lt;/p&gt;

&lt;p&gt;The problem: most of these agents have no built-in way to tell a legitimate token from a honeypot &lt;br&gt;
or a freshly-deployed rug pull before they sign a transaction. A human trader might eyeball a chart &lt;br&gt;
or check a Telegram group. An agent has no such instinct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not just hardcode a checklist?
&lt;/h2&gt;

&lt;p&gt;Because the signals that matter change token by token, and reliable risk data comes from multiple &lt;br&gt;
sources that disagree with each other more often than you'd expect. You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Honeypot / sell-tax detection&lt;/li&gt;
&lt;li&gt;Deployer wallet history (is this a serial rug-puller?)&lt;/li&gt;
&lt;li&gt;Liquidity lock status&lt;/li&gt;
&lt;li&gt;Brand impersonation checks (fake "official" tokens)&lt;/li&gt;
&lt;li&gt;Cross-referencing off-chain security data against live on-chain state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bundling all of that into every agent's codebase doesn't scale. So I built it as a standalone, &lt;br&gt;
pay-per-call API instead: &lt;strong&gt;AgentRisk M2M&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;AgentRisk is a pre-trade risk scoring API for tokens on Base Mainnet, built specifically for &lt;br&gt;
machine-to-machine consumption:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payment:&lt;/strong&gt; x402 protocol — 0.15 USDC per scan, paid directly by the agent via the Coinbase CDP 
facilitator. No API keys, no signup, no subscription. An agent hits the endpoint, gets a 402 
Payment Required response, pays, gets the result.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; Python + FastAPI, deployed on a VPS behind Cloudflare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data sources:&lt;/strong&gt; GoPlus Security, DexScreener, and direct Base RPC calls — cross-referenced 
against each other, with a &lt;code&gt;confidence&lt;/code&gt; field that drops when data sources disagree or key fields 
(creator address, LP lock status) are missing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What a scan actually checks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Deployer wallet freshness (a nonce ≤3 is flagged — brand-new wallets deploying tokens are a 
common rug pattern)&lt;/li&gt;
&lt;li&gt;Anti-brand-impersonation detection (fake versions of known tokens)&lt;/li&gt;
&lt;li&gt;GoPlus-vs-on-chain disagreement flag (when the security data and live chain state don't match)&lt;/li&gt;
&lt;li&gt;A human-readable verdict, not just a raw score&lt;/li&gt;
&lt;li&gt;A scan receipt with &lt;code&gt;scan_id&lt;/code&gt; and timestamp for auditability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Machine-to-machine first
&lt;/h2&gt;

&lt;p&gt;Beyond the raw API, AgentRisk exposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A full &lt;strong&gt;MCP server&lt;/strong&gt; implementation, so any MCP-compatible agent can call it as a tool&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;A2A Agent Card&lt;/strong&gt; (&lt;code&gt;.well-known/agent.json&lt;/code&gt;, protocol version 0.3) for agent-to-agent discovery&lt;/li&gt;
&lt;li&gt;Listings on mcp.so, Smithery, the official MCP Registry, and x402scan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is that an agent framework doesn't need custom integration code — it discovers the tool, &lt;br&gt;
sees the price, pays per use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Currently gathering real-world usage data (one honeypot has already been caught in early testing) &lt;br&gt;
and working through developer channels — GitHub issues on agent-framework repos, PR reviews on &lt;br&gt;
&lt;code&gt;base/skills&lt;/code&gt; and &lt;code&gt;BankrBot/skills&lt;/code&gt; — to get AgentRisk in front of people actually writing agent &lt;br&gt;
trading code today.&lt;/p&gt;

&lt;p&gt;If you're building an agent that touches Base tokens, or just curious about the x402 payment flow &lt;br&gt;
for machine-to-machine APIs, happy to talk shop in the comments.&lt;/p&gt;

&lt;p&gt;🔗 agentrisk.dev&lt;br&gt;&lt;br&gt;
📦 github.com/Neurobyteio/agentrisk&lt;/p&gt;

</description>
      <category>ai</category>
      <category>web3</category>
      <category>cryptocurrency</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Caught a Real Honeypot Live, and It Confirmed Something About How These Scams Actually Work</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Wed, 09 Sep 2026 06:12:54 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/i-caught-a-real-honeypot-live-and-it-confirmed-something-about-how-these-scams-actually-work-23l6</link>
      <guid>https://dev.to/agentrisk_m2m/i-caught-a-real-honeypot-live-and-it-confirmed-something-about-how-these-scams-actually-work-23l6</guid>
      <description>&lt;p&gt;I record short demos of AgentRisk M2M — a pre-trade risk API for Base tokens — scanning random, live tokens. Most of the time the result is unremarkable: CAUTION here, a HIGH_RISK there. This time it wasn't.&lt;/p&gt;

&lt;p&gt;What happened&lt;/p&gt;

&lt;p&gt;I ran a scan on a token that, on the surface, looked completely ordinary. Open source, no obvious red flags in a quick glance. The static checks — ownership status, mint functions, blacklist logic — came back mostly clean.&lt;/p&gt;

&lt;p&gt;Then the live sell simulation ran. It queries the actual pool state directly, computing what a real sell transaction would return right now, across whichever DEX the token trades on — in this case walking through Uniswap V2/V3-style reserves and V3/V4 slot0 pricing depending on the pool type. The result: unsellable. Not a tax, not a warning — the pool simply would not let a sell go through.&lt;/p&gt;

&lt;p&gt;That's the gap a static scanner can't see. The bytecode doesn't have to say "you can never sell this." It just has to route through logic that behaves differently depending on execution context, or rely on a pool configuration that a code read alone won't reveal. The only way to catch it is to actually ask the pool the question a real trade would ask: what happens if I try to sell this right now?&lt;/p&gt;

&lt;p&gt;Why this matters more for agents than for humans&lt;/p&gt;

&lt;p&gt;A human trader who gets a bad feeling can pause, look something up, ask around. An autonomous trading agent doesn't have that instinct — it acts on whatever signal it's given. If that signal is "the code looks fine," and the code genuinely does look fine, the agent has no reason to stop. It buys, and finds out it can't sell at the exact moment it tries — with real funds already committed.&lt;/p&gt;

&lt;p&gt;This is the specific failure mode AgentRisk is built around: not "is this contract written maliciously" but "will this pool actually let you exit right now." The two questions overlap a lot of the time, but not always, and the cases where they diverge are exactly the ones that hurt.&lt;/p&gt;

&lt;p&gt;The technical detail worth sharing&lt;/p&gt;

&lt;p&gt;Covering this reliably across Base means handling more than one DEX shape. The sell simulation checks getReserves() for V2-style AMM pools, and slot0() for V3/Slipstream-style concentrated liquidity pools — including Uniswap V4's newer singleton PoolManager architecture via its StateView contract, and Aerodrome's own V1 and Slipstream pools. A token that looks safe on a superficial pass can still fail this check if the pool it actually trades through behaves unexpectedly under a real sell.&lt;/p&gt;

&lt;p&gt;Where this fits&lt;/p&gt;

&lt;p&gt;AgentRisk M2M runs this simulation alongside honeypot detection, deployer wallet history, brand impersonation checks, and on-chain LP-lock verification — returning a single risk score and a clear should-trade decision. Paid per call via x402, 0.15 USDC, no API key. Available directly over HTTP or as native packages for MCP, ElizaOS, LangChain, Vercel AI SDK, and Coinbase AgentKit, so it drops into whatever an agent's stack already looks like.&lt;/p&gt;

&lt;p&gt;Repo: github.com/Neurobyteio/agentrisk&lt;br&gt;
Try it: agentrisk.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>web3</category>
    </item>
    <item>
      <title>Shipping AgentRisk Into Every Major Agent Framework: MCP, ElizaOS, LangChain, Vercel AI SDK, and Coinbase AgentKit</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Sun, 06 Sep 2026 17:16:59 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/shipping-agentrisk-into-every-major-agent-framework-mcp-elizaos-langchain-vercel-ai-sdk-and-2h52</link>
      <guid>https://dev.to/agentrisk_m2m/shipping-agentrisk-into-every-major-agent-framework-mcp-elizaos-langchain-vercel-ai-sdk-and-2h52</guid>
      <description>&lt;p&gt;A pre-trade risk API is only as useful as it is reachable. For a while, AgentRisk M2M was a solid, well-tested HTTP endpoint — but reachable only if a developer already knew it existed and was willing to write the integration code by hand. That's a real barrier, and today it's gone.&lt;/p&gt;

&lt;p&gt;The gap&lt;/p&gt;

&lt;p&gt;Every major framework for building autonomous agents ships its own convention for adding a capability: an MCP tool, an ElizaOS action, a LangChain tool, a Vercel AI SDK tool, a Coinbase AgentKit action provider. A developer working in any of these doesn't want to hand-roll an HTTP client and parse a JSON response — they want npm install and a working tool in their agent's toolset within a minute.&lt;/p&gt;

&lt;p&gt;What shipped&lt;/p&gt;

&lt;p&gt;Five packages, each a thin, tested wrapper around the same underlying API (agentrisk.dev/scan) — no duplicated logic, no drift between them:&lt;/p&gt;

&lt;p&gt;agentrisk-mcp — a standard MCP server, works with Claude Desktop, Cursor, and any MCP-compatible client. npm install -g agentrisk-mcp, one config block, done.&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/agentrisk"&gt;@agentrisk&lt;/a&gt;/plugin-elizaos — an ElizaOS action (CHECK_TOKEN_RISK) that fires when a message mentions a Base address alongside words like "safe," "honeypot," or "rug." Drops straight into a character file's plugin list.&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/agentrisk"&gt;@agentrisk&lt;/a&gt;/langchain — a DynamicStructuredTool for LangChain agents, addable to any tool list like any other LangChain tool.&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/agentrisk"&gt;@agentrisk&lt;/a&gt;/ai-sdk — a Vercel AI SDK tool using the current inputSchema / execute shape (the API changed between major versions of the ai package — worth checking your installed version before copying examples from older docs).&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/agentrisk"&gt;@agentrisk&lt;/a&gt;/agentkit — a Coinbase AgentKit action provider, the one I'd call the most consequential integration here, since AgentKit is Coinbase's own first-party framework and sits in the same ecosystem as the x402 facilitator and Builder Codes I'm already using for payments and attribution.&lt;/p&gt;

&lt;p&gt;What each one actually does&lt;/p&gt;

&lt;p&gt;Every package calls the same real-time analysis: honeypot detection, deployer wallet freshness, brand impersonation checks, on-chain LP-lock verification, and a live sell simulation across every DEX architecture live on Base — Uniswap V2, V3, V4, and Aerodrome including Slipstream concentrated liquidity. That last part matters more than it sounds: a token can pass every static check and still be unsellable the moment real liquidity conditions are queried, which is exactly the gap a code-only scanner can't see.&lt;/p&gt;

&lt;p&gt;A genuinely annoying bug along the way&lt;/p&gt;

&lt;p&gt;Building the AgentKit package surfaced a real dependency conflict worth flagging for anyone doing the same: @coinbase/agentkit pins its internal type expectations to Zod 3, while a fresh npm install zod today pulls Zod 4. The compiler error (missing properties from type 'ZodType'... _type, _parse, _getType) gives no hint that version mismatch is the cause. Pinning &lt;a href="mailto:zod@3.25.76"&gt;zod@3.25.76&lt;/a&gt; explicitly fixed it immediately.&lt;/p&gt;

&lt;p&gt;Pricing, unchanged&lt;/p&gt;

&lt;p&gt;0.15 USDC per scan via x402, no API key, no subscription. Free public checks at agentrisk.dev for anyone who wants to see the output shape before wiring up a package.&lt;/p&gt;

&lt;p&gt;Where it stands&lt;/p&gt;

&lt;p&gt;Five repos, five packages, one API behind all of them. Whichever framework an agent is built on, the integration path is now identical to installing any other tool in that ecosystem — no special-casing, no manual HTTP client required.&lt;/p&gt;

&lt;p&gt;Repos: github.com/Neurobyteio/agentrisk-mcp, agentrisk-eliza, agentrisk-langchain, agentrisk-ai-sdk, agentrisk-agentkit&lt;br&gt;
API: github.com/Neurobyteio/agentrisk&lt;br&gt;
Try it: agentrisk.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Verifiable Trust for AI Agents: Signed Receipts, Replay Protection, and Failure Normalization</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Fri, 04 Sep 2026 06:23:57 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/verifiable-trust-for-ai-agents-signed-receipts-replay-protection-and-failure-normalization-50am</link>
      <guid>https://dev.to/agentrisk_m2m/verifiable-trust-for-ai-agents-signed-receipts-replay-protection-and-failure-normalization-50am</guid>
      <description>&lt;p&gt;A few weeks ago, AgentRisk M2M shipped signed risk receipts — every token scan could be cryptographically signed so an agent could confirm a result actually came from the API. That felt complete. It wasn't. Here's what changed after a real back-and-forth with another live agent in the x402 ecosystem, and why each addition closes a specific, concrete gap.&lt;/p&gt;

&lt;p&gt;Where it started: a signature, and not much else&lt;/p&gt;

&lt;p&gt;The original /verify endpoint answered exactly one question: is this signature real? Necessary, but thin. An agent deciding whether to trust a cached scan result — instead of paying for a fresh one — needs more surface area than a single boolean.&lt;/p&gt;

&lt;p&gt;Round one: making the receipt legible&lt;/p&gt;

&lt;p&gt;The first round of feedback asked for explicit fields that were technically present but not surfaced clearly: which rulepack hash produced this score, which key signed it, when the verification itself happened (not just when the original scan ran), and what the maximum age threshold actually is. All of this existed inside the signed payload already — the fix was making it visible instead of implicit.&lt;/p&gt;

&lt;p&gt;Replay detection took more work than expected. My first pass used a plain in-memory dictionary to track which scan_ids had already been checked. It worked fine in isolated testing and failed silently in production, because the API runs behind four uvicorn workers, each with separate memory. A request landing on worker 1 has no idea worker 3 already saw that scan_id. Switched to SQLite — already used elsewhere in the app, shared across all workers — and the replay window started working correctly: first check returns replay_detected: false, an identical second check within 10 minutes returns true.&lt;/p&gt;

&lt;p&gt;Round two: one red light isn't enough&lt;/p&gt;

&lt;p&gt;Once the receipt had real signature validation, staleness checks, and replay detection, the next piece of feedback was sharper: bundling every failure mode into a single valid: false throws away information an agent actually needs. Rejecting a scan because it's stale (just re-scan) is a completely different action than rejecting it because the signature doesn't check out (don't trust this source at all).&lt;/p&gt;

&lt;p&gt;The fix: a failure_reason field with four distinct, machine-readable values — unsigned, expired, replayed, and revoked — instead of one generic flag. An agent can now branch on the specific reason instead of treating every rejection identically.&lt;/p&gt;

&lt;p&gt;The honest gap: revocation&lt;/p&gt;

&lt;p&gt;That fourth category, revoked, deserves a direct explanation, because I didn't build a full revocation registry — and I don't think I should have, yet. The textbook approach is a growing database of blocked receipt IDs with an admin endpoint to add to it. I went with a hard 24-hour TTL instead: a receipt that's past its age threshold gets rejected the same way an explicitly revoked one would, without maintaining a blocklist that only grows. The revoked field is reserved in the response schema — always false today — so an agent's parsing logic doesn't have to special-case its absence if a real registry gets built later. Whether that's actually needed depends on whether 24-hour staleness is fast enough for how a given agent uses the data, which is an open question I'd rather answer with a real use case than a hypothetical one.&lt;/p&gt;

&lt;p&gt;Why this is worth writing up&lt;/p&gt;

&lt;p&gt;There's a pattern here worth naming: a valid/invalid boolean is a verdict. What was actually being asked for, across both rounds, was a reasoning path — enough structured, distinct detail that another agent, or a developer debugging that agent's behavior later, can reconstruct exactly why a receipt was trusted or rejected, not just that it was one or the other. Signature validity, rule currency, staleness, and replay status are independent axes. Collapsing them into one flag discards information that changes what an agent should actually do next.&lt;/p&gt;

&lt;p&gt;Where it stands&lt;/p&gt;

&lt;p&gt;/verify now takes a signed receipt and returns signature validity, signer key ID, rulepack hash and currency, verification timestamp, explicit TTL, replay detection (SQLite-backed, correct across all workers), and a normalized failure_reason covering all four rejection categories. No new infrastructure beyond one SQLite table.&lt;/p&gt;

&lt;p&gt;This sits alongside AgentRisk M2M's core scanning: honeypot detection, deployer wallet history, brand impersonation checks, on-chain LP-lock verification, and a live sell simulation covering every major DEX architecture on Base — Uniswap V2, V3, V4, and Aerodrome including Slipstream concentrated liquidity — paid per call via x402, 0.15 USDC, no API key.&lt;/p&gt;

&lt;p&gt;Repo: github.com/Neurobyteio/agentrisk&lt;br&gt;
Try it: agentrisk.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>web3</category>
      <category>cryptocurrency</category>
    </item>
    <item>
      <title>Building a Trust Layer for AI Agents: From "Valid: True" to a Full Reasoning Path</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Thu, 03 Sep 2026 08:00:27 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/building-a-trust-layer-for-ai-agents-from-valid-true-to-a-full-reasoning-path-4c4m</link>
      <guid>https://dev.to/agentrisk_m2m/building-a-trust-layer-for-ai-agents-from-valid-true-to-a-full-reasoning-path-4c4m</guid>
      <description>&lt;p&gt;A few days ago I shipped signed risk receipts for AgentRisk M2M — a pre-trade token safety API for Base. Every scan could be cryptographically signed, and agents could verify the signature. That felt like a solid stopping point.&lt;/p&gt;

&lt;p&gt;Then another live agent in the x402 ecosystem, Axiom, pushed back with a precise, well-thought-out spec: a signature alone isn't enough for another agent to actually reason about whether to trust a result. Here's what changed, and why each piece matters.&lt;/p&gt;

&lt;p&gt;The starting point: signed, but thin&lt;/p&gt;

&lt;p&gt;The original /verify endpoint answered one question: is this signature real? That's necessary but not sufficient. An agent deciding whether to trust a cached result needs more context than a boolean.&lt;/p&gt;

&lt;p&gt;What Axiom asked for, and what it actually took to build&lt;/p&gt;

&lt;p&gt;Rulepack hash and signer key ID, explicitly in the response. These existed inside the signed payload already, but weren't surfaced as first-class fields in the verify response itself. Trivial fix — just expose what was already there.&lt;/p&gt;

&lt;p&gt;Verification timestamp. Not the time of the original scan, but the time of this specific check. An agent auditing a decision later needs to know when it confirmed trust, separate from when the data was generated.&lt;/p&gt;

&lt;p&gt;Explicit max age. The TTL (24 hours) was enforced in code but invisible from the outside — an agent had no way to know the threshold without guessing. Now it's a plain field in the response: max_age_seconds.&lt;/p&gt;

&lt;p&gt;Replay detection. This one took an actual debugging round. My first pass used a simple in-memory dictionary to track which scan_ids had already been checked. It worked in isolated testing and failed silently in production — because the API runs behind 4 uvicorn workers, each with its own memory space. A request hitting worker 1 has no idea worker 3 already saw that scan_id five seconds ago. Switched to SQLite (already used elsewhere in the app, shared across all workers) and the replay window started working correctly — first check returns replay_detected: false, an identical second check within the 10-minute window returns true.&lt;/p&gt;

&lt;p&gt;The one thing I pushed back on: revocation&lt;/p&gt;

&lt;p&gt;Axiom's spec also asked for a "revocation source" — a way to explicitly invalidate a receipt before its TTL expires. The textbook answer is a revocation list: a growing database of blocked receipt IDs, an admin endpoint to add to it, ongoing maintenance.&lt;/p&gt;

&lt;p&gt;I didn't build that. The receipt already has a hard 24-hour TTL. An agent checking stale: true gets the same practical outcome as an explicit revocation would — it stops trusting the cached result and asks for a fresh scan. Building a parallel revocation system on top of a TTL that already does most of the job felt like solving a problem that mostly doesn't exist yet. I said so plainly in my reply rather than shipping a half-built CRL just to check a box.&lt;/p&gt;

&lt;p&gt;Why this matters beyond one API&lt;/p&gt;

&lt;p&gt;There's a pattern worth naming here: "valid: true" is a verdict. What Axiom was really asking for is a reasoning path — enough structured detail that another agent (or the developer debugging that agent's behavior six months later) can reconstruct why something was trusted, not just that it was. Signature validity, rule currency, staleness, and replay status are four independent axes of trust, and collapsing them into one boolean throws away information an agent might actually need to make a good decision.&lt;/p&gt;

&lt;p&gt;Where it stands&lt;/p&gt;

&lt;p&gt;/verify now returns signature validity, signer key ID, rulepack hash and currency, verification timestamp, age against an explicit TTL, and replay detection — all from a single POST with the receipt. No new infrastructure beyond a SQLite table and a bit more JSON.&lt;/p&gt;

&lt;p&gt;Repo: github.com/Neurobyteio/agentrisk&lt;br&gt;
Try it: agentrisk.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>I Made a Token Safety API Work Across Every DEX Architecture on Base (Including V4)</title>
      <dc:creator>Neurobyteio. Agentrisk M2M</dc:creator>
      <pubDate>Wed, 02 Sep 2026 08:40:48 +0000</pubDate>
      <link>https://dev.to/agentrisk_m2m/i-made-a-token-safety-api-work-across-every-dex-architecture-on-base-including-v4-1kem</link>
      <guid>https://dev.to/agentrisk_m2m/i-made-a-token-safety-api-work-across-every-dex-architecture-on-base-including-v4-1kem</guid>
      <description>&lt;p&gt;A few days ago, AgentRisk M2M's "live sell simulation" only worked if a token traded against WETH on Uniswap V3. Today it works across Uniswap V2, V3, V4, and Aerodrome (both classic AMM and Slipstream concentrated liquidity) — every major DEX architecture currently live on Base.&lt;/p&gt;

&lt;p&gt;Here's what that journey looked like, because each architecture broke in a genuinely different way.&lt;/p&gt;

&lt;p&gt;Where it started: one method, one quote token&lt;/p&gt;

&lt;p&gt;The original implementation called Uniswap V3's QuoterV2 with a hardcoded WETH output token, looping through the four standard fee tiers. It worked — right up until I ran it against real, randomly-picked tokens instead of the ones I'd been testing with. Roughly half of them came back sellable: false, which turned out to be wrong. The tokens were fine. My assumption that everything quotes against WETH on Uniswap V3 was not.&lt;/p&gt;

&lt;p&gt;Fix #1: stop assuming, start asking&lt;/p&gt;

&lt;p&gt;DexScreener already tells you the real quote token and DEX for a pair — quoteToken.symbol and dexId. Instead of hardcoding WETH, the fix was to look up the actual highest-liquidity pair and use whatever it's actually quoted against (VIRTUAL, USDC, whatever). That alone fixed a chunk of false negatives.&lt;/p&gt;

&lt;p&gt;Fix #2: two universal read methods instead of one fee-tier-guessing loop&lt;/p&gt;

&lt;p&gt;Rather than keep looping through Uniswap-specific fee tiers, I switched to two methods that work across pool types, not specific protocols:&lt;/p&gt;

&lt;p&gt;`python&lt;/p&gt;

&lt;h1&gt;
  
  
  V2-style AMM pools
&lt;/h1&gt;

&lt;p&gt;result = await w3.eth.call({"to": pair, "data": "0x0902f1ac"})  # getReserves()&lt;/p&gt;

&lt;h1&gt;
  
  
  V3-style concentrated liquidity pools (works on both Uniswap V3 and Aerodrome Slipstream)
&lt;/h1&gt;

&lt;p&gt;result = await w3.eth.call({"to": pair, "data": "0x3850c7bd"})  # slot0()`&lt;/p&gt;

&lt;p&gt;getReserves() covers simple constant-product pools. slot0() reads the current price directly off any Uniswap-v3-shaped pool — Uniswap V3 or Aerodrome's Slipstream, since Slipstream is architecturally a v3 fork. This alone took coverage from "Uniswap-only" to "most of Base."&lt;/p&gt;

&lt;p&gt;The Aerodrome detour: four factories, one confusing revert&lt;/p&gt;

&lt;p&gt;Aerodrome Slipstream has shipped multiple pool factories over time. I found a live, liquid pool that reverted on every quoter call I tried — right selector, right tick spacing, still nothing. Turned out the pool was deployed by a different factory than the one my quoter contract was wired to. Verified by comparing factory() on the quoter against factory() on the pool itself — different addresses. This is apparently a known gotcha; Aerodrome's own dev docs warn against hardcoding factory addresses for exactly this reason. The slot0() approach sidesteps the whole problem, since it reads straight from the pool, not through a factory-bound quoter.&lt;/p&gt;

&lt;p&gt;The last piece: Uniswap V4&lt;/p&gt;

&lt;p&gt;V4 doesn't have per-pool contracts at all — every pool lives inside one singleton PoolManager, addressed by a PoolId (a bytes32 hash of the pool's parameters) instead of a normal address. DexScreener conveniently labels these pairs "v4" and returns the PoolId directly as the pairAddress field. From there, Uniswap's official StateView periphery contract exposes getSlot0(PoolId) for exactly this kind of off-chain read:&lt;/p&gt;

&lt;p&gt;`python&lt;br&gt;
selector = "c815641c"  # getSlot0(bytes32)&lt;br&gt;
data = "0x" + selector + pool_id[2:].zfill(64)&lt;br&gt;
result = await w3.eth.call({"to": state_view_address, "data": data})&lt;br&gt;
sqrt_price_x96 = int.from_bytes(result[0:32], "big")&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
Same sqrtPriceX96 math as everywhere else — just a different entry point.&lt;/p&gt;

&lt;p&gt;Where it ended up&lt;/p&gt;

&lt;p&gt;The live check now branches by what DexScreener reports about the pool (V4 label → StateView, otherwise try getReserves() then slot0()), instead of assuming a single protocol and quote asset. On a batch of newly-tested random Base tokens, it correctly returned a real answer for every single one — no more silent wrong answers, no more "unsupported."&lt;/p&gt;

&lt;p&gt;Where this fits&lt;/p&gt;

&lt;p&gt;AgentRisk M2M is a pre-trade risk API for Base tokens — honeypot detection, deployer wallet freshness, on-chain LP-lock verification, brand impersonation checks, and this sell simulation, plus cryptographically signed result receipts so other agents can verify a result without re-querying. Paid per call via x402 (0.15 USDC), or a free public UI with 3 free scans.&lt;/p&gt;

&lt;p&gt;Repo: github.com/Neurobyteio/agentrisk&lt;br&gt;
Try it: agentrisk.dev&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
