<?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>Forem: EmblemAI</title>
    <description>The latest articles on Forem by EmblemAI (@emblemai).</description>
    <link>https://forem.com/emblemai</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%2F3877789%2Fab3c0ab2-9987-42f3-972a-4f469e456f42.jpg</url>
      <title>Forem: EmblemAI</title>
      <link>https://forem.com/emblemai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/emblemai"/>
    <language>en</language>
    <item>
      <title>Emblem Vault: From a 2016 BitcoinTalk Post to $150M in Cross-Chain NFT Volume</title>
      <dc:creator>EmblemAI</dc:creator>
      <pubDate>Tue, 05 May 2026 05:36:44 +0000</pubDate>
      <link>https://forem.com/emblemai/emblem-vault-from-a-2016-bitcointalk-post-to-150m-in-cross-chain-nft-volume-54n3</link>
      <guid>https://forem.com/emblemai/emblem-vault-from-a-2016-bitcointalk-post-to-150m-in-cross-chain-nft-volume-54n3</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Emblem Vault is the cross-chain NFT bridge that started as a 2016 BitcoinTalk post by Shannon Code, deployed on Ethereum mainnet in September 2020, sold the first Bitcoin-based NFT on Ethereum in February 2021 (a Rare Pepe &lt;code&gt;PEPECASH&lt;/code&gt; card), bridged Bitcoin Ordinals to Ethereum in 2023, and now anchors the EmblemAI agent stack with &lt;strong&gt;$150M+ in trading volume&lt;/strong&gt;, &lt;strong&gt;$100M+ in vaulted assets&lt;/strong&gt;, and &lt;strong&gt;17,000+ vault owners&lt;/strong&gt; across multiple chains. In 2026, the project consolidates a decade of products, communities, and protocols under the unified &lt;code&gt;$EMBLEM&lt;/code&gt; token.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Why this history matters
&lt;/h2&gt;

&lt;p&gt;If you have ever bought a Rare Pepe, traded a MoonCat on OpenSea, wrapped a Bitcoin Ordinal to Ethereum, or watched a Bitcoin Stamp sell at auction, you have used infrastructure that Emblem Vault built. Most of the cross-chain NFT economy on Ethereum runs through Emblem's wrapping layer — and the design predates Ethereum smart contracts.&lt;/p&gt;

&lt;p&gt;The project that anchors EmblemAI today started a decade before most of the modern crypto market. Here is the full record.&lt;/p&gt;

&lt;h2&gt;
  
  
  The origin: a 2016 BitcoinTalk post
&lt;/h2&gt;

&lt;p&gt;The Emblem Vault concept was first published on the &lt;a href="https://bitcointalk.org/index.php?topic=1652345" rel="noopener noreferrer"&gt;BitcoinTalk forum on October 16, 2016&lt;/a&gt; by founder &lt;strong&gt;Shannon Code&lt;/strong&gt;, who proposed the idea of fitting "an entire crypto portfolio into one #NFT token." The post predates the ERC-721 standard (finalized in January 2018), Bitcoin Ordinals (January 2023), and the modern NFT market entirely.&lt;/p&gt;

&lt;p&gt;Shannon's path to that idea is unusual:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Began coding &lt;strong&gt;at age 8&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Sharpened digital-asset intuition managing &lt;strong&gt;in-game economies in MMORPGs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Served as &lt;strong&gt;Head of Security for Mastercoin in 2013&lt;/strong&gt; — the first ICO and the protocol that became Omni Layer.&lt;/li&gt;
&lt;li&gt;Spun the &lt;strong&gt;Circuits of Value (COVAL)&lt;/strong&gt; token out of the Ribbit Rewards loyalty experiment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the time Ethereum's NFT standards stabilized, Shannon had been thinking about transferable, portable, multi-asset wallets for &lt;strong&gt;over a decade&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical premise
&lt;/h2&gt;

&lt;p&gt;An Emblem Vault is a standard ERC-721 or ERC-1155 token that holds a &lt;em&gt;real wallet&lt;/em&gt; — private keys, sharded and encrypted, controlling assets on any blockchain. When the NFT moves on Ethereum, the wallet moves with it. The buyer can either trade the NFT again or &lt;code&gt;unlock&lt;/code&gt; it to redeem the underlying assets on the native chain.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------+
|  ERC-721 Emblem Vault NFT   |
|  (tradable on Ethereum)     |
|                             |
|  ├─ encrypted private key   |
|  ├─ Bitcoin UTXO            |
|  ├─ Counterparty asset      |
|  ├─ Dogecoin balance        |
|  └─ Namecoin domain         |
+-----------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single primitive turns &lt;em&gt;any&lt;/em&gt; asset on &lt;em&gt;any&lt;/em&gt; chain into something tradable on OpenSea, Blur, Uniswap NFT, or any ERC-721 marketplace — without a custodian, without a bridge contract, without a wrapped derivative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timeline — verifiable milestones
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2013&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Shannon Code, Head of Security at Mastercoin&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.emblem.wiki/information/history" rel="noopener noreferrer"&gt;emblem.wiki/history&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Oct 16, 2016&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Vision published on BitcoinTalk&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.emblem.wiki/information/history" rel="noopener noreferrer"&gt;emblem.wiki/history&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2018&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;First public Cryptolina presentation&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.emblem.wiki/information/history" rel="noopener noreferrer"&gt;emblem.wiki/history&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sept 9, 2020&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Emblem Vault Legacy contract deployed on Ethereum&lt;/td&gt;
&lt;td&gt;&lt;a href="https://emblem-vault.medium.com/the-next-chapter-for-emblem-vault-8ec1572a2341" rel="noopener noreferrer"&gt;Medium: Next Chapter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Feb 2021&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;First Bitcoin-based NFT (a &lt;code&gt;PEPECASH&lt;/code&gt; Rare Pepe) sold on Ethereum via Emblem Vault&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.nfthistory.org/wiki/Emblem_Vault" rel="noopener noreferrer"&gt;NFT History&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Late Oct 2021&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Jake Gallen sells first MoonCats at Sotheby's &lt;code&gt;Natively Digital 1.2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="https://metaversal.banklesshq.com/p/mooncats-explained-" rel="noopener noreferrer"&gt;Bankless: MoonCats Explained&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nov 1, 2022&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Jake Gallen and Adam McBride join Emblem&lt;/td&gt;
&lt;td&gt;&lt;a href="https://emblem-vault.medium.com/the-next-chapter-for-emblem-vault-8ec1572a2341" rel="noopener noreferrer"&gt;Medium: Next Chapter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dec 2022&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30,000+ vaults, 9,000+ owners, 40,000+ ETH lifetime volume&lt;/td&gt;
&lt;td&gt;&lt;a href="https://docs.emblem.wiki/information/history" rel="noopener noreferrer"&gt;emblem.wiki/history&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Feb 23, 2023&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Taproot support shipped → Bitcoin Ordinals tradable on OpenSea&lt;/td&gt;
&lt;td&gt;&lt;a href="https://dappradar.com/blog/what-is-emblem-vault-trading-bitcoin-ordinals-nfts-ethereum" rel="noopener noreferrer"&gt;DappRadar: What is Emblem Vault&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;June–July 2023&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Migration from Legacy contract to ~30 Curated Collections&lt;/td&gt;
&lt;td&gt;&lt;a href="https://emblem-vault.medium.com/the-next-chapter-for-emblem-vault-8ec1572a2341" rel="noopener noreferrer"&gt;Medium: Next Chapter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;June 26, 2025&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Migrate.fun launches on Solana — token migration platform built by the Emblem team&lt;/td&gt;
&lt;td&gt;&lt;a href="https://x.com/MigrateFun" rel="noopener noreferrer"&gt;@MigrateFun&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;July 2025&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;First Migrate.fun migration: Agent Hustle moves &lt;code&gt;$TNSR&lt;/code&gt; → &lt;code&gt;$HUSTLE&lt;/code&gt; (dogfood)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://x.com/i/status/1946292207037919252" rel="noopener noreferrer"&gt;Jake Gallen on X&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2025&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Halborn audit completed for Migrate.fun smart contracts&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.halborn.com/audits/emblem-vault/migratefun-8ad34b" rel="noopener noreferrer"&gt;Halborn report&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mar 24, 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;$EMBLEM&lt;/code&gt; token migration announced — full product consolidation under EmblemAI&lt;/td&gt;
&lt;td&gt;&lt;a href="https://x.com/EmblemVault/status/2036451166880678084" rel="noopener noreferrer"&gt;@EmblemVault on X&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;April 7–14, 2026&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;$HUSTLE&lt;/code&gt; → &lt;code&gt;$EMBLEM&lt;/code&gt; migration executed via Migrate.fun (1:1 conversion window)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://x.com/EmblemVault/status/2036451166880678084" rel="noopener noreferrer"&gt;@EmblemVault on X&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  February 2021: the first Bitcoin NFT on Ethereum
&lt;/h2&gt;

&lt;p&gt;The pivotal moment came in &lt;strong&gt;February 2021&lt;/strong&gt;, when a &lt;code&gt;PEPECASH&lt;/code&gt; Rare Pepe card — originally issued on Bitcoin's Counterparty layer in 2016 — sold on Ethereum through an Emblem Vault. It was the first time a native Bitcoin-issued NFT crossed to Ethereum without a synthetic wrapper or a custodial bridge.&lt;/p&gt;

&lt;p&gt;That single transaction unlocked the entire historical Bitcoin NFT market: &lt;strong&gt;Spells of Genesis (2015), Rare Pepes (2016), Bitcorns, Force of Will, Sarutobi Island&lt;/strong&gt; — all of it became tradable on OpenSea overnight. Per Emblem's own data, roughly &lt;strong&gt;80% of the platform's $150M+ trading volume&lt;/strong&gt; has come from Counterparty, Bitcoin Ordinals, and Bitcoin Stamps assets, and &lt;strong&gt;~85% of TVL is Bitcoin NFT assets&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2022: Jake Gallen, MoonCats, and Curated Collections
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;November 1, 2022&lt;/strong&gt;, Jake Gallen and Adam McBride joined Emblem with a thesis the team summarized as &lt;em&gt;"trading NFTs from any blockchain on any blockchain."&lt;/em&gt; Gallen had already become &lt;strong&gt;the first person to sell MoonCats at Sotheby's&lt;/strong&gt; (&lt;code&gt;Natively Digital 1.2&lt;/code&gt;, October 2021). Under his leadership, Emblem reorganized around &lt;strong&gt;Curated Collections&lt;/strong&gt; — a per-collection storefront model that gave each historical NFT line its own OpenSea page, provenance tooling, and floor.&lt;/p&gt;

&lt;p&gt;By late 2023, post-migration, the platform had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50,000+ ETH in lifetime trades&lt;/li&gt;
&lt;li&gt;12,000+ unique users&lt;/li&gt;
&lt;li&gt;Ranked &lt;strong&gt;41st most-traded NFT collection by volume&lt;/strong&gt; on Ethereum&lt;/li&gt;
&lt;li&gt;Ranked &lt;strong&gt;48th largest NFT contract by ownership&lt;/strong&gt; on Ethereum&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2023: Bitcoin Ordinals and the Taproot bridge
&lt;/h2&gt;

&lt;p&gt;When &lt;strong&gt;Casey Rodarmor's Ordinals protocol&lt;/strong&gt; went live in January 2023, the question was immediate: how do these Bitcoin-native inscriptions trade on the marketplaces where the liquidity actually lives? Emblem already had the answer. &lt;strong&gt;Taproot support shipped on February 23, 2023&lt;/strong&gt;, and within weeks, Bitcoin Punks, NodeMonkes, and other early Ordinals collections were trading on OpenSea inside Emblem Vaults. The same wrapping primitive later carried &lt;strong&gt;Bitcoin Stamps&lt;/strong&gt; (SRC-20) when that protocol gained traction.&lt;/p&gt;

&lt;h2&gt;
  
  
  2025: Migrate.fun — the token migration rails
&lt;/h2&gt;

&lt;p&gt;Cross-chain wrapping solved one problem: moving NFTs between blockchains. The next problem was moving entire token communities between contracts, networks, or liquidity pools without losing the holders or fragmenting the float.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;June 26, 2025&lt;/strong&gt;, the Emblem team launched &lt;a href="https://migrate.fun" rel="noopener noreferrer"&gt;Migrate.fun&lt;/a&gt; — a Solana token migration platform that lets a project move liquidity from a locked LP into a new token contract or a new ecosystem in a single transaction. The first real-world migration was Emblem's own: Agent Hustle, the AI trading terminal that would later become Emblem Terminal, ran &lt;code&gt;$TNSR&lt;/code&gt; → &lt;code&gt;$HUSTLE&lt;/code&gt; through the platform in &lt;strong&gt;July 2025&lt;/strong&gt;, dogfooding the entire flow end-to-end.&lt;/p&gt;

&lt;p&gt;Adoption followed quickly. Within months, Migrate.fun had processed over &lt;strong&gt;$15M in liquidity&lt;/strong&gt; across a growing list of Solana projects — including Strategic Super Reserve (&lt;code&gt;$SSR&lt;/code&gt;), which used the platform to migrate to PumpSwap and join the Pump.fun build-in-public hackathon. The smart contracts were &lt;a href="https://www.halborn.com/audits/emblem-vault/migratefun-8ad34b" rel="noopener noreferrer"&gt;audited by Halborn&lt;/a&gt; and the platform was indexed in &lt;a href="https://www.quicknode.com/builders-guide/tools/migrate-fun-by-agent-hustle" rel="noopener noreferrer"&gt;QuickNode's builder guide&lt;/a&gt; as the recommended developer tool for token transitions on Solana.&lt;/p&gt;

&lt;p&gt;Then Migrate.fun became the technical rails for Emblem's own consolidation. When the time came to fold Agent Hustle, Emblem Vault, and the wider product line under a single unified token, the migration ran through the same platform — &lt;code&gt;$HUSTLE&lt;/code&gt; → &lt;code&gt;$EMBLEM&lt;/code&gt;, 1:1, during the &lt;strong&gt;April 7–14, 2026&lt;/strong&gt; window. Migrate.fun continues to operate as an independent public utility for any Solana project that needs to upgrade contracts, change ecosystems, or carve a new token from existing liquidity.&lt;/p&gt;

&lt;h2&gt;
  
  
  2026: the EmblemAI consolidation
&lt;/h2&gt;

&lt;p&gt;On &lt;strong&gt;March 24, 2026&lt;/strong&gt;, Emblem announced the &lt;code&gt;$EMBLEM&lt;/code&gt; token migration. Per the official statement: &lt;em&gt;"After nearly 10 years and multiple token iterations, Emblem consolidates all products, communities, and protocols under a single unified identity."&lt;/em&gt; The migration window ran &lt;strong&gt;April 7–14, 2026&lt;/strong&gt;, with a 1:1 conversion ratio for &lt;code&gt;$HUSTLE&lt;/code&gt; → &lt;code&gt;$EMBLEM&lt;/code&gt; for timely participants.&lt;/p&gt;

&lt;p&gt;The consolidation rolls up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Emblem Vault&lt;/strong&gt; — the original cross-chain NFT bridge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emblem Terminal&lt;/strong&gt; — the trading and analytics surface (formerly Hustle)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emblem Build&lt;/strong&gt; — the agent and developer tooling stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migrate.fun&lt;/strong&gt; — the public migration platform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EmblemAI&lt;/strong&gt; — the on-chain agent and AI economy layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project that started as a forum post about portable crypto portfolios is now the substrate for an AI-agent economy that trades, vaults, and migrates digital assets across at least seven blockchains.&lt;/p&gt;

&lt;h2&gt;
  
  
  By the numbers (current, April 2026)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;$150M+&lt;/strong&gt; lifetime cross-chain NFT trading volume&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$100M+&lt;/strong&gt; total value locked in Emblem Vaults&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;60,000+ ETH&lt;/strong&gt; lifetime trading volume&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;17,000+&lt;/strong&gt; unique vault owners&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;30+&lt;/strong&gt; Curated Collections post-migration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~85%&lt;/strong&gt; of TVL is Bitcoin-native NFT assets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;$15M+&lt;/strong&gt; in token liquidity migrated through Migrate.fun on Solana&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~10 years&lt;/strong&gt; since the original BitcoinTalk vision post&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  When was Emblem Vault founded?
&lt;/h3&gt;

&lt;p&gt;The Emblem Vault concept was published by Shannon Code on the BitcoinTalk forum on &lt;strong&gt;October 16, 2016&lt;/strong&gt;. The original &lt;code&gt;Emblem Vault Legacy&lt;/code&gt; contract was deployed to Ethereum mainnet on &lt;strong&gt;September 9, 2020&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who founded Emblem Vault?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Shannon Code&lt;/strong&gt; is the founder and original architect. Shannon previously served as Head of Security for Mastercoin (now Omni Layer) in 2013 and is the creator of the Circuits of Value (&lt;code&gt;COVAL&lt;/code&gt;) token, which preceded Emblem Vault. &lt;strong&gt;Jake Gallen&lt;/strong&gt; joined as CEO on November 1, 2022.&lt;/p&gt;

&lt;h3&gt;
  
  
  What was the first Bitcoin NFT sold on Ethereum?
&lt;/h3&gt;

&lt;p&gt;A &lt;code&gt;PEPECASH&lt;/code&gt; Rare Pepe card, originally issued on Bitcoin's Counterparty layer, sold on Ethereum through an Emblem Vault in &lt;strong&gt;February 2021&lt;/strong&gt; — the first native Bitcoin NFT to trade on the Ethereum NFT market.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does Emblem Vault wrap a Bitcoin Ordinal?
&lt;/h3&gt;

&lt;p&gt;An Emblem Vault is an ERC-721 or ERC-1155 token whose contract metadata controls a sharded, encrypted private key. The Bitcoin Ordinal sits at a Taproot address controlled by that key. Trading the NFT on Ethereum transfers control of the underlying Bitcoin address — no synthetic, no custodian, no oracle.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the relationship between Emblem Vault and EmblemAI?
&lt;/h3&gt;

&lt;p&gt;EmblemAI is the &lt;strong&gt;2026 consolidated brand&lt;/strong&gt; that unifies Emblem Vault, Emblem Terminal, Emblem Build, and Migrate.fun under a single &lt;code&gt;$EMBLEM&lt;/code&gt; token and a single agent-economy thesis. Emblem Vault remains the underlying cross-chain wrapping primitive.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much volume has Emblem Vault facilitated?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;$150M+&lt;/strong&gt; in lifetime cross-chain NFT trading volume, with approximately 80% coming from Counterparty, Bitcoin Ordinals, and Bitcoin Stamps assets.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Migrate.fun?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://migrate.fun" rel="noopener noreferrer"&gt;Migrate.fun&lt;/a&gt; is a Solana token migration platform built by the Emblem team and launched on &lt;strong&gt;June 26, 2025&lt;/strong&gt;. It lets a project move liquidity from a locked LP into a new token contract or ecosystem in a single transaction. The smart contracts were audited by Halborn. Migrate.fun has processed &lt;strong&gt;$15M+ in token liquidity&lt;/strong&gt;, including the &lt;code&gt;$HUSTLE&lt;/code&gt; → &lt;code&gt;$EMBLEM&lt;/code&gt; migration in April 2026 and the &lt;code&gt;$TNSR&lt;/code&gt; → &lt;code&gt;$HUSTLE&lt;/code&gt; migration in July 2025.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try EmblemAI
&lt;/h2&gt;

&lt;p&gt;Want to try the agent stack that consolidates a decade of cross-chain NFT and migration infrastructure?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try our AI now for free → &lt;a href="https://emblemvault.ai" rel="noopener noreferrer"&gt;emblemvault.ai&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.emblem.wiki/information/history" rel="noopener noreferrer"&gt;Emblem Vault — official history docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://emblem-vault.medium.com/the-next-chapter-for-emblem-vault-8ec1572a2341" rel="noopener noreferrer"&gt;Medium — &lt;em&gt;The Next Chapter for Emblem Vault&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://emblem-vault.medium.com/circuits-of-value-2021-updates-8914c6e530fa" rel="noopener noreferrer"&gt;Medium — &lt;em&gt;Circuits of Value: 2021 Updates&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dappradar.com/blog/what-is-emblem-vault-trading-bitcoin-ordinals-nfts-ethereum" rel="noopener noreferrer"&gt;DappRadar — &lt;em&gt;What is Emblem Vault: Trading Bitcoin Ordinals NFTs on Ethereum&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metaversal.banklesshq.com/p/emblem-vaults-explained" rel="noopener noreferrer"&gt;Bankless / Metaversal — &lt;em&gt;Emblem Vaults Explained&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metaversal.banklesshq.com/p/mooncats-explained-" rel="noopener noreferrer"&gt;Bankless / Metaversal — &lt;em&gt;MoonCats Explained&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/EmblemVault/status/2036451166880678084" rel="noopener noreferrer"&gt;@EmblemVault on X — &lt;code&gt;$EMBLEM&lt;/code&gt; migration announcement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jakegallen.com/" rel="noopener noreferrer"&gt;Jake Gallen — CEO profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://x.com/i/status/1946292207037919252" rel="noopener noreferrer"&gt;Jake Gallen on X — Migrate.fun + &lt;code&gt;$TNSR&lt;/code&gt;→&lt;code&gt;$HUSTLE&lt;/code&gt; (July 18, 2025)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://migrate.fun" rel="noopener noreferrer"&gt;Migrate.fun — token migration platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.halborn.com/audits/emblem-vault/migratefun-8ad34b" rel="noopener noreferrer"&gt;Halborn — Migrate.fun smart contract audit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.quicknode.com/builders-guide/tools/migrate-fun-by-agent-hustle" rel="noopener noreferrer"&gt;QuickNode — &lt;em&gt;Migrate.fun by Agent Hustle&lt;/em&gt; (builder guide)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://circuitsofvalue.com/about" rel="noopener noreferrer"&gt;Circuits of Value — &lt;code&gt;circuitsofvalue.com/about&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;About the author — Emblem Team&lt;/em&gt;&lt;/p&gt;

</description>
      <category>nft</category>
      <category>bitcoin</category>
      <category>ethereum</category>
      <category>web3</category>
    </item>
    <item>
      <title>MCP for AI agents: install EmblemAI's server and give Claude 200+ crypto tools</title>
      <dc:creator>EmblemAI</dc:creator>
      <pubDate>Tue, 21 Apr 2026 09:51:33 +0000</pubDate>
      <link>https://forem.com/emblemai/mcp-for-ai-agents-install-emblemais-server-and-give-claude-200-crypto-tools-4j8m</link>
      <guid>https://forem.com/emblemai/mcp-for-ai-agents-install-emblemais-server-and-give-claude-200-crypto-tools-4j8m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2026-04-23 correction.&lt;/strong&gt; Earlier revisions of this post claimed the install works identically in every MCP-compliant client. That was wrong. Claude Code works via RFC 9728 client ID metadata documents — the one-command install below is accurate for Claude Code. Other MCP clients that use the &lt;code&gt;mcp-remote&lt;/code&gt; stdio bridge (Cursor, Windsurf, Gemini CLI, Claude Desktop via bridge, ElizaOS) require RFC 7591 Dynamic Client Registration, which our authorization server does not yet advertise. On those clients today, use the &lt;strong&gt;API-key path&lt;/strong&gt; described in the client-compatibility section. RFC 7591 DCR support is on the roadmap.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Giving an AI agent a new capability used to mean writing a custom tool-calling layer, handling auth inside your codebase, and babysitting the integration every time the upstream SDK shipped a breaking change. The Model Context Protocol (MCP) replaces that entire loop with a single &lt;code&gt;mcp add&lt;/code&gt; command. Point a client at a server URL, complete one OAuth hop, and every tool the server exposes becomes a tool your agent can call. In practice, &lt;strong&gt;EmblemAI&lt;/strong&gt; runs a hosted MCP server at &lt;code&gt;https://emblemvault.ai/api/mcp&lt;/code&gt; that exposes 200+ crypto tools across 7 blockchains. This tutorial walks through installing it in &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, the OAuth handshake underneath, the first real wallet operation, and which other MCP clients work today (and how).&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP and why does it matter for AI agents?
&lt;/h2&gt;

&lt;p&gt;MCP is an open protocol from Anthropic, released in November 2024, that standardizes how AI agents discover and call external tools. Before MCP, every agent framework invented its own tool-calling glue — OpenAI function calling, LangChain tool wrappers, custom JSON schemas, framework-specific adapters. An integration written for one agent was not portable to another, and every wallet SDK, database driver, or API client had to be wrapped separately for each framework.&lt;/p&gt;

&lt;p&gt;MCP solves this by treating tool exposure as a network protocol, not a code import. A server publishes its tools over HTTP or stdio using a standard schema (&lt;code&gt;tools/list&lt;/code&gt;, &lt;code&gt;tools/call&lt;/code&gt;, &lt;code&gt;resources/list&lt;/code&gt;). A client — Claude Code, Cursor, Windsurf, Gemini CLI, any MCP-compliant agent — discovers the server, handles authentication, and forwards tool invocations on behalf of the agent. The agent never sees HTTP requests; it only sees a list of callable tools with JSON-schema inputs.&lt;/p&gt;

&lt;p&gt;This shift is the same one that happened when databases went from "ship a driver" to "expose a network endpoint." Developers stopped caring about the client library and started caring about the contract. MCP does that for AI tool integrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does a crypto wallet belong on MCP?
&lt;/h2&gt;

&lt;p&gt;A crypto wallet is the archetypal capability you want behind a network contract rather than inside your agent's codebase. There are two hard reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Chain fragmentation.&lt;/strong&gt; Every chain has its own signing model, gas idioms, RPC endpoints, and SDK quirks. Gluing Solana, Ethereum, Base, BSC, Polygon, Hedera, and Bitcoin SDKs into one agent is a part-time job. A server-side abstraction hides those seven codebases behind one tool list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key custody.&lt;/strong&gt; Handing an agent raw private keys is an obvious non-starter for anyone with a real bag. An OAuth-scoped MCP server keeps the keys server-side and only exposes scoped, revocable capabilities to the agent. A read-only scope lets the agent roam your portfolio without risk; write scopes require explicit per-operation approval.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;EmblemAI's MCP server implements both. One deterministic wallet identity spans all 7 supported chains. OAuth 2.0 with PKCE controls capability scope. Write operations route through the client's approval UI, so a human (or a policy engine) confirms every state-changing action before it hits a chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you install the EmblemAI MCP server in Claude Code?
&lt;/h2&gt;

&lt;p&gt;You install it with one command. Claude Code handles the OAuth redirect, token storage, and server registration automatically. Prerequisites are minimal: Claude Code installed (&lt;code&gt;npm i -g @anthropic-ai/claude-code&lt;/code&gt; or the IDE extension) and a browser for the one-time auth hop. No API key to paste and no &lt;code&gt;.env&lt;/code&gt; file to edit.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http emblem https://emblemvault.ai/api/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code prints an OAuth authorization URL. Open it in any browser, approve the default &lt;code&gt;vault:read&lt;/code&gt; scope, and the token flows back to Claude Code automatically via a loopback redirect. Verify the server is live:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;emblem&lt;/code&gt; entry should appear with a connected status. From this point forward, every Claude Code session in this workspace has access to the EmblemAI tool surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happens during the OAuth hop?
&lt;/h2&gt;

&lt;p&gt;The authorization flow is standard OAuth 2.0 + PKCE public-client. Claude Code handles client identification via RFC 9728 Client ID Metadata Document — it passes a URL as its &lt;code&gt;client_id&lt;/code&gt; and the server fetches the metadata at authorize time, so there is no server-side client registration step for Claude Code to navigate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Claude Code discovers the authorization server:
   GET https://api.emblemvault.ai/.well-known/oauth-authorization-server

2. It generates a PKCE code_verifier and code_challenge, then redirects
   the user to the authorize endpoint with its CIMD URL as client_id:
   GET /oauth/authorize
       ?response_type=code
       &amp;amp;client_id=&amp;lt;https URL to Claude's client metadata JSON&amp;gt;
       &amp;amp;code_challenge=&amp;lt;S256 hash&amp;gt;
       &amp;amp;code_challenge_method=S256
       &amp;amp;redirect_uri=http://127.0.0.1:&amp;lt;port&amp;gt;/callback
       &amp;amp;scope=vault:read

3. The user approves in the browser. The server redirects back to the
   loopback URI with an authorization code.

4. Claude Code exchanges the code for an access token:
   POST /oauth/token
       grant_type=authorization_code
       code=&amp;lt;code&amp;gt;
       code_verifier=&amp;lt;original verifier&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The returned token is bound to the &lt;code&gt;vault:read&lt;/code&gt; scope. Write scopes (&lt;code&gt;vault:trade&lt;/code&gt;, &lt;code&gt;vault:transfer&lt;/code&gt;) are negotiated on demand with explicit user approval in the client UI. A full OAuth internals walkthrough lives in a &lt;a href="https://dev.to/emblemai/claude-code-oauth-deep-dive-how-emblemais-mcp-server-handles-auth-e29"&gt;separate post&lt;/a&gt; — this one stays focused on the install path.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the tool surface look like once installed?
&lt;/h2&gt;

&lt;p&gt;After &lt;code&gt;mcp add&lt;/code&gt; completes, Claude Code exposes every EmblemAI tool as a native tool call. The categories match the &lt;a href="https://emblemvault.dev" rel="noopener noreferrer"&gt;agent wallet tool catalog&lt;/a&gt;: portfolio and balance queries, DEX swaps, cross-chain bridges, DeFi positions, NFT operations, conditional and limit orders, market intelligence feeds, memecoin discovery, and prediction-market tools. 200+ tools across 14 categories, organized so the agent can pick the right one from the query context without manual tool configuration.&lt;/p&gt;

&lt;p&gt;A representative slice of the tool list:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool name&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;portfolio.summary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aggregate holdings across all 7 chains in one call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;balance.get&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Balance for a specific chain or token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;swap.execute&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute a DEX swap via EmblemAI's aggregator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bridge.crosschain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bridge an asset between supported chains&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;order.conditional&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Place a limit or stop order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;defi.positions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List open DeFi positions and current yields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;market.trending&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Trending tokens across EmblemAI's market data layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nft.list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List NFTs held across all chains&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The agent does not need to know these are wallet tools. They are tools with names and JSON-schema inputs, identical in shape to a filesystem MCP server or a browser MCP server. That uniformity is the whole point of the protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you run your first on-chain operation?
&lt;/h2&gt;

&lt;p&gt;Ask Claude Code a natural-language question. The agent selects the right tool, Claude Code invokes it over MCP, and the result comes back as structured data the agent summarizes. A read-only query first:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What tokens do I hold across all chains?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude invokes &lt;code&gt;portfolio.summary&lt;/code&gt;. You get aggregated holdings across Solana, Ethereum, Base, BSC, Polygon, Hedera, and Bitcoin in one response — not seven separate round trips. This is the first query worth trying because it proves the OAuth scope is live and the server is actually seeing your wallet.&lt;/p&gt;

&lt;p&gt;Now try something with write intent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Swap 0.1 SOL to USDC."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;EmblemAI's wallet requires explicit approval for every write action. Claude Code shows the full transaction preview: amount in, expected amount out, slippage tolerance, and the routing path. Confirm once, and the swap fires. No browser extension to install, no seed phrase to paste, no chain-specific client. The whole flow lives inside Claude Code's approval UI.&lt;/p&gt;

&lt;p&gt;For agents that need to operate without a human in the loop, EmblemAI supports policy-scoped tokens with per-operation limits — a scoped &lt;code&gt;vault:trade&lt;/code&gt; token can cap daily spend, restrict to specific tokens, or require multi-sig approval above a threshold. That is beyond the scope of this install tutorial but documented at &lt;a href="https://emblemvault.dev" rel="noopener noreferrer"&gt;emblemvault.dev&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does this compose with the rest of the agent stack?
&lt;/h2&gt;

&lt;p&gt;The install gives you one agent identity that composes cleanly with the rest of the EmblemAI stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic wallets.&lt;/strong&gt; One password produces one persistent wallet identity across all 7 chains. Different passwords produce different wallets, so you can issue each agent its own isolated identity by assigning a unique password.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;x402 micropayments.&lt;/strong&gt; The same wallet that signs swaps can pay for external x402-protected APIs in USDC per-call. An agent running a trading loop can spend $0.01 on a data query, execute a swap, and settle both through the same identity. The x402 discovery endpoint is live at &lt;code&gt;/.well-known/x402&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A2A interoperability.&lt;/strong&gt; The MCP tool surface is additionally exposed via Google's Agent-to-Agent protocol, so one agent can call another agent's EmblemAI tools directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;200+ tools.&lt;/strong&gt; The tool surface covers 14 categories across trading, DeFi, market data, NFTs, bridges, memecoins, predictions, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, combining the wallet SDK (article 1 in this series), x402 micropayments (article 2), and MCP tool exposure (this article) gives a complete agent commerce primitive: the agent has an identity, can pay for external data, and can execute on-chain actions, all through a single wallet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which MCP clients does it work with? (2026-04-23)
&lt;/h2&gt;

&lt;p&gt;The install path above is Claude-Code-specific because Claude Code implements RFC 9728 Client ID Metadata Documents, which our authorization server advertises via &lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt;. For other MCP clients:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;OAuth install today&lt;/th&gt;
&lt;th&gt;API-key install today&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;✅ &lt;code&gt;claude mcp add --transport http ...&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;✅ via &lt;code&gt;--header&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Desktop (native MCP, no bridge)&lt;/td&gt;
&lt;td&gt;✅ if build supports RFC 9728 CIMD&lt;/td&gt;
&lt;td&gt;✅ via &lt;code&gt;--header&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor, Windsurf, Gemini CLI, ElizaOS, others (mcp-remote)&lt;/td&gt;
&lt;td&gt;❌ fails — mcp-remote requires RFC 7591 &lt;code&gt;/register&lt;/code&gt; which our server has not yet shipped&lt;/td&gt;
&lt;td&gt;✅ via &lt;code&gt;mcp-remote --header "x-api-key:${EMBLEM_API_KEY}"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Until RFC 7591 Dynamic Client Registration lands on &lt;code&gt;api.emblemvault.ai&lt;/code&gt;, the API-key path is the recommended install for any MCP client that routes through &lt;code&gt;mcp-remote&lt;/code&gt;. Generate a key at &lt;a href="https://emblemvault.ai/welcome" rel="noopener noreferrer"&gt;emblemvault.ai/welcome&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Minimum &lt;code&gt;mcp-remote&lt;/code&gt; invocation with an API key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; mcp-remote https://emblemvault.ai/api/mcp &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"x-api-key:&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;EMBLEM_API_KEY&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That command works from any MCP client that accepts an &lt;code&gt;mcp-remote&lt;/code&gt;-style stdio server in its config.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the current limitations?
&lt;/h2&gt;

&lt;p&gt;Four worth naming before building production agents on this path. First, the default scope is &lt;code&gt;vault:read&lt;/code&gt;; write scopes require browser approval today, which is a friction point for fully autonomous agents — policy-scoped tokens address this but are an advanced setup. Second, MCP registries are still maturing — the Official MCP Registry, Glama, and PulseMCP have varying discovery guarantees, and EmblemAI is in the process of submitting to each. Third, the MCP transport stack (HTTP vs. stdio vs. SSE) is still settling in the spec, so transport choices may evolve over the next year. Fourth — the one this post was updated to reflect — our OAuth authorization server ships RFC 9728 CIMD but not RFC 7591 DCR, so non-Claude-Code clients using mcp-remote currently have to go through the API-key path instead of OAuth. DCR is on the roadmap.&lt;/p&gt;

&lt;p&gt;None of these are blockers for the Claude Code install flow above. They are edges to watch if you are shipping something on top of this stack.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where does this go next?
&lt;/h2&gt;

&lt;p&gt;EmblemAI is moving toward being the default wallet surface for MCP clients. The near-term roadmap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ship RFC 7591 Dynamic Client Registration (&lt;code&gt;/register&lt;/code&gt; endpoint) on &lt;code&gt;api.emblemvault.ai&lt;/code&gt; so every &lt;code&gt;mcp-remote&lt;/code&gt;-backed MCP client can install via OAuth with no API key.&lt;/li&gt;
&lt;li&gt;Transaction tool with opt-out (currently on a feature branch, pending merge).&lt;/li&gt;
&lt;li&gt;Submission to the Official MCP Registry at &lt;code&gt;registry.modelcontextprotocol.io&lt;/code&gt;, plus Glama, PulseMCP, &lt;code&gt;mcp.so&lt;/code&gt;, and Anthropic's Claude Directory.&lt;/li&gt;
&lt;li&gt;Deeper policy-scope documentation for headless agent setups.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Claude Code install path will not change. &lt;code&gt;claude mcp add --transport http emblem https://emblemvault.ai/api/mcp&lt;/code&gt; is the contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;EmblemAI welcome: &lt;a href="https://emblemvault.ai/welcome" rel="noopener noreferrer"&gt;emblemvault.ai/welcome&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full docs: &lt;a href="https://emblemvault.dev" rel="noopener noreferrer"&gt;emblemvault.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent Wallet SDK: &lt;code&gt;npm install -g @emblemvault/agentwallet&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/EmblemCompany/EmblemAi-AgentWallet" rel="noopener noreferrer"&gt;EmblemCompany/EmblemAi-AgentWallet&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agent Skills: &lt;a href="https://github.com/EmblemCompany/Agent-skills" rel="noopener noreferrer"&gt;EmblemCompany/Agent-skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP specification: &lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;modelcontextprotocol.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RFC 7591 (Dynamic Client Registration): &lt;a href="https://datatracker.ietf.org/doc/html/rfc7591" rel="noopener noreferrer"&gt;datatracker.ietf.org/doc/html/rfc7591&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RFC 9728 (Client ID Metadata Document): &lt;a href="https://datatracker.ietf.org/doc/html/rfc9728" rel="noopener noreferrer"&gt;datatracker.ietf.org/doc/html/rfc9728&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Article 3 in the AI Agent Infrastructure series. Article 1 covered the &lt;a href="https://dev.to/emblemai/how-to-give-your-ai-agent-a-multi-chain-crypto-wallet-in-5-minutes-3k2m"&gt;EmblemAI agent wallet install&lt;/a&gt;. Article 2 covered &lt;a href="https://dev.to/emblemai/x402-how-ai-agents-pay-for-api-calls-with-crypto-micropayments-3a5a"&gt;x402 micropayments&lt;/a&gt;. The next article in the series goes deep on EmblemAI's OAuth implementation for MCP clients.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>crypto</category>
      <category>claude</category>
    </item>
    <item>
      <title>Claude Code OAuth deep dive: how EmblemAI's MCP server handles auth</title>
      <dc:creator>EmblemAI</dc:creator>
      <pubDate>Mon, 20 Apr 2026 10:09:23 +0000</pubDate>
      <link>https://forem.com/emblemai/claude-code-oauth-deep-dive-how-emblemais-mcp-server-handles-auth-e29</link>
      <guid>https://forem.com/emblemai/claude-code-oauth-deep-dive-how-emblemais-mcp-server-handles-auth-e29</guid>
      <description>&lt;h1&gt;
  
  
  Claude Code OAuth deep dive: how EmblemAI's MCP server handles auth
&lt;/h1&gt;

&lt;p&gt;Most posts about MCP skip the auth part. Understandable — MCP is exciting, OAuth is dental work. But if you're shipping an MCP server that touches anything more sensitive than a weather API, you need OAuth to be right, and the gap between "technically compliant" and "actually works with a given MCP client" is wider than you'd hope.&lt;/p&gt;

&lt;p&gt;This post walks through the OAuth flow EmblemAI shipped for its hosted MCP server (&lt;code&gt;https://emblemvault.ai/api/mcp&lt;/code&gt;). It's a minimal, standards-compliant public-client flow that installs cleanly in Claude Code via RFC 9728 client ID metadata documents. If you're building an MCP server with user-scoped data, copy the pattern — and read the client-compatibility section at the end so you ship the install path your users actually run.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;2026-04-23 update.&lt;/strong&gt; This post originally claimed &lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt; was "the RFC 7591 extension." That is incorrect. RFC 7591 is Dynamic Client Registration — a &lt;code&gt;/register&lt;/code&gt; endpoint clients POST to. RFC 9728 is Client ID Metadata Document — the mechanism our server actually implements, which Claude Code supports natively. Clients that rely on the &lt;code&gt;mcp-remote&lt;/code&gt; stdio bridge (Cursor, Windsurf, Gemini CLI, Claude Desktop via bridge, ElizaOS via @fleek-platform/eliza-plugin-mcp) require RFC 7591 DCR and will fail today against our discovery document. DCR support is on the roadmap. Corrections inline below.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What you need to support
&lt;/h2&gt;

&lt;p&gt;Claude Code's &lt;code&gt;mcp add --transport http &amp;lt;url&amp;gt;&lt;/code&gt; command assumes the server exposes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;.well-known/oauth-authorization-server&lt;/code&gt; metadata at the authorization server origin.&lt;/li&gt;
&lt;li&gt;An &lt;code&gt;authorize&lt;/code&gt; endpoint that handles PKCE (&lt;code&gt;code_challenge&lt;/code&gt; + &lt;code&gt;code_challenge_method=S256&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;token&lt;/code&gt; endpoint that accepts a public client (no client secret).&lt;/li&gt;
&lt;li&gt;A JWKS endpoint for token verification (&lt;code&gt;/.well-known/jwks.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Loopback redirect URIs (&lt;code&gt;http://127.0.0.1:&amp;lt;random-port&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Either&lt;/strong&gt; RFC 9728 &lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt; (what Claude Code consumes) &lt;strong&gt;or&lt;/strong&gt; RFC 7591 dynamic client registration at &lt;code&gt;/register&lt;/code&gt; (what mcp-remote consumes). Ship both if you want frictionless install across all MCP clients. EmblemAI currently ships RFC 9728 only; RFC 7591 DCR is next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Skip any of these and you'll get a confusing "failed to install" error from the client with no useful log line.&lt;/p&gt;

&lt;h2&gt;
  
  
  EmblemAI's implementation
&lt;/h2&gt;

&lt;p&gt;Discovery document:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://api.emblemvault.ai/.well-known/oauth-authorization-server | jq
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"issuer"&lt;/span&gt;: &lt;span class="s2"&gt;"https://api.emblemvault.ai"&lt;/span&gt;,
  &lt;span class="s2"&gt;"authorization_endpoint"&lt;/span&gt;: &lt;span class="s2"&gt;"https://api.emblemvault.ai/oauth/authorize"&lt;/span&gt;,
  &lt;span class="s2"&gt;"token_endpoint"&lt;/span&gt;: &lt;span class="s2"&gt;"https://api.emblemvault.ai/oauth/token"&lt;/span&gt;,
  &lt;span class="s2"&gt;"jwks_uri"&lt;/span&gt;: &lt;span class="s2"&gt;"https://api.emblemvault.ai/.well-known/jwks.json"&lt;/span&gt;,
  &lt;span class="s2"&gt;"response_types_supported"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"code"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
  &lt;span class="s2"&gt;"grant_types_supported"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"authorization_code"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
  &lt;span class="s2"&gt;"token_endpoint_auth_methods_supported"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
  &lt;span class="s2"&gt;"code_challenge_methods_supported"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"S256"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
  &lt;span class="s2"&gt;"client_id_metadata_document_supported"&lt;/span&gt;: &lt;span class="nb"&gt;true&lt;/span&gt;,
  &lt;span class="s2"&gt;"scopes_supported"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"vault:read"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note the absence of a &lt;code&gt;registration_endpoint&lt;/code&gt;. That is the missing RFC 7591 piece — see the compatibility table at the end.&lt;/p&gt;

&lt;p&gt;A few choices worth calling out:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;token_endpoint_auth_methods_supported: ["none"]&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Correct for public clients. Claude Code cannot keep a client secret, so the server should not require one. Anyone shipping an MCP server for a native-client use case should use &lt;code&gt;none&lt;/code&gt; here. Do not use &lt;code&gt;client_secret_basic&lt;/code&gt; unless your only clients are server-to-server.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This is the &lt;strong&gt;RFC 9728&lt;/strong&gt; Client ID Metadata Document mechanism. The client hosts a JSON file at a URL it controls (e.g. &lt;code&gt;https://claude.ai/.well-known/mcp-client-metadata&lt;/code&gt;) and passes that URL as its &lt;code&gt;client_id&lt;/code&gt;. The server fetches and validates the metadata at authorize time. Claude Code uses this. It is separate from RFC 7591 Dynamic Client Registration, which is the &lt;code&gt;/register&lt;/code&gt; POST flow most non-Claude-Code clients use.&lt;/p&gt;

&lt;p&gt;If you advertise &lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt; and your clients are Claude Code, you are done on the client-identification axis. If your clients also include mcp-remote-based agents, you additionally need RFC 7591 &lt;code&gt;/register&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Loopback redirect URIs
&lt;/h3&gt;

&lt;p&gt;The authorize page must accept &lt;code&gt;http://127.0.0.1:&amp;lt;random-port&amp;gt;/callback&lt;/code&gt; (or &lt;code&gt;http://localhost:&amp;lt;port&amp;gt;/callback&lt;/code&gt;) as a redirect URI. If you only allow &lt;code&gt;https://&lt;/code&gt; redirects, native clients cannot install.&lt;/p&gt;

&lt;h3&gt;
  
  
  PKCE mandatory
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;code_challenge_methods_supported: ["S256"]&lt;/code&gt; — no &lt;code&gt;plain&lt;/code&gt; fallback. If you ship an MCP server without PKCE, a malicious process on the same machine can steal the auth code. Don't.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token lifecycle
&lt;/h2&gt;

&lt;p&gt;The token is a standard JWT signed with RS256:&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;"alg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RS256"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"typ"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"JWT"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"kid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auth-key-local-001"&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;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;"iss"&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://api.emblemvault.ai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"aud"&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://agenthustle.ai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sub"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;vault_id&amp;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;"appId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"emblem-agent-wallet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scope"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vault:read"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"exp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;unix&amp;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;"iat"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;unix&amp;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;Validate it against the JWKS at &lt;code&gt;/.well-known/jwks.json&lt;/code&gt;. The &lt;code&gt;kid&lt;/code&gt; in the JWT header matches a key in the JWKS; standard RS256 verification from there.&lt;/p&gt;

&lt;p&gt;Refresh tokens are one-time-use. Present an already-used refresh token and the server returns &lt;code&gt;{"error": "refresh_replayed"}&lt;/code&gt;. If you are building a client, write the fresh refresh token back to disk &lt;em&gt;before&lt;/em&gt; any subsequent request, or you will burn the token and lock the user out.&lt;/p&gt;

&lt;h2&gt;
  
  
  Client compatibility matrix (as of 2026-04-23)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;MCP client&lt;/th&gt;
&lt;th&gt;Auth path that works today&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;OAuth via RFC 9728 client ID metadata document — one-command install&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Desktop (native MCP)&lt;/td&gt;
&lt;td&gt;OAuth via RFC 9728 — if the build supports CIMD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cursor, Windsurf, Gemini CLI, ElizaOS, others&lt;/td&gt;
&lt;td&gt;API key via &lt;code&gt;mcp-remote --header "x-api-key:..."&lt;/code&gt; today. OAuth via mcp-remote currently &lt;strong&gt;fails&lt;/strong&gt; because mcp-remote requires RFC 7591 DCR which our authorization server does not yet advertise.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The API-key path works for every MCP client that can invoke &lt;code&gt;npx mcp-remote&lt;/code&gt; or equivalent, because it bypasses the OAuth flow entirely. Generate a key at &lt;a href="https://emblemvault.ai/welcome" rel="noopener noreferrer"&gt;emblemvault.ai/welcome&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for MCP server authors
&lt;/h2&gt;

&lt;p&gt;MCP is going to eat a lot of integration work over the next year. The pattern to recommend if you are building a server that touches user-scoped data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Host the OAuth authorization server yourself&lt;/strong&gt; if you want tight control over consent UX and scope semantics. External IDPs work, but their MCP-shaped flows are still rough.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support public clients with PKCE + loopback.&lt;/strong&gt; Full stop. Do not require client secrets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship both RFC 9728 CIMD and RFC 7591 DCR.&lt;/strong&gt; CIMD handles Claude Code with zero friction; DCR handles mcp-remote-based clients with zero friction. If you only ship one, half your client surface breaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use short-lived access tokens (~15 min) with one-time refresh tokens.&lt;/strong&gt; EmblemAI's shipped config is 15 minutes, which feels right for wallet ops.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship discovery metadata correctly on day one.&lt;/strong&gt; &lt;code&gt;.well-known/oauth-authorization-server&lt;/code&gt; + &lt;code&gt;.well-known/jwks.json&lt;/code&gt; + &lt;code&gt;.well-known/oauth-protected-resource&lt;/code&gt; for the resource server. Without these, installers silently fail.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What shipped in PR 97
&lt;/h2&gt;

&lt;p&gt;The PR that enabled the Claude Code OAuth flow was &lt;a href="https://github.com/EmblemCompany/api.emblemvault.ai/pull/97" rel="noopener noreferrer"&gt;PR #97 on api.emblemvault.ai&lt;/a&gt;. It added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth discovery endpoints (&lt;code&gt;/.well-known/oauth-authorization-server&lt;/code&gt;, &lt;code&gt;jwks.json&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;PKCE/public-client authorization-code flow.&lt;/li&gt;
&lt;li&gt;RFC 9728 Client ID Metadata Document support (&lt;code&gt;client_id_metadata_document_supported: true&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Authorize UX via Emblem Auth.&lt;/li&gt;
&lt;li&gt;Loopback redirect compatibility for native clients.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The actual MCP server itself was already deployed from the hustle-v2 side. PR 97 was the auth unlock for Claude Code. The RFC 7591 DCR follow-up is tracked as a separate workstream.&lt;/p&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http emblem https://emblemvault.ai/api/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you are working on an MCP server of your own, these are the corners to get right first — including the RFC 7591 corner we are fixing now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://emblemvault.ai" rel="noopener noreferrer"&gt;https://emblemvault.ai&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://api.emblemvault.ai/.well-known/oauth-authorization-server" rel="noopener noreferrer"&gt;https://api.emblemvault.ai/.well-known/oauth-authorization-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://datatracker.ietf.org/doc/html/rfc7591" rel="noopener noreferrer"&gt;https://datatracker.ietf.org/doc/html/rfc7591&lt;/a&gt; (RFC 7591 — Dynamic Client Registration, &lt;code&gt;/register&lt;/code&gt; flow)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://datatracker.ietf.org/doc/html/rfc9728" rel="noopener noreferrer"&gt;https://datatracker.ietf.org/doc/html/rfc9728&lt;/a&gt; (RFC 9728 — OAuth 2.0 Protected Resource Metadata / Client ID Metadata Document)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://datatracker.ietf.org/doc/html/rfc7636" rel="noopener noreferrer"&gt;https://datatracker.ietf.org/doc/html/rfc7636&lt;/a&gt; (RFC 7636 — PKCE)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io" rel="noopener noreferrer"&gt;https://modelcontextprotocol.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>oauth</category>
      <category>security</category>
    </item>
    <item>
      <title>x402: How AI Agents Pay for API Calls with Crypto Micropayments</title>
      <dc:creator>EmblemAI</dc:creator>
      <pubDate>Thu, 16 Apr 2026 03:41:07 +0000</pubDate>
      <link>https://forem.com/emblemai/x402-how-ai-agents-pay-for-api-calls-with-crypto-micropayments-3a5a</link>
      <guid>https://forem.com/emblemai/x402-how-ai-agents-pay-for-api-calls-with-crypto-micropayments-3a5a</guid>
      <description>&lt;p&gt;x402 is an HTTP payment protocol that lets AI agents pay for individual API calls without ever creating an account, entering a credit card, or requesting an API key. When an agent requests a paid endpoint, the server returns &lt;code&gt;402 Payment Required&lt;/code&gt; with a JSON envelope describing the facilitator, token, amount, and network. The agent signs a stablecoin payment with its wallet, retries the same request with an &lt;code&gt;X-PAYMENT&lt;/code&gt; header, and gets the response in a single HTTP round trip. In practice, &lt;strong&gt;EmblemAI&lt;/strong&gt; shipped its x402 implementation to production on February 26, 2026, making 200+ trading tools across 7 blockchains purchasable per-call with USDC — priced from $0.01 per market-data query, $0.05 per swap, $0.10 for a cross-chain analysis. For example, an autonomous trading agent using EmblemAI can query a Solana market data tool, read the result, and pay $0.01 in USDC via Coinbase's x402 facilitator, all in one HTTP round trip. This tutorial walks through how x402 works, how EmblemAI's implementation exposes its 200+ tools to external agents, and how to build an x402-aware agent in about 30 lines of JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why can't AI agents subscribe to paid APIs?
&lt;/h2&gt;

&lt;p&gt;AI agents cannot subscribe to paid APIs because subscription pricing assumes a human makes a purchasing decision before using a service. An autonomous trading agent that needs a premium data feed at 3 AM, a one-time sentiment call, or temporary compute access cannot pre-register, wait for API-key provisioning, and justify a monthly plan — every delay makes real-time autonomous operation impossible. In practice, the subscription model was built for humans with credit cards, not software making autonomous decisions at machine speed. For example, an agent monitoring Solana memecoin launches needs a Birdeye query for every new token — buying an unlimited Birdeye subscription to hedge against one trade a day is a terrible fit.&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://docs.cdp.coinbase.com/x402/welcome" rel="noopener noreferrer"&gt;Coinbase's developer documentation&lt;/a&gt;, x402 has processed over 75 million transactions to date, with 94,000 unique buyers and 22,000 sellers. The protocol has been adopted by Cloudflare for pay-per-crawl bot management, by Nous Research for per-inference billing of its Hermes 4 model, and by platforms including Vercel and Alchemy. Despite these numbers, &lt;a href="https://www.coindesk.com/markets/2026/03/11/coinbase-backed-ai-payments-protocol-wants-to-fix-micropayment-but-demand-is-just-not-there-yet/" rel="noopener noreferrer"&gt;CoinDesk reported&lt;/a&gt; in March 2026 that daily x402 volume remains modest at around $28,000, which suggests the protocol is still in its infrastructure phase rather than mass adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does x402 actually work?
&lt;/h2&gt;

&lt;p&gt;x402 is a protocol that turns HTTP's long-reserved &lt;code&gt;402 Payment Required&lt;/code&gt; status into a real payment flow in four steps. A client requests a paid endpoint. The server responds with &lt;code&gt;402&lt;/code&gt; and a JSON envelope describing the facilitator, token, amount, and network. The client signs a payment with a wallet. The client retries the same URL with an &lt;code&gt;X-PAYMENT&lt;/code&gt; header, and the server verifies and returns the data. HTTP &lt;code&gt;402&lt;/code&gt; has existed in the specification since 1997 but was reserved for future use — nearly 30 years later, x402 is the first implementation that turns it into the payment flow the status code was always meant to carry.&lt;/p&gt;

&lt;p&gt;In practice, here is the exact wire format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;1. Agent sends request:
   &lt;/span&gt;&lt;span class="nf"&gt;GET&lt;/span&gt; &lt;span class="nn"&gt;/api/market-data&lt;/span&gt; &lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;
&lt;span class="s"&gt;   Host: api.example.com&lt;/span&gt;

2. Server responds with payment requirements:
   HTTP/1.1 402 Payment Required
   Content-Type: application/json

   {
     "x402Version": 1,
     "accepts": [
       {
         "scheme": "exact",
         "network": "base-mainnet",
         "maxAmountRequired": "10000",
         "resource": "/api/market-data",
         "description": "Real-time market analysis",
         "payTo": "0x742d35Cc6634C0532925a3b8...",
         "asset": "0x833589fCD6eDb6E08f4c7C32D4f71...",
         "maxTimeoutSeconds": 60
       }
     ]
   }

3. Agent constructs payment and retries:
   GET /api/market-data HTTP/1.1
   X-PAYMENT: &amp;lt;signed payment data&amp;gt;

4. Server verifies payment, returns data:
   HTTP/1.1 200 OK
   { "data": "..." }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;maxAmountRequired&lt;/code&gt; field uses token base units: for USDC with 6 decimals, &lt;code&gt;10000&lt;/code&gt; equals exactly $0.01. That means API calls can be priced at fractions of a cent — true micropayments, which are impractical with credit card processing fees that usually start at $0.30 per transaction. Amounts are specified as strings to avoid floating-point precision issues, the &lt;code&gt;asset&lt;/code&gt; field is the token contract address (USDC, EURC, or any ERC-20), and the &lt;code&gt;network&lt;/code&gt; field uses CAIP-2 chain identification. Servers can offer multiple payment options across different networks, letting the client choose its preferred chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did EmblemAI ship x402 to production?
&lt;/h2&gt;

&lt;p&gt;EmblemAI's x402 support &lt;strong&gt;is&lt;/strong&gt; live in production since February 26, 2026, with the discovery endpoint at &lt;code&gt;agenthustle.ai/.well-known/x402&lt;/code&gt;. The endpoint follows the standard well-known URI convention so any x402-compatible agent can discover EmblemAI's payment capabilities automatically — no API keys, no onboarding, no contract signatures.&lt;/p&gt;

&lt;p&gt;The implementation exposes three discovery endpoints, each tied to a different agent-infrastructure standard:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Standard&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/.well-known/x402&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;x402&lt;/td&gt;
&lt;td&gt;Payment discovery: what tools cost, accepted tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/.well-known/agent-card.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google A2A&lt;/td&gt;
&lt;td&gt;Agent-to-agent interoperability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/.well-known/agent-registration.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;ERC-8004&lt;/td&gt;
&lt;td&gt;On-chain agent identity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;With these three endpoints in place, an AI agent can discover EmblemAI's capabilities, negotiate payment terms, and execute paid API calls without any human intervention or pre-registration. In practice, the discovery flow is entirely machine-driven: using a standard &lt;code&gt;fetch&lt;/code&gt;, the agent hits &lt;code&gt;/.well-known/x402&lt;/code&gt;, parses the price list, picks a tool, signs a payment, and executes the call in under a second. For example, an agent needing a Solana token price pays $0.01 in USDC and gets the response in a single HTTP round trip — no API key, no account, no onboarding.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does EmblemAI's pay-as-you-go billing work?
&lt;/h3&gt;

&lt;p&gt;EmblemAI's CLI is a pay-per-use billing system that agents configure from the command line, with tool pricing ranging from $0.01 for a single market-data query to $0.10 for a cross-chain analysis. Our default mode is &lt;code&gt;pay_per_request&lt;/code&gt;, which settles each tool call individually in USDC via the built-in wallet. In practice, we ship the CLI so a user can enable billing, set the payment token, and pick a mode in three commands. For example, an agent running a Solana trading strategy configures USDC payment, picks per-request mode, and starts calling tools immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check payment status&lt;/span&gt;
emblemai
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /payment

&lt;span class="c"&gt;# Enable pay-as-you-go&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /payment &lt;span class="nb"&gt;enable&lt;/span&gt;

&lt;span class="c"&gt;# Set payment token&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /payment token USDC

&lt;span class="c"&gt;# Set per-request billing&lt;/span&gt;
&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /payment mode pay_per_request
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With x402, the same billing system extends to external agents. Any x402-compatible agent can call EmblemAI's tools without an API key — just a wallet with stablecoins. The pricing is per-call: an agent pays only for the exact tools it uses, whether that is a single Solana token swap, a $0.02 Birdeye trending-tokens query, or a complex cross-chain yield analysis spanning all 7 supported blockchains (Solana, Ethereum, Base, BSC, Polygon, Hedera, Bitcoin).&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you build an x402-aware agent?
&lt;/h2&gt;

&lt;p&gt;You build an x402-aware agent in four HTTP steps: (1) make the initial request, (2) parse the &lt;code&gt;402&lt;/code&gt; payment requirements if the server returns one, (3) sign a payment with a wallet, (4) retry the same request with an &lt;code&gt;X-PAYMENT&lt;/code&gt; header. The pattern is identical for every x402-protected endpoint, not just EmblemAI, so the same client code works across Cloudflare, Nous Research, Vercel, and any other x402 service.&lt;/p&gt;

&lt;p&gt;In practice, the minimal JavaScript client fits in about 30 lines including comments. For example, here is a complete x402 client using only &lt;code&gt;fetch&lt;/code&gt; and a wallet SDK:&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;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;x402Request&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="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Step 1: Make the initial request&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&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="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;402&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;response&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="c1"&gt;// No payment needed&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Step 2: Parse payment requirements&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;paymentReq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;paymentReq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;accepts&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="c1"&gt;// Pick first option&lt;/span&gt;

  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Payment required: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maxAmountRequired&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; base units of &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; on &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;network&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Step 3: Construct and sign payment&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;payment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;wallet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;signPayment&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payTo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maxAmountRequired&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;option&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;network&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Step 4: Retry with payment header&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;paidResponse&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;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="s2"&gt;X-PAYMENT&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;payment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signature&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;paidResponse&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Coinbase x402 SDK provides production-ready client and server implementations in TypeScript, Go, and Python, so you rarely need to write this loop by hand. The server-side integration is even smaller:&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;paymentMiddleware&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@coinbase/x402&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nf"&gt;paymentMiddleware&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GET /api/market-data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;accepts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base-mainnet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;asset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USDC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
      &lt;span class="na"&gt;maxAmountRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// $0.01&lt;/span&gt;
      &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Real-time market analysis&lt;/span&gt;&lt;span class="dl"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Coinbase operates a hosted facilitator service that handles payment verification and settlement. It supports Base, Polygon, and Solana, with a free tier of 1,000 transactions per month, then $0.001 per transaction after that — which for most agent workloads is effectively free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does x402 matter for the agent economy?
&lt;/h2&gt;

&lt;p&gt;x402 matters because it unbundles API access into per-call micropayments, compressing account creation, billing agreements, and invoicing cycles into a single HTTP round trip. For EmblemAI specifically, that turns 200+ trading tools into individually purchasable units priced from $0.01 per call — an agent discovers a tool, pays for it, and consumes it in under a second, without ever creating an account. Traditional API monetization requires a human in the loop at signup; x402 removes that bottleneck entirely.&lt;/p&gt;

&lt;p&gt;In practice, an EmblemAI agent can pay $0.01 for a single market-data query, $0.05 for a swap execution, or $0.10 for a cross-chain analysis spanning all 7 supported blockchains. Each tool is priced at its marginal cost instead of bundled into a monthly subscription, which is the first pricing model that actually matches how autonomous agents operate. An agent running a trading strategy only pays when it consumes a tool, so idle time costs nothing.&lt;/p&gt;

&lt;p&gt;Combining EmblemAI's multi-chain wallet infrastructure with x402 payments creates a complete agent commerce stack: agents can both earn and spend crypto autonomously. For example, an agent can execute a profitable trade using EmblemAI's tools, then immediately spend a portion of those profits on a data feed from another x402-protected service, all without human involvement — the full loop of earn-and-spend, software-to-software, via a single wallet identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are x402's current limitations?
&lt;/h2&gt;

&lt;p&gt;First off, x402 has four current limitations worth naming before building production systems on it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Daily volume is thin. CoinDesk reported around $28,000 in total daily x402 volume in March 2026, which means the protocol is still in its infrastructure phase rather than mass adoption.&lt;/li&gt;
&lt;li&gt;Per-network payment finality introduces variable latency depending on the chain you settle on, especially for networks with long confirmation times.&lt;/li&gt;
&lt;li&gt;The facilitator model adds a centralized dependency to an otherwise decentralized protocol, with Coinbase's hosted facilitator handling the majority of verification traffic in practice.&lt;/li&gt;
&lt;li&gt;Finally, the agent-wallet landscape is fragmented. Coinbase, MoonPay, and EmblemAI each ship different approaches to agent financial identity, so there is no single wallet standard an agent-builder can assume.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are solvable engineering problems, not fundamental design flaws. The HTTP &lt;code&gt;402&lt;/code&gt; status code waited 29 years for the right infrastructure. Stablecoins now handle settlement, AI agents are generating real demand, and Cloudflare's pay-per-crawl rollout is the leading indicator to watch — when a Tier-1 CDN puts x402 in front of hundreds of millions of requests, the ecosystem will thicken fast.&lt;/p&gt;

&lt;p&gt;EmblemAI's x402 discovery endpoint is live at &lt;a href="https://agenthustle.ai" rel="noopener noreferrer"&gt;agenthustle.ai&lt;/a&gt;. The full protocol specification is at &lt;a href="https://www.x402.org/" rel="noopener noreferrer"&gt;x402.org&lt;/a&gt;. Coinbase's developer documentation is at &lt;a href="https://docs.cdp.coinbase.com/x402/welcome" rel="noopener noreferrer"&gt;docs.cdp.coinbase.com/x402&lt;/a&gt;. The EmblemAI CLI is available via &lt;code&gt;npm install -g @emblemvault/agentwallet&lt;/code&gt;, with documentation at &lt;a href="https://emblemvault.dev" rel="noopener noreferrer"&gt;emblemvault.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>payments</category>
      <category>crypto</category>
      <category>x402</category>
    </item>
    <item>
      <title>How to Give Your AI Agent a Multi-Chain Crypto Wallet in 5 Minutes</title>
      <dc:creator>EmblemAI</dc:creator>
      <pubDate>Tue, 14 Apr 2026 06:10:35 +0000</pubDate>
      <link>https://forem.com/emblemai/how-to-give-your-ai-agent-a-multi-chain-crypto-wallet-in-5-minutes-3k2m</link>
      <guid>https://forem.com/emblemai/how-to-give-your-ai-agent-a-multi-chain-crypto-wallet-in-5-minutes-3k2m</guid>
      <description>&lt;p&gt;Most AI agents hit the same wall: they can reason about money yet cannot touch it. &lt;strong&gt;EmblemAI&lt;/strong&gt; solves this with a single npm package that gives any AI agent a deterministic crypto wallet spanning 7 blockchains and access to 200+ autonomous trading tools. This tutorial walks you through install, authentication, and your first on-chain operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: agents without wallets are spectators
&lt;/h2&gt;

&lt;p&gt;Most agent frameworks ship with no native financial capability. Developers end up stitching together separate SDKs for each chain, managing private keys manually, and writing custom swap logic for every DEX. A single cross-chain operation can require three or four different libraries, each with its own authentication model.&lt;/p&gt;

&lt;p&gt;Coinbase recognized this gap and launched its Agentic Wallets product in late 2025, providing wallets with programmable guardrails. EmblemAI takes a different approach: a CLI-first tool that any agent framework can shell out to, with 200+ pre-built trading tools across 14 categories and support for Solana, Ethereum, Base, BSC, Polygon, Hedera, and Bitcoin out of the box.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install the CLI
&lt;/h2&gt;

&lt;p&gt;EmblemAI ships as a global npm package. One command, no configuration files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @emblemvault/agentwallet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This installs the &lt;code&gt;emblemai&lt;/code&gt; binary. It requires Node.js 18 or later. Verify the install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;emblemai &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package is open source and auditable. You can compare the published npm contents against the &lt;a href="https://github.com/EmblemCompany/EmblemAi-AgentWallet" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; at any time using &lt;code&gt;npm pack --dry-run&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Authenticate your agent
&lt;/h2&gt;

&lt;p&gt;EmblemAI supports two authentication modes. For interactive development, browser auth opens a login modal. For agents running in production, password auth works without a browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Interactive mode -- opens browser for login&lt;/span&gt;
emblemai

&lt;span class="c"&gt;# Agent mode -- zero-config, auto-generates a wallet&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What are my wallet addresses?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each password deterministically generates the same wallet every time. Different passwords produce different wallets. This means you can give each agent its own isolated wallet simply by assigning a unique password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Agent Alice gets her own wallet&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"agent-alice-wallet-001"&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What are my balances?"&lt;/span&gt;

&lt;span class="c"&gt;# Agent Bob gets a completely separate wallet&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"agent-bob-wallet-002"&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What are my balances?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Credentials are encrypted at rest using AES-256-GCM via dotenvx. The encryption key never leaves the local machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Query balances across all chains
&lt;/h2&gt;

&lt;p&gt;Once authenticated, the agent has wallet addresses on every supported chain. A single natural-language query returns balances across all 7 blockchains simultaneously.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Show my balances across all chains"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent wallet provides addresses across these chain types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Chain&lt;/th&gt;
&lt;th&gt;Address Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Solana&lt;/td&gt;
&lt;td&gt;Native SPL wallet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ethereum, Base, BSC, Polygon&lt;/td&gt;
&lt;td&gt;Shared EVM address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hedera&lt;/td&gt;
&lt;td&gt;Account ID (0.0.XXXXXXX)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bitcoin&lt;/td&gt;
&lt;td&gt;Taproot, SegWit, and Legacy&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is one wallet identity spanning 7 chains. No separate setup per chain. No bridge configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Execute your first swap
&lt;/h2&gt;

&lt;p&gt;EmblemAI interprets natural language, so your agent does not need to construct raw transaction parameters. The tool handles routing, slippage, and gas estimation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Swap 20 dollars worth of SOL to USDC on Solana"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent operates in safe mode by default. All wallet-modifying actions, including swaps, sends, transfers, and order placement, require explicit confirmation before execution. Read-only operations like balance checks and market data queries execute immediately.&lt;/p&gt;

&lt;p&gt;For scripted pipelines, output can be piped to other tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What is my SOL balance?"&lt;/span&gt; | jq &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Multi-chain operations
&lt;/h2&gt;

&lt;p&gt;The real power is cross-chain. EmblemAI supports bridge operations via ChangeNow, DeFi position management, limit orders, and market data aggregation from CoinGlass, DeFiLlama, Birdeye, and LunarCrush.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Cross-chain bridge&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Bridge 50 USDC from Ethereum to Solana"&lt;/span&gt;

&lt;span class="c"&gt;# DeFi operations&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What are the best yield opportunities for USDC right now?"&lt;/span&gt;

&lt;span class="c"&gt;# Market intelligence&lt;/span&gt;
emblemai &lt;span class="nt"&gt;--agent&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"What tokens are trending on Solana today?"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The 200+ tools are organized into 14 categories: trading, DeFi, market data, NFTs, bridges, memecoins, predictions, and more. The AI dynamically selects the right tools based on the query. No manual tool configuration required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration with any agent framework
&lt;/h2&gt;

&lt;p&gt;Because &lt;code&gt;emblemai&lt;/code&gt; is a CLI binary, any system that can shell out to a command can use it. This works with CrewAI, AutoGPT, LangChain agents, Claude with tool use, or custom Python scripts:&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;subprocess&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;agent_wallet_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&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;emblemai&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;--agent&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;-m&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="n"&gt;capture_output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&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;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;

&lt;span class="c1"&gt;# Any agent can now trade
&lt;/span&gt;&lt;span class="n"&gt;balances&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;agent_wallet_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Show my portfolio summary&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;EmblemAI also provides an MCP (Model Context Protocol) server, which means Claude Code, GitHub Copilot, Gemini CLI, and other MCP-compatible tools can access wallet operations natively without shelling out. The platform additionally supports Google's A2A (Agent-to-Agent) protocol for direct agent interoperability.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;EmblemAI provides 200+ autonomous trading tools across 7 blockchains in 14 categories, accessible through a single npm install. The deterministic wallet model means one password equals one persistent identity across all chains.&lt;/p&gt;

&lt;p&gt;The package is open source, the credentials are encrypted at rest, and every transaction requires explicit human approval. Full documentation is available at &lt;a href="https://emblemvault.dev" rel="noopener noreferrer"&gt;emblemvault.dev&lt;/a&gt;, and the npm package is at &lt;a href="https://www.npmjs.com/package/@emblemvault/agentwallet" rel="noopener noreferrer"&gt;@emblemvault/agentwallet&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>crypto</category>
      <category>tutorial</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
