<?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: Beduil Dauis</title>
    <description>The latest articles on DEV Community by Beduil Dauis (@beduil_dauis_328f7cec84ea).</description>
    <link>https://dev.to/beduil_dauis_328f7cec84ea</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3835395%2F86865af3-64b3-4034-997f-2ca8baf70ff2.png</url>
      <title>DEV Community: Beduil Dauis</title>
      <link>https://dev.to/beduil_dauis_328f7cec84ea</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beduil_dauis_328f7cec84ea"/>
    <language>en</language>
    <item>
      <title>Skip the Node — A Developer's Quickstart for Kaspa with Crypto APIs</title>
      <dc:creator>Beduil Dauis</dc:creator>
      <pubDate>Mon, 27 Apr 2026 15:51:58 +0000</pubDate>
      <link>https://dev.to/beduil_dauis_328f7cec84ea/skip-the-node-a-developers-quickstart-for-kaspa-with-crypto-apis-3m72</link>
      <guid>https://dev.to/beduil_dauis_328f7cec84ea/skip-the-node-a-developers-quickstart-for-kaspa-with-crypto-apis-3m72</guid>
      <description>&lt;p&gt;&lt;em&gt;One REST endpoint and signed webhooks for Kaspa — Node.js and Python examples inside.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Kaspa is a proof-of-work Layer 1 with one-second block times and BlockDAG (GHOSTDAG) consensus. It is fast, settled in seconds, and very developer-friendly — once you have access to a node. Running your own &lt;code&gt;kaspad&lt;/code&gt; node, keeping it in sync, indexing transactions, and turning that into a clean payment flow is real work that distracts you from shipping product.&lt;/p&gt;

&lt;p&gt;Crypto APIs now supports Kaspa mainnet behind a single REST API, with signed webhooks for incoming, outgoing, and confirmed transactions. No node, no indexer, no infra to babysit.&lt;/p&gt;

&lt;p&gt;This post is a copy-paste quickstart for the two flows most teams actually need on day one: tracking an incoming Kaspa payment, and a minimal wallet backend that lists balances and recent activity for a user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why skip the node
&lt;/h2&gt;

&lt;p&gt;A self-hosted Kaspa stack means a &lt;code&gt;kaspad&lt;/code&gt; node, a separate indexer for address and transaction lookups, a queue for reorg-safe confirmations, an HTTPS service to expose data to your app, and an on-call rotation when blocks slow down or peers misbehave. With Crypto APIs you call one HTTPS endpoint and you're done. Free tier is enough to start; you upgrade when traffic grows.&lt;/p&gt;

&lt;p&gt;What you get on Kaspa via Crypto APIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Address details and balances&lt;/li&gt;
&lt;li&gt;Transaction history per address&lt;/li&gt;
&lt;li&gt;Latest block and block-by-height lookups&lt;/li&gt;
&lt;li&gt;Fee recommendations&lt;/li&gt;
&lt;li&gt;Broadcast of pre-signed raw transactions&lt;/li&gt;
&lt;li&gt;Signed webhooks for new confirmed and unconfirmed coin transactions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All endpoints are documented at &lt;a href="https://developers.cryptoapis.io/" rel="noopener noreferrer"&gt;developers.cryptoapis.io&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flow 1: track an incoming Kaspa payment with a webhook
&lt;/h2&gt;

&lt;p&gt;When a user is paying you in KAS, you do not want to poll. Subscribe a webhook to the receiving address once and Crypto APIs will POST to your callback URL when a transaction confirms. The payload is signed via your &lt;code&gt;callbackSecretKey&lt;/code&gt;, so you can verify it came from Crypto APIs and not a spoofer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before going live, register and verify your callback domain in the Crypto APIs dashboard (see &lt;em&gt;Callbacks&lt;/em&gt; in the docs). Otherwise the subscription will not deliver.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Node.js example to subscribe an address to "new confirmed coin transactions":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CRYPTOAPIS_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;HOST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://rest.cryptoapis.io&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/blockchain-events/kaspa/mainnet/address-coins-transactions-confirmed`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;subscribeIncoming&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callbackUrl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-api-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;API_KEY&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;order-1234&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;item&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="nx"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;allowDuplicates&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="na"&gt;callbackSecretKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;whsec_replace_me&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nx"&gt;callbackUrl&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;subscribeIncoming&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;kaspa:qr...your-address...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.example.com/webhooks/kaspa&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When a payment to that address gets confirmed in a block, your endpoint receives a JSON body with &lt;code&gt;eventType: ADDRESS_COINS_TRANSACTION_CONFIRMED&lt;/code&gt; plus the address, txid, amount and confirmation count. Verify the signature with the &lt;code&gt;callbackSecretKey&lt;/code&gt; you set, mark the order as paid, and you're done. No polling, no missed transactions on reorgs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flow 2: a minimal wallet backend in Python
&lt;/h2&gt;

&lt;p&gt;For a wallet UI you typically need balance and recent transactions for an address. Two endpoints, no node.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;CRYPTOAPIS_KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;HOST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://rest.cryptoapis.io&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;HEADERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;x-api-key&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_balance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;mainnet&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/addresses-latest/kaspa/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/balance&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;HEADERS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;item&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;list_txs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;mainnet&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;HOST&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/addresses-latest/kaspa/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;network&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/transactions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;HEADERS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;items&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;addr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;kaspa:qr...your-address...&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;get_balance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;tx&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;list_txs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;addr&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;transactionId&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;tx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;minedInBlockHeight&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is enough to render a Kaspa wallet screen. Add fee recommendations and broadcast endpoints when you start sending KAS, and webhooks when you want push instead of pull.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about sending KAS?
&lt;/h2&gt;

&lt;p&gt;Signing transactions stays in your control — keys never leave your environment, which is how it should be. Crypto APIs gives you the inputs you need and a broadcast endpoint to relay your signed raw transaction to the Kaspa network. You keep custody and security; we handle the network plumbing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;p&gt;Grab a free API key at &lt;a href="https://cryptoapis.io" rel="noopener noreferrer"&gt;cryptoapis.io&lt;/a&gt;, browse the full Kaspa reference at &lt;a href="https://developers.cryptoapis.io/" rel="noopener noreferrer"&gt;developers.cryptoapis.io&lt;/a&gt;, and you have Kaspa indexing and webhooks running in well under an hour. We are actively prioritising the next round of Kaspa endpoints based on developer feedback — if there is something you need that is not there yet, tell us.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://cryptoapis.io/blog/566-skip-the-node-a-developers-quickstart-for-kaspa-with-crypto-apis" rel="noopener noreferrer"&gt;cryptoapis.io&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>kaspa</category>
      <category>blockchain</category>
      <category>webdev</category>
      <category>api</category>
    </item>
    <item>
      <title>Give Your AI Agent Blockchain Superpowers — CryptoAPIs MCP Servers Are Live</title>
      <dc:creator>Beduil Dauis</dc:creator>
      <pubDate>Fri, 20 Mar 2026 13:12:08 +0000</pubDate>
      <link>https://dev.to/beduil_dauis_328f7cec84ea/give-your-ai-agent-blockchain-superpowers-cryptoapis-mcp-servers-are-live-2cgd</link>
      <guid>https://dev.to/beduil_dauis_328f7cec84ea/give-your-ai-agent-blockchain-superpowers-cryptoapis-mcp-servers-are-live-2cgd</guid>
      <description>&lt;p&gt;Imagine asking your AI assistant: &lt;em&gt;"Has this wallet received any transactions in the last 24 hours?"&lt;/em&gt; — and getting an accurate, real-time answer in seconds, with zero integration code.&lt;/p&gt;

&lt;p&gt;That works today. Here's how.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with AI agents and blockchain data
&lt;/h2&gt;

&lt;p&gt;If you've tried to give an AI agent access to live on-chain data, you know the friction. You write a custom tool, wrap your API calls, handle chain-specific quirks, manage authentication, and by the time your agent can query a wallet balance, check a transaction, and estimate gas, you're maintaining a sprawling set of connectors.&lt;/p&gt;

&lt;p&gt;Model Context Protocol (MCP) — the open standard now adopted by Anthropic, OpenAI, Google, and Microsoft — eliminates that. It's the layer that lets AI models discover and call external tools without custom integration work. CryptoAPIs now has 14 purpose-built MCP servers that plug directly into that standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started in 60 seconds
&lt;/h2&gt;

&lt;p&gt;Every server runs with a single npx command. No cloning, no building. Add this to your Claude Desktop, Cursor, or Windsurf config:&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="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cryptoapis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-api-key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://ai.cryptoapis.io/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agent can now answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"What's the current ETH balance of this address?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Show me all token transfers for this wallet in the last 7 days"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What's the current gas fee for a standard EVM transfer?"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Has this smart contract been called in the last hour?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you'd rather skip local setup entirely, connect directly to our remote endpoint:&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="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cryptoapis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://ai.cryptoapis.io/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"x-api-key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One endpoint. All 50 tools. All 14 server packages. Works with any MCP-compatible client.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 14 servers — organized by what you're actually building
&lt;/h2&gt;

&lt;p&gt;Rather than listing them alphabetically, here's how they map to real workflows:&lt;/p&gt;

&lt;h3&gt;
  
  
  Querying on-chain state
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mcp-address-latest&lt;/strong&gt; — current balances, nonces, token holdings, and recent transactions across EVM, UTXO, Solana, XRP, and Kaspa&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-address-history&lt;/strong&gt; — sync addresses for continuous tracking and retrieve the complete transaction and token transfer history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-block-data&lt;/strong&gt; — blocks by height or hash, latest mined block, transactions within a block&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-transactions-data&lt;/strong&gt; — full transaction details, internal transactions, token transfers, and logs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Building and executing transactions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mcp-blockchain-fees&lt;/strong&gt; — fee recommendations, EIP-1559 estimates, gas estimation for transfers and contract interactions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-simulate&lt;/strong&gt; — dry-run EVM transactions before broadcasting. See exact outcomes, gas usage, and state changes before spending anything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-prepare-transactions&lt;/strong&gt; — build unsigned EVM transactions (native coin, ERC-20, ERC-721) ready for signing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-signer&lt;/strong&gt; — sign locally using your private key. No API calls made, keys never leave your machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-broadcast&lt;/strong&gt; — submit signed raw transactions to the network&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Market and contract data
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mcp-market-data&lt;/strong&gt; — real-time asset prices and exchange rates between any pair&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-contracts&lt;/strong&gt; — smart contract ABIs and token data from EVM and Solana&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Wallet and event management
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mcp-hd-wallet&lt;/strong&gt; — HD wallet management via xPub: sync, derive addresses, retrieve balances and transaction history across EVM, UTXO, and XRP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-blockchain-events&lt;/strong&gt; — create webhook subscriptions for on-chain events: confirmed transactions, new blocks, token transfers, custom confirmation counts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcp-utils&lt;/strong&gt; — address derivation, validation, raw transaction decoding across EVM, UTXO, and XRP&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the remote vs. local split matters
&lt;/h2&gt;

&lt;p&gt;For most AI agent use cases — querying data, monitoring wallets, checking fees — the remote endpoint at ai.cryptoapis.io/mcp is the right choice. Fast to connect, no local process to manage.&lt;/p&gt;

&lt;p&gt;For transaction signing, the local &lt;strong&gt;mcp-signer&lt;/strong&gt; exists for a reason: your private keys should never travel over the network. In a production custody or trading context, you'd combine both — remote for all data queries, local signer for transaction execution. Your keys stay on your infrastructure. Your agent retains full capabilities.&lt;/p&gt;

&lt;p&gt;If you only need a subset of tools, the remote server also supports product-scoped endpoints — for example, &lt;a href="https://ai.cryptoapis.io/mcp/address-latest" rel="noopener noreferrer"&gt;https://ai.cryptoapis.io/mcp/address-latest&lt;/a&gt; exposes only address balance tools, which means faster session initialization and a smaller context window for your AI client.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chains supported
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;EVM — Ethereum, Ethereum Classic, BSC, Polygon, Avalanche C-Chain, Tron, Arbitrum, Base, Optimism&lt;/li&gt;
&lt;li&gt;UTXO — Bitcoin, Bitcoin Cash, Litecoin, Dogecoin, Dash, Zcash&lt;/li&gt;
&lt;li&gt;Other — XRP, Solana, Kaspa&lt;/li&gt;
&lt;li&gt;Mainnet and testnet support available.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Full documentation
&lt;/h2&gt;

&lt;p&gt;Complete install instructions, configuration examples for every MCP client, the full tool reference, and HTTP transport setup are in the official docs:&lt;br&gt;
&lt;a href="https://developers.cryptoapis.io/v-2.2024-12-12-175/RESTapis/ai-compatibility/mcp-servers" rel="noopener noreferrer"&gt;https://developers.cryptoapis.io/v-2.2024-12-12-175/RESTapis/ai-compatibility/mcp-servers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All 14 servers are open source, published on npm under @cryptoapis-io, and compatible with Claude, Cursor, Windsurf, n8n, and any MCP-compatible host.&lt;/p&gt;

&lt;p&gt;Get your API key at cryptoapis.io and let us know what you're building.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://cryptoapis.io/blog/559-give-your-ai-agent-blockchain-superpowers-cryptoapis-mcp-servers-are-live" rel="noopener noreferrer"&gt;cryptoapis.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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