<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: CAI</title>
    <description>The latest articles on DEV Community by CAI (@cailab).</description>
    <link>https://dev.to/cailab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4008187%2F53ebe87b-4371-40f5-972c-f98143974a5f.png</url>
      <title>DEV Community: CAI</title>
      <link>https://dev.to/cailab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cailab"/>
    <language>en</language>
    <item>
      <title>Build an AI Agent That Reads Invoices and Pays Them: A CAI Tutorial</title>
      <dc:creator>CAI</dc:creator>
      <pubDate>Fri, 24 Jul 2026 06:35:45 +0000</pubDate>
      <link>https://dev.to/cailab/build-an-ai-agent-that-reads-invoices-and-pays-them-a-cai-tutorial-1i35</link>
      <guid>https://dev.to/cailab/build-an-ai-agent-that-reads-invoices-and-pays-them-a-cai-tutorial-1i35</guid>
      <description>&lt;h2&gt;
  
  
  Build an AI Agent That Reads Invoices and Pays Them: A CAI Tutorial
&lt;/h2&gt;

&lt;p&gt;Most AI agents today can reason, plan, and call APIs. But give one a PDF invoice and ask it to pay the bill, and it stops cold. The agent can't read your email to find the invoice. It can't check its wallet balance. It has no wallet at all.&lt;/p&gt;

&lt;p&gt;This tutorial walks through building an agent that does the full loop: read an invoice from email, check the balance, and pay the bill. All via CAI's MCP API, no external wallet or email provider needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install the CAI MCP Server
&lt;/h3&gt;

&lt;p&gt;The CAI MCP server exposes email, wallet, vault, and identity tools as standard MCP tools. Install it with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @cailab/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure the MCP host. In your Claude Desktop config, Cursor MCP settings, or Hermes agent config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cai"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@cailab/mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"CAI_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"cai_..."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Get your API key at &lt;code&gt;https://cai.com/app&lt;/code&gt; with at least &lt;code&gt;read&lt;/code&gt; scope for identity and balance checks, and &lt;code&gt;pay&lt;/code&gt; or &lt;code&gt;full&lt;/code&gt; scope for transfers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Verify the Agent Identity
&lt;/h3&gt;

&lt;p&gt;Every CAI API call starts with identity verification. The first call returns the user's &lt;code&gt;@cai.com&lt;/code&gt; email, linked wallet addresses, and account status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/get-identity &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response includes &lt;code&gt;linked_wallets&lt;/code&gt; with chain addresses and a &lt;code&gt;wallet_binding&lt;/code&gt; object. This is the agent's on-chain identity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Read the Inbox for Invoices
&lt;/h3&gt;

&lt;p&gt;The CAI email product gives every user a &lt;code&gt;@cai.com&lt;/code&gt; address. The &lt;code&gt;mail-chat&lt;/code&gt; endpoint lets the agent ask natural-language questions about recent mail:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/mail-chat &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"message": "Show me the most recent invoice or payment request from the last 7 days"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For structured extraction, use &lt;code&gt;mail-summarize-actions&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/mail-summarize-actions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns a structured summary with suggested actions, including copyable codes and openable URLs from the email content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Check the Wallet Balance
&lt;/h3&gt;

&lt;p&gt;Before paying, the agent checks the wallet on the relevant chain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/get-wallet-balances &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"chains": ["ETH", "BASE", "POLYGON"]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response shows balances for native tokens plus USDC, USDT, and DAI on each chain. If the balance is short, the agent can mint a deposit link:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/create-hosted-action &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"action_type": "deposit"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CAI's $200/day auto-limit protects against overspend, and every new recipient triggers a confirmation step before funds move.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Resolve the Payee and Transfer
&lt;/h3&gt;

&lt;p&gt;The agent resolves the recipient's &lt;code&gt;@cai.com&lt;/code&gt; address to a wallet address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/resolve-transfer-recipient &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"chain": "ETH", "to_email": "vendor@cai.com"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response returns &lt;code&gt;canonical_email&lt;/code&gt; and &lt;code&gt;to_address&lt;/code&gt;. The agent presents the full details to the user: recipient, amount, token, chain, and the irreversible nature of the action. Once confirmed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/wallet-custodial-transfer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "chain": "ETH",
    "token": "usdc",
    "amount": "49.99",
    "to_email": "vendor@cai.com"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent then confirms the payment with &lt;code&gt;wallet-activity-list&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/wallet-activity-list &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"limit": 5, "direction": "out"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 6: Store Recurring Payment Credentials
&lt;/h3&gt;

&lt;p&gt;For recurring bills, the vault stores site credentials so the agent can log in and download invoices on future cycles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://api.cai.com/functions/v1/user-site-credentials &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "origin_url": "https://vendor.com",
    "kind": "password",
    "payload": {"username": "user@cai.com", "password": "..."}
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The vault product is under active development and will expand to support automated credential rotation and session refresh.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Full Agent Loop
&lt;/h3&gt;

&lt;p&gt;Putting it all together, the agent's bill-pay flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User says "pay the electric bill"&lt;/li&gt;
&lt;li&gt;Agent calls &lt;code&gt;mail-chat&lt;/code&gt; to find the latest invoice email&lt;/li&gt;
&lt;li&gt;Agent extracts the amount and due date&lt;/li&gt;
&lt;li&gt;Agent calls &lt;code&gt;get-wallet-balances&lt;/code&gt; to confirm sufficient funds&lt;/li&gt;
&lt;li&gt;Agent resolves the payee with &lt;code&gt;resolve-transfer-recipient&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Agent presents the details to the user for confirmation&lt;/li&gt;
&lt;li&gt;User confirms, agent calls &lt;code&gt;wallet-custodial-transfer&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Agent confirms the payment landed via &lt;code&gt;wallet-activity-list&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Agent vaults the site credentials for next month&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This loop is the same pattern whether the agent is paying an invoice, topping up an API credit account, or settling a marketplace order. The cash-in-pocket framing means the agent never needs a private key in chat, and every transfer is custodial, auditable, and reversible on the chain level.&lt;/p&gt;




&lt;h2&gt;
  
  
  If you tried this and hit a bug
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comment below with:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you ran&lt;/strong&gt; -- the install command, the request, the MCP host config. Copy the actual command or request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you expected&lt;/strong&gt; -- one sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you got&lt;/strong&gt; -- the error message, the empty response, the unexpected behavior. Paste it verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your environment&lt;/strong&gt; -- OS, Node version, the MCP host (OpenClaw / Hermes / Codex / Cursor / other), the CAI account tier if relevant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every comment on this article gets read. Bug reports will be replied to within 24 hours. Friction points shape what we document next.&lt;/p&gt;

&lt;p&gt;Documentation: &lt;code&gt;cai.com/skill.md&lt;/code&gt; · &lt;code&gt;cai.com/developers.html&lt;/code&gt; · &lt;code&gt;cai.com/app&lt;/code&gt; to sign up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The four product pillars of @cai.com - email, wallet, vault, agent surface</title>
      <dc:creator>CAI</dc:creator>
      <pubDate>Wed, 22 Jul 2026 07:37:22 +0000</pubDate>
      <link>https://dev.to/cailab/the-four-product-pillars-of-caicom-email-wallet-vault-agent-surface-5cik</link>
      <guid>https://dev.to/cailab/the-four-product-pillars-of-caicom-email-wallet-vault-agent-surface-5cik</guid>
      <description>&lt;h1&gt;
  
  
  The four product pillars of &lt;a class="mentioned-user" href="https://dev.to/cai"&gt;@cai&lt;/a&gt;.com - email, wallet, vault, agent surface
&lt;/h1&gt;

&lt;p&gt;Four things come with a free &lt;code&gt;@cai.com&lt;/code&gt; email. This post walks through each one in detail, with the actual API calls and the install commands. If you read the &lt;a href="https://dev.to/cailab/caicom-a-custodial-caicom-email-multi-chain-stablecoin-wallet-and-mcp-installable-agent-api-6m3"&gt;launch post&lt;/a&gt; first, this is the deep-dive; if you didn't, this stands alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The email itself
&lt;/h2&gt;

&lt;p&gt;A real inbox at &lt;code&gt;@cai.com&lt;/code&gt;. Send and receive mail like any other address. The signup gives you the address; the dashboard gives you the SMTP/IMAP credentials if you want to use a desktop client.&lt;/p&gt;

&lt;p&gt;The mail surface is exposed to agents via the CAI API. An agent can read and summarize mail on your behalf (&lt;code&gt;POST /mail-chat&lt;/code&gt;), send mail (&lt;code&gt;POST /send-email&lt;/code&gt;), and fetch structured summaries (&lt;code&gt;POST /mail-summarize-actions&lt;/code&gt;). Every read and every send is a scoped API call, gated on your API key and your confirmation pattern for outbound messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The custodial multi-chain stablecoin wallet
&lt;/h2&gt;

&lt;p&gt;A custodial wallet means you do not hold the private key. CAI holds it. You get a &lt;code&gt;@cai.com&lt;/code&gt; address on each of six chains, and can pay, transfer, convert, and bridge from any of them. External wallets are supported - connect a MetaMask or a Ledger and you keep custody of your external assets while using CAI for the day-to-day.&lt;/p&gt;

&lt;p&gt;The wallet API (per &lt;code&gt;cai.com/skill.md&lt;/code&gt;):&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 balances on one or more chains&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.cai.com/functions/v1/get-wallet-balances &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"chains": ["base", "polygon"]}'&lt;/span&gt;

&lt;span class="c"&gt;# Send a payment (returns a hosted-action URL for user confirmation)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.cai.com/functions/v1/wallet-custodial-transfer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "to_address": "0x...",
    "amount": "10.00",
    "chain": "base",
    "token": "USDC"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response to &lt;code&gt;wallet-custodial-transfer&lt;/code&gt; includes a hosted-action URL. The user opens it, taps once, and the payment goes through. The agent polls &lt;code&gt;GET /transfer-status&lt;/code&gt; for the receipt.&lt;/p&gt;

&lt;p&gt;The wallet is custodial. That word does a lot of work, and it matters. The user-confirmation pattern is the difference from self-custody: no private key in chat, no manual signature, one tap on a page CAI hosts.&lt;/p&gt;

&lt;p&gt;$200/day auto-limit while CAI completes its security audit. New recipients and new devices always require confirmation. Think of it like cash in your pocket -- perfect for daily spending. The vault product (multi-sig, time-locks) is coming for larger balances.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The user vault for site credentials
&lt;/h2&gt;

&lt;p&gt;The vault is for &lt;em&gt;your&lt;/em&gt; site credentials - the logins and passwords you have scattered across a hundred sites. When the agent you build needs to log in to one of those sites, the agent retrieves the credential from the vault (with your explicit confirmation), uses it for the action, and you do not re-type the password.&lt;/p&gt;

&lt;p&gt;The vault is &lt;strong&gt;not&lt;/strong&gt; for the agent's API key. The agent's &lt;code&gt;CAI_API_KEY&lt;/code&gt; is a separate secret, used by the agent to call CAI's API. Storing it in the vault is a circular dependency. The vault is for the third-party sites the agent logs in to on your behalf.&lt;/p&gt;

&lt;p&gt;The vault API (per &lt;code&gt;cai.com/skill.md&lt;/code&gt; §6.3):&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;# Save a site credential (user action)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.cai.com/functions/v1/user-site-credentials &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "origin_url": "https://example.com",
    "kind": "password",
    "payload": {
      "username": "alice",
      "password": "..."
    }
  }'&lt;/span&gt;

&lt;span class="c"&gt;# List saved credentials (metadata only, no decrypted payload)&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; GET https://api.cai.com/functions/v1/user-site-credentials &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The vault entries are encrypted at rest, indexed by site, retrievable via the CAI API. You can revoke any vault entry from the account dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The agent surface
&lt;/h2&gt;

&lt;p&gt;For the agent you build (or the agent you use), the surface is the MCP server, the contract, and the API.&lt;/p&gt;

&lt;p&gt;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;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @cailab/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The contract: &lt;code&gt;cai.com/skill.md&lt;/code&gt; - the canonical source-of-truth, written in a format agents parse.&lt;/p&gt;

&lt;p&gt;The discovery surface for other agents: &lt;code&gt;cai.com/.well-known/agent.json&lt;/code&gt; - the A2A Agent Card.&lt;/p&gt;

&lt;p&gt;The API: &lt;code&gt;https://api.cai.com/functions/v1&lt;/code&gt; - the HTTPS Edge API. The MCP server is a thin wrapper that makes the calls typed and convenient for the agent.&lt;/p&gt;

&lt;p&gt;The MCP server drops into any MCP host: OpenClaw, Hermes, Codex, Cursor. Once installed, the agent's tool surface includes CAI. The agent's first call is &lt;code&gt;GET /get-identity&lt;/code&gt; to confirm the user has a CAI account; if they don't, the agent can show them the signup URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent surface next
&lt;/h2&gt;

&lt;p&gt;If you want the API surface, &lt;code&gt;cai.com/skill.md&lt;/code&gt; is the canonical source. The signup flow at &lt;code&gt;cai.com/app&lt;/code&gt; is four steps, about 2 minutes, no card.&lt;/p&gt;

&lt;p&gt;Apply at &lt;code&gt;cai.com/app&lt;/code&gt;. The npm package is on the npm registry. The contract is at &lt;code&gt;cai.com/skill.md&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  If you tried any of the four product pillars in this article
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comment below with:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you ran&lt;/strong&gt; - the install command, the request, the MCP host config. Copy the actual command or request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you expected&lt;/strong&gt; - one sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you got&lt;/strong&gt; - the error message, the empty response, the unexpected behavior. Paste it verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your environment&lt;/strong&gt; - OS, Node version, the MCP host (OpenClaw / Hermes / Codex / Cursor / other), the CAI account tier if relevant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every comment on this article gets read. Bug reports will be replied to within 24 hours. Friction points shape what we document next.&lt;/p&gt;

&lt;p&gt;Documentation: &lt;code&gt;cai.com/skill.md&lt;/code&gt; · &lt;code&gt;cai.com/developers.html&lt;/code&gt; · &lt;code&gt;cai.com/app&lt;/code&gt; to sign up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What does the @cai.com wallet actually do? — six chains, external wallets, MoonPay</title>
      <dc:creator>CAI</dc:creator>
      <pubDate>Fri, 10 Jul 2026 06:44:09 +0000</pubDate>
      <link>https://dev.to/cailab/what-does-the-caicom-wallet-actually-do-six-chains-external-wallets-moonpay-50p6</link>
      <guid>https://dev.to/cailab/what-does-the-caicom-wallet-actually-do-six-chains-external-wallets-moonpay-50p6</guid>
      <description>&lt;h1&gt;
  
  
  What does the &lt;a class="mentioned-user" href="https://dev.to/cai"&gt;@cai&lt;/a&gt;.com wallet actually do?
&lt;/h1&gt;

&lt;p&gt;A custodial multi-chain stablecoin wallet comes with every &lt;code&gt;@cai.com&lt;/code&gt; account. No separate signup, no additional KYC beyond the email verification. This post covers what the wallet is, what it supports, and how to use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Six chains, one custodial account
&lt;/h2&gt;

&lt;p&gt;The wallet gives you a &lt;code&gt;@cai.com&lt;/code&gt; address on each of six chains. You can pay, transfer, convert, and bridge from any of them without managing six separate private keys. The custodial model means CAI holds the key; you hold the address and the user-confirmation tap.&lt;/p&gt;

&lt;h2&gt;
  
  
  External wallets supported
&lt;/h2&gt;

&lt;p&gt;Connect a MetaMask, a Ledger, or any external wallet. The external wallet appears as a linked subwallet in your balance view — you keep custody of your external assets while using the CAI wallet for day-to-day transfers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Topping up
&lt;/h2&gt;

&lt;p&gt;To add funds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send from an external wallet&lt;/strong&gt; to your CAI custodial address on the chosen chain. The address is in the account dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buy with MoonPay&lt;/strong&gt; — fiat on-ramp via the account dashboard. Partial-live in some regions (KYC and region limits apply per &lt;code&gt;cai.com/capabilities.html&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WeChat Pay&lt;/strong&gt; — documented in &lt;code&gt;cai.com/capabilities.html&lt;/code&gt; under the Payment options section.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The wallet API
&lt;/h2&gt;

&lt;p&gt;For the technical reader, the wallet surface is available through the CAI API. Check balances:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.cai.com/functions/v1/get-wallet-balances &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"chains": ["base", "polygon"]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Send a payment (returns a hosted-action URL for user confirmation):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.cai.com/functions/v1/wallet-custodial-transfer &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer ***"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "to_address": "0x...",
    "amount": "10.00",
    "chain": "base",
    "token": "USDC"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every transfer needs the user's confirmation on a hosted-action page — one tap, no private key in chat.&lt;/p&gt;

&lt;p&gt;The wallet API is documented in &lt;code&gt;cai.com/skill.md&lt;/code&gt;. The dashboard is at &lt;code&gt;cai.com/app&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  If you tried any of the four product pillars in this article
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comment below with:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you ran&lt;/strong&gt; — the install command, the request, the MCP host config. Copy the actual command or request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you expected&lt;/strong&gt; — one sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you got&lt;/strong&gt; — the error message, the empty response, the unexpected behavior. Paste it verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your environment&lt;/strong&gt; — OS, Node version, the MCP host (OpenClaw / Hermes / Codex / Cursor / other), the CAI account tier if relevant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every comment on this article gets read. Bug reports will be replied to within 24 hours. Friction points shape what we document next.&lt;/p&gt;

&lt;p&gt;Documentation: &lt;code&gt;cai.com/skill.md&lt;/code&gt; · &lt;code&gt;cai.com/developers.html&lt;/code&gt; · &lt;code&gt;cai.com/app&lt;/code&gt; to sign up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>CAI.com — a custodial @cai.com email, multi-chain stablecoin wallet, and MCP-installable agent API</title>
      <dc:creator>CAI</dc:creator>
      <pubDate>Sat, 04 Jul 2026 15:42:03 +0000</pubDate>
      <link>https://dev.to/cailab/caicom-a-custodial-caicom-email-multi-chain-stablecoin-wallet-and-mcp-installable-agent-api-6m3</link>
      <guid>https://dev.to/cailab/caicom-a-custodial-caicom-email-multi-chain-stablecoin-wallet-and-mcp-installable-agent-api-6m3</guid>
      <description>&lt;h1&gt;
  
  
  CAI.com — a custodial &lt;a class="mentioned-user" href="https://dev.to/cai"&gt;@cai&lt;/a&gt;.com email, multi-chain stablecoin wallet, and MCP-installable agent API
&lt;/h1&gt;

&lt;p&gt;A custodial email, a stablecoin wallet, a credential vault, and an agent-ready API — all at one &lt;code&gt;@cai.com&lt;/code&gt; address.&lt;/p&gt;

&lt;p&gt;This post walks through what CAI is, what you get when you sign up, and how to wire the agent side into any MCP-compatible host.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get at cai.com/app
&lt;/h2&gt;

&lt;p&gt;A free &lt;code&gt;@cai.com&lt;/code&gt; email comes with four product surfaces, all under one account:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A real inbox at &lt;code&gt;@cai.com&lt;/code&gt;.&lt;/strong&gt; Send and receive mail like any other address. The signup gives you the address; the dashboard gives you the SMTP/IMAP credentials if you want to use a desktop client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A custodial multi-chain stablecoin wallet.&lt;/strong&gt; Built in. Six chains. External wallets supported. MoonPay for fiat on-ramp (partial-live, third-party KYC and region limits apply — see &lt;code&gt;cai.com/capabilities.html&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A user vault for site credentials.&lt;/strong&gt; Store website logins and passwords. The agent you build retrieves them when needed, with your explicit confirmation. The vault is for &lt;em&gt;your&lt;/em&gt; site credentials, not the agent's API key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An API key for the agent you build or use.&lt;/strong&gt; Free tier covers read scopes; &lt;code&gt;pay&lt;/code&gt; and &lt;code&gt;full&lt;/code&gt; scopes may require verification. The key is in the account dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the signup works
&lt;/h2&gt;

&lt;p&gt;The signup at &lt;code&gt;cai.com/app&lt;/code&gt; is four steps. About 2 minutes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;code&gt;cai.com/app&lt;/code&gt;. Pick "Apply for &lt;code&gt;@cai.com&lt;/code&gt; email."&lt;/li&gt;
&lt;li&gt;Enter your name. That's the only field on the first screen.&lt;/li&gt;
&lt;li&gt;CAI emails a 6-digit verification code to the address you provide. The code expires in 15 minutes. The email has a one-time link, not the code — copy the code from the email and paste it into the form.&lt;/li&gt;
&lt;li&gt;Enter the code, create a password, and you're done.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the end you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;code&gt;@cai.com&lt;/code&gt; email address.&lt;/li&gt;
&lt;li&gt;A custodial multi-chain stablecoin wallet.&lt;/li&gt;
&lt;li&gt;A user vault for site credentials.&lt;/li&gt;
&lt;li&gt;An API key for the agent you build or use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No card. The email is free.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agent side (for the technical reader)
&lt;/h2&gt;

&lt;p&gt;For the technical reader, the agent side is the reason to look at CAI. The install is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; @cailab/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The package is the MCP server — a thin wrapper around the CAI HTTPS Edge API at &lt;code&gt;https://api.cai.com/functions/v1&lt;/code&gt;. It drops into MCP-compatible hosts including OpenClaw, Hermes, Codex, and Cursor (see &lt;code&gt;cai.com/developers.html&lt;/code&gt; for the current host list). Once installed, the agent can call &lt;code&gt;GET /get-identity&lt;/code&gt;, &lt;code&gt;POST /get-wallet-balances&lt;/code&gt;, &lt;code&gt;POST /wallet-custodial-transfer&lt;/code&gt;, and the rest of the CAI surface — without the user pasting a private key in chat.&lt;/p&gt;

&lt;p&gt;The contract an agent reads first is &lt;code&gt;cai.com/skill.md&lt;/code&gt;. It's the canonical source-of-truth for what CAI can do, written in a format agents parse. The companion artifact is the A2A Agent Card at &lt;code&gt;cai.com/.well-known/agent.json&lt;/code&gt; — that's how agents discover CAI in agent-to-agent registries.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you tried this and hit a bug
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Comment below with:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What you ran&lt;/strong&gt; — the install command, the request, the MCP host config. Copy the actual command or request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you expected&lt;/strong&gt; — one sentence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What you got&lt;/strong&gt; — the error message, the empty response, the unexpected behavior. Paste it verbatim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your environment&lt;/strong&gt; — OS, Node version, the MCP host (OpenClaw / Hermes / Codex / Cursor / other), the CAI account tier if relevant.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every comment on this article gets read. Bug reports will be replied to within 24 hours. Friction points shape what we document next.&lt;/p&gt;

&lt;p&gt;Documentation: &lt;code&gt;cai.com/skill.md&lt;/code&gt; · &lt;code&gt;cai.com/developers.html&lt;/code&gt; · &lt;code&gt;cai.com/app&lt;/code&gt; to sign up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
