<?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: Ricardo Cuba</title>
    <description>The latest articles on DEV Community by Ricardo Cuba (@ricardo_cuba).</description>
    <link>https://dev.to/ricardo_cuba</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%2F3923961%2F08670c7b-77ea-4739-8461-7f7bd3e804a4.jpeg</url>
      <title>DEV Community: Ricardo Cuba</title>
      <link>https://dev.to/ricardo_cuba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ricardo_cuba"/>
    <language>en</language>
    <item>
      <title>VTEX, Magento, and Retail APIs — A Developer's Guide to Commerce Data</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Wed, 24 Jun 2026 00:12:58 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/vtex-magento-and-retail-apis-a-developers-guide-to-commerce-data-1501</link>
      <guid>https://dev.to/ricardo_cuba/vtex-magento-and-retail-apis-a-developers-guide-to-commerce-data-1501</guid>
      <description>&lt;h2&gt;
  
  
  What we learned integrating 41 LATAM retailers — and how you can do it without losing your mind.
&lt;/h2&gt;




&lt;p&gt;If you've ever tried to integrate a VTEX or Magento store's API, you know the drill: read the docs (which may or may not be current), get an API key (which may or may not work), figure out the product schema (which is different for every store), handle rate limits (undocumented), and pray nothing breaks when the retailer updates their frontend next week.&lt;/p&gt;

&lt;p&gt;We've done this 41 times. Here's what we learned.&lt;/p&gt;




&lt;h1&gt;
  
  
  VTEX: The Good, The Bad, and The API
&lt;/h1&gt;

&lt;p&gt;VTEX powers most major retailers in LATAM — Wong, Metro, Plaza Vea, Carrefour, Éxito, and dozens more. It has a well-documented REST API.&lt;/p&gt;




&lt;h1&gt;
  
  
  What works
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Search API&lt;/strong&gt; (&lt;code&gt;/api/catalog_system/pub/products/search&lt;/code&gt;) — reliable, structured product data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pagination&lt;/strong&gt; — cursor-based, predictable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product details&lt;/strong&gt; — consistent schema for price, name, description&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  What doesn't
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth varies by store&lt;/strong&gt; — some use &lt;code&gt;X-VTEX-API-AppKey&lt;/code&gt; + token, others custom headers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate limits are undisclosed&lt;/strong&gt; — you discover them by getting 429'd&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product IDs are not globally unique&lt;/strong&gt; — same SKU, different IDs across stores&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image URLs expire&lt;/strong&gt; — cached URLs break after hours/days&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Code: querying VTEX search
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;python&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_vtex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&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="n"&gt;query&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="n"&gt;key&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="n"&gt;token&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="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/api/catalog_system/pub/products/search/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-VTEX-API-AppKey&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-VTEX-API-AppToken&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;AsyncClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&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;resp&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Magento: GraphQL When It Works
&lt;/h1&gt;

&lt;p&gt;Magento stores expose a GraphQL endpoint. Flexible in theory, fragmented in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pros:&lt;/strong&gt; GraphQL introspection, single endpoint, field selection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cons:&lt;/strong&gt; Version fragmentation (2.3 vs 2.4), OAuth 2.0 complexity, some stores disable introspection, nested pricing (&lt;code&gt;price_range.minimum_price.regular_price.value&lt;/code&gt; — yes, that's a real path).&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  The normalization problem
&lt;/h1&gt;

&lt;p&gt;The hardest part isn't querying 41 APIs. It's normalizing the results:&lt;/p&gt;

&lt;p&gt;"1kg arroz" ≠ "arroz 1000g" ≠ "arroz x1kg" ≠ "Arroz Extra 1Kg"&lt;/p&gt;

&lt;p&gt;Our normalizer handles unit conversion (kg/g/lb/oz/L/mL), fuzzy product matching across Spanish/Portuguese/English, brand extraction, and always returns &lt;code&gt;price_per_kg&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Error handling across 41 stores
&lt;/h1&gt;

&lt;p&gt;When you query 41 stores, something is always broken:&lt;/p&gt;

&lt;blockquote&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Failure mode&lt;/th&gt;
&lt;th&gt;Frequency&lt;/th&gt;
&lt;th&gt;Our handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Timeout (&amp;gt;30s)&lt;/td&gt;
&lt;td&gt;~5%&lt;/td&gt;
&lt;td&gt;Retry 3x with exponential backoff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;429 Rate Limit&lt;/td&gt;
&lt;td&gt;~3%&lt;/td&gt;
&lt;td&gt;Queue and retry after Retry-After&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;503/502 Error&lt;/td&gt;
&lt;td&gt;~2%&lt;/td&gt;
&lt;td&gt;Skip store, log, retry next cycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schema change&lt;/td&gt;
&lt;td&gt;~1%/week&lt;/td&gt;
&lt;td&gt;Alert → manual fix → update collector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth expired&lt;/td&gt;
&lt;td&gt;~1%/month&lt;/td&gt;
&lt;td&gt;Rotate tokens, alert ops&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;The collector runs every 4 hours. Even with 5% failure rate, 95% of data is fresh. 7-day coverage: 100%.&lt;/p&gt;




&lt;h1&gt;
  
  
  What we'd do differently
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Start with GraphQL introspection&lt;/strong&gt; — saves hours of doc-reading for Magento&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build the normalizer first&lt;/strong&gt; — collection is easy, normalization is hard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assume auth will break&lt;/strong&gt; — build token rotation from day 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log everything&lt;/strong&gt; — when a retailer changes their schema at 3am, you want logs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One async HTTP client, many stores&lt;/strong&gt; — &lt;code&gt;httpx.AsyncClient&lt;/code&gt; with connection pooling&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Self-serve retailer onboarding (coming soon)
&lt;/h1&gt;

&lt;p&gt;We're building a flow where retailers register their VTEX/Magento store and appear in CLI Market searches within 24 hours. No technical integration — just your domain and API credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you run a VTEX or Magento store in LATAM:&lt;/strong&gt; &lt;a href="https://cli-market.dev/retailers?utm_source=devto&amp;amp;utm_campaign=art4" rel="noopener noreferrer"&gt;cli-market.dev/retailers&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;CLI Market — Commerce infrastructure for AI agents. 41 retailers. 8 countries. One API.&lt;/em&gt;&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

</description>
      <category>api</category>
      <category>backend</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Your AI agent can now call market_search, market_compare, market_basket autonomously.
No human in the loop for search + compare.
What would you build on top of that?
Procurement bot? Price alert system? Basket optimizer?
Drop your idea 👇</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Wed, 17 Jun 2026 17:10:53 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/your-ai-agent-can-now-call-marketsearch-marketcompare-marketbasket-autonomously-no-human-in-2pcm</link>
      <guid>https://dev.to/ricardo_cuba/your-ai-agent-can-now-call-marketsearch-marketcompare-marketbasket-autonomously-no-human-in-2pcm</guid>
      <description></description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why AI agents can't shop today — and what we're building to change that</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Tue, 16 Jun 2026 23:00:45 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/why-ai-agents-cant-shop-today-and-what-were-building-to-change-that-pgj</link>
      <guid>https://dev.to/ricardo_cuba/why-ai-agents-cant-shop-today-and-what-were-building-to-change-that-pgj</guid>
      <description>&lt;p&gt;AI agents are getting smarter every week. They can browse the web, write code, analyze data. But there's a glaring gap in their capabilities: they can't interact with real commerce.&lt;/p&gt;

&lt;p&gt;Ask your favorite AI agent "what's the cheapest 5kg bag of rice I can buy in Lima right now?" and watch it struggle. It doesn't have access to real-time retail prices. It doesn't know which stores carry rice. It can't compare prices, let alone complete a purchase.&lt;/p&gt;

&lt;p&gt;This isn't a model capability problem. It's an infrastructure problem.&lt;/p&gt;




&lt;h2&gt;
  
  
  The commerce fragmentation problem
&lt;/h2&gt;

&lt;p&gt;E-commerce today is 38 different APIs wearing 38 different costumes. Each one has different authentication, product schemas, rate limits, pagination, and error handling.&lt;/p&gt;

&lt;p&gt;What Stripe did for payments, CLI Market does for commerce data&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One API → 38 retailers across 8 countries&lt;/li&gt;
&lt;li&gt;One auth token → instead of 38&lt;/li&gt;
&lt;li&gt;Normalized data → price_per_kg, not raw retailer strings&lt;/li&gt;
&lt;li&gt;Structured for agents → JSON output, 22 curated MCP tools, CLI-first&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Current scale (June 2026)
&lt;/h2&gt;

&lt;p&gt;Metric -&amp;gt; Value&lt;/p&gt;

&lt;p&gt;Retailers indexed -&amp;gt; 38&lt;br&gt;
Countries -&amp;gt; PE, AR, BR, MX, CO, CL, IT, FR&lt;br&gt;
Prices indexed -&amp;gt; 53,000+&lt;br&gt;
Refresh rate -&amp;gt; Every 4 hours&lt;br&gt;
7-day coverage -&amp;gt; 100%&lt;br&gt;
MCP tools -&amp;gt; 22 curated (46 legacy)&lt;/p&gt;




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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cli-market-world
market login
market search &lt;span class="s2"&gt;"rice"&lt;/span&gt; &lt;span class="nt"&gt;--country&lt;/span&gt; PE &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MCP tools: &lt;br&gt;
[&lt;a href="https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=art1" rel="noopener noreferrer"&gt;https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=art1&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>api</category>
      <category>python</category>
    </item>
    <item>
      <title>Your AI Agent Can't Buy What It Can't See</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Sat, 13 Jun 2026 18:43:38 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/your-ai-agent-cant-buy-what-it-cant-see-1o06</link>
      <guid>https://dev.to/ricardo_cuba/your-ai-agent-cant-buy-what-it-cant-see-1o06</guid>
      <description>&lt;p&gt;Most retailers are still optimizing for humans.&lt;/p&gt;

&lt;p&gt;Better websites.&lt;br&gt;
Better mobile apps.&lt;br&gt;
Better UX.&lt;/p&gt;

&lt;p&gt;But there's a problem.&lt;/p&gt;

&lt;p&gt;The next billion purchasing decisions won't be made by humans.&lt;/p&gt;

&lt;p&gt;They'll be made by agents.&lt;/p&gt;

&lt;p&gt;An AI agent doesn't browse websites.&lt;br&gt;
It doesn't compare products across 20 tabs.&lt;br&gt;
It doesn't scroll endlessly through e-commerce catalogs.&lt;/p&gt;

&lt;p&gt;It consumes structured data.&lt;/p&gt;

&lt;p&gt;Today, retail pricing data is fragmented across hundreds of retailers, formats, and countries.&lt;/p&gt;

&lt;p&gt;That's why we built CLI Market.&lt;/p&gt;

&lt;p&gt;A simple terminal interface that transforms retail pricing data into machine-readable intelligence.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;market search &lt;span class="s2"&gt;"arroz"&lt;/span&gt; &lt;span class="nt"&gt;--country&lt;/span&gt; PE &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few seconds later:&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;"retailers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prices_found"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;248&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PE"&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;No scraping.&lt;br&gt;
No browser automation.&lt;br&gt;
No manual comparison.&lt;/p&gt;

&lt;p&gt;Just real retail prices delivered in a format your agents can use immediately.&lt;/p&gt;

&lt;p&gt;We're building infrastructure for a world where:&lt;/p&gt;

&lt;p&gt;→ AI agents negotiate purchases&lt;br&gt;
→ Autonomous systems optimize procurement&lt;br&gt;
→ Applications make real-time buying decisions&lt;br&gt;
→ Retail becomes machine-accessible&lt;/p&gt;

&lt;p&gt;The internet was built for humans.&lt;/p&gt;

&lt;p&gt;The next layer will be built for agents.&lt;/p&gt;

&lt;p&gt;CLI Market is helping bridge that gap.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;cli-market-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From shelf to data.&lt;br&gt;
From data to decisions.&lt;br&gt;
From decisions to autonomous commerce.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#AI #Agents #RetailTech #DeveloperTools #MachineReadableWeb #CLI #ArtificialIntelligence #DataInfrastructure #AgenticAI #Retail

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>api</category>
      <category>cli</category>
      <category>python</category>
      <category>agentaichallenge</category>
    </item>
    <item>
      <title>Add Commerce to Your AI Agent in 4 Lines</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Wed, 10 Jun 2026 19:48:43 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/add-commerce-to-your-ai-agent-in-4-lines-3iab</link>
      <guid>https://dev.to/ricardo_cuba/add-commerce-to-your-ai-agent-in-4-lines-3iab</guid>
      <description>&lt;p&gt;&lt;strong&gt;4 commands. 38 retailers. 8 countries. Your agent just learned how to shop.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
The problem&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;You're building an AI agent. It can search the web, reason about complex topics, generate code. But when it needs to answer a simple question like &lt;em&gt;"how much does rice cost in Lima today?"&lt;/em&gt; — it hits a wall.&lt;/p&gt;

&lt;p&gt;Not because it's dumb. Because every retailer has a different API, auth mechanism, schema, and checkout flow. There's no Stripe for commerce data.&lt;/p&gt;

&lt;p&gt;Until now.&lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
4 lines. That's it.&lt;br&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="s1"&gt;'''bash
# 1. Install
pip install cli-market-world

# 2. Guided first search + interactive tutorial
market init           # login + first query
market tutorial       # 3 exercises: search, compare, export — 60 seconds

# 3. Search — your agent just queried 38 retailers in &amp;lt;1s
market search "leche" --country PE --json

# 4. Connect to your AI agent via MCP
# Add to Cursor / Claude / any MCP client:
# → https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun09
'''&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire integration. No API keys per retailer. No HTML scraping. No schema mapping.&lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
What happens under the hood&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;When your agent runs market search "rice" --country PE --json, CLI Market:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Normalizes the query&lt;/strong&gt; — "arroz", "rice", "arroz blanco" all map to the same product&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queries our collector&lt;/strong&gt; — 38 active retailers, refreshed every 4 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Returns structured JSON&lt;/strong&gt; — price per kg/L, store name, country, timestamp&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handles auth&lt;/strong&gt; — one CLI Market token, not 38 retailer tokens&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What it looks like in your terminal:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;![CLI Market terminal output — 60 seconds, real prices]&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="err"&gt;'''json&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;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arroz"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"results"&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="nl"&gt;"product"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Arroz Extra 5kg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;18.90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"price_per_kg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3.78&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"store"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Wong"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"refreshed_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-10T08:00:00Z"&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="err"&gt;'''&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
MCP: the missing piece&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;CLI Market exposes &lt;strong&gt;22 curated MCP tools (46 legacy)&lt;/strong&gt; — search, compare, basket, checkout paths — so your agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search products across all retailers&lt;/li&gt;
&lt;li&gt;Compare prices between stores&lt;/li&gt;
&lt;li&gt;Filter by country, category, or price range&lt;/li&gt;
&lt;li&gt;Get historical price data (Pro tier)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connect in Cursor or any MCP client in 30 seconds. Configuration at &lt;a href="https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun09" rel="noopener noreferrer"&gt;cli-market.dev/tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
What you can build with this&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price monitoring agents&lt;/strong&gt; — track commodity prices across LATAM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopping assistants&lt;/strong&gt; — "find the cheapest 5kg rice in Lima"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Competitive intelligence&lt;/strong&gt; — benchmark your retail prices against the market&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply chain optimization&lt;/strong&gt; — auto-reorder when prices drop below threshold&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
What's next&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;/p&gt;

&lt;p&gt;We're working on &lt;strong&gt;cart + checkout&lt;/strong&gt; — so your agent doesn't just search, it buys. One API call to add to cart across any supported retailer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start building:&lt;/strong&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="s1"&gt;'''bash
pip install cli-market-world
market init
'''&lt;/span&gt;

&lt;span class="k"&gt;**&lt;/span&gt;MCP tools:&lt;span class="k"&gt;**&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;cli-market.dev/tools]&lt;span class="o"&gt;(&lt;/span&gt;https://cli-market.dev/tools?utm_source&lt;span class="o"&gt;=&lt;/span&gt;devto&amp;amp;utm_campaign&lt;span class="o"&gt;=&lt;/span&gt;spike-jun09&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;**&lt;/span&gt;Docs &lt;span class="k"&gt;for &lt;/span&gt;agents:&lt;span class="k"&gt;**&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;cli-market.dev/llms.txt]&lt;span class="o"&gt;(&lt;/span&gt;https://cli-market.dev/llms.txt&lt;span class="o"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
Pricing&lt;br&gt;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;| Tier | Price | Best for |
|------|-------|----------|
| Free | $0 | 1,000 req/day — prototype with `market init` |
| **Pro** | **$39/mo** | Alerts, full MCP tools, checkout, 20k req/day, 30d history — [activate](https://cli-market.dev//#pricing?utm_source=devto&amp;amp;utm_campaign=week2) |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;em&gt;CLI Market — Commerce infrastructure for AI agents. 38 retailers. 8 countries. MIT on PyPI.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>agentaichallenge</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>Add Commerce to Your AI Agent in 4 Lines</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Tue, 09 Jun 2026 15:05:42 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/add-commerce-to-your-ai-agent-in-4-lines-1gad</link>
      <guid>https://dev.to/ricardo_cuba/add-commerce-to-your-ai-agent-in-4-lines-1gad</guid>
      <description>&lt;p&gt;&lt;strong&gt;4 commands. 38 retailers. 8 countries. Your agent just learned how to shop.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You're building an AI agent. It can search the web, reason about complex topics, generate code. But when it needs to answer a simple question like &lt;em&gt;"how much does rice cost in Lima today?"&lt;/em&gt; — it hits a wall.&lt;/p&gt;

&lt;p&gt;Not because it's dumb. Because every retailer has a different API, auth mechanism, schema, and checkout flow. There's no Stripe for commerce data.&lt;/p&gt;

&lt;p&gt;Until now.&lt;/p&gt;




&lt;h2&gt;
  
  
  4 lines. That's it.
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;cli-market-world

&lt;span class="c"&gt;# 2. Guided first search + interactive tutorial&lt;/span&gt;
market init           &lt;span class="c"&gt;# login + first query&lt;/span&gt;
market tutorial       &lt;span class="c"&gt;# 3 exercises: search, compare, export — 60 seconds&lt;/span&gt;

&lt;span class="c"&gt;# 3. Search — your agent just queried 38 retailers in &amp;lt;1s&lt;/span&gt;
market search &lt;span class="s2"&gt;"leche"&lt;/span&gt; &lt;span class="nt"&gt;--country&lt;/span&gt; PE &lt;span class="nt"&gt;--json&lt;/span&gt;

&lt;span class="c"&gt;# 4. Connect to your AI agent via MCP&lt;/span&gt;
&lt;span class="c"&gt;# Add to Cursor / Codex/ Claude / any MCP client:&lt;/span&gt;
&lt;span class="c"&gt;# → https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire integration. No API keys per retailer. No HTML scraping. No schema mapping.&lt;/p&gt;




&lt;h2&gt;
  
  
  What happens under the hood
&lt;/h2&gt;

&lt;p&gt;When your agent runs market search "rice" --country PE --json, CLI Market:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Normalizes the query — "arroz", "rice", "arroz blanco" all map to the same product&lt;/li&gt;
&lt;li&gt;Queries our collector — 38 active retailers, refreshed every 4 hours&lt;/li&gt;
&lt;li&gt;Returns structured JSON — price per kg/L, store name, country, timestamp&lt;/li&gt;
&lt;li&gt;Handles auth — one CLI Market token, not 38 retailer tokens.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What it looks like in your terminal:
&lt;/h2&gt;

&lt;p&gt;CLI Market terminal output — 60 seconds, real prices&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="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;"query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arroz"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"results"&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="nl"&gt;"product"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Arroz Extra 5kg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;18.90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"price_per_kg"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3.78&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"store"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Wong"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"refreshed_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-10T08:00:00Z"&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;h2&gt;
  
  
  MCP: the missing piece
&lt;/h2&gt;

&lt;p&gt;CLI Market exposes 22 curated MCP tools (46 legacy) — search, compare, basket, checkout paths — so your agent can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search products across all retailers&lt;/li&gt;
&lt;li&gt;Compare prices between stores&lt;/li&gt;
&lt;li&gt;Filter by country, category, or price range&lt;/li&gt;
&lt;li&gt;Get historical price data (Pro tier)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Connect in Cursor or any MCP client in 30 seconds. &lt;br&gt;
Configuration at:&lt;br&gt;
 &lt;a href="https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun10" rel="noopener noreferrer"&gt;https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun10&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  What you can build with this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Price monitoring agents — track commodity prices across LATAM&lt;/li&gt;
&lt;li&gt;Shopping assistants — "find the cheapest 5kg rice in Lima"&lt;/li&gt;
&lt;li&gt;Competitive intelligence — benchmark your retail prices against the market&lt;/li&gt;
&lt;li&gt;Supply chain optimization — auto-reorder when prices drop below threshold&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;We're working on cart + checkout — so your agent doesn't just search, it buys. One API call to add to cart across any supported retailer.&lt;/p&gt;

&lt;p&gt;Start building:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  pip &lt;span class="nb"&gt;install &lt;/span&gt;cli-market-world
  market init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MCP tools:&lt;br&gt;
&lt;a href="https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun10" rel="noopener noreferrer"&gt;https://cli-market.dev/tools?utm_source=devto&amp;amp;utm_campaign=spike-jun10&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs for agents: &lt;br&gt;
&lt;a href="https://cli-market.dev/llms.txt" rel="noopener noreferrer"&gt;https://cli-market.dev/llms.txt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pricing:&lt;br&gt;
&lt;a href="https://cli-market.dev/#pro-checkout?utm_source=devto&amp;amp;utm_campaign=week2" rel="noopener noreferrer"&gt;https://cli-market.dev/#pro-checkout?utm_source=devto&amp;amp;utm_campaign=week2&lt;/a&gt;                                             &lt;/p&gt;




&lt;p&gt;&lt;em&gt;*&lt;em&gt;CLI Market — Commerce infrastructure for AI agents. 38 retailers. 8 countries. MIT on PyPI.&lt;br&gt;
*&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>cli</category>
      <category>agentskills</category>
    </item>
    <item>
      <title>CLI Market — Mi agente compra en 36 tiendas de 11 países. Una sola API.</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Thu, 28 May 2026 14:41:41 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/cli-market-my-agent-shops-at-41-stores-across-7-countries-one-api-2ggp</link>
      <guid>https://dev.to/ricardo_cuba/cli-market-my-agent-shops-at-41-stores-across-7-countries-one-api-2ggp</guid>
      <description>&lt;p&gt;Los agentes de IA no pueden comparar precios en el retail físico. Cada tienda tiene su propio sistema de autenticación, lógica de búsqueda y flujo de compra. Los agentes fallan antes de la primera consulta.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI Market&lt;/strong&gt; resuelve esto: un solo &lt;code&gt;pip install&lt;/code&gt;, una API unificada para &lt;strong&gt;36 retailers verificados en 11 países&lt;/strong&gt;. 43 herramientas MCP. Más de 45.000 precios reales actualizados cada 4 horas. Checkout por PayPal (API) o QR (Yape/Plin).&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;🇬🇧 &lt;em&gt;AI agents can't comparison-shop in physical retail. Every store has its own auth, search logic, and checkout flow. **CLI Market&lt;/em&gt;* fixes this: one &lt;code&gt;pip install&lt;/code&gt;, one API across 36 verified retailers in 11 countries. 43 MCP tools. 45,000+ real prices refreshed every 4 hours.*&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Cómo funciona
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Buscar&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;market search &lt;span class="s2"&gt;"leche"&lt;/span&gt; &lt;span class="nt"&gt;--country&lt;/span&gt; PE
&lt;span class="c"&gt;# → precios de Metro, Wong, Plaza Vea en &amp;lt;2s&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Comparar&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;market basket leche:2 arroz:1
&lt;span class="c"&gt;# → compara el carrito completo en 9 supermercados&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pagar&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;market checkout &lt;span class="nt"&gt;--payment&lt;/span&gt; yape
&lt;span class="c"&gt;# → genera QR, confirma vía webhook&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;🇬🇧 &lt;em&gt;How it works — Search: get prices from multiple retailers in &amp;lt;2s. Compare: full cart comparison across 9 supermarkets. Checkout: generates QR code, confirms via webhook.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Por qué lo construí
&lt;/h2&gt;

&lt;p&gt;El cuello de botella para los agentes de compras con IA no es el LLM — es la capa de datos de comercio. Cada agente que construí necesitaba scrapear 36 sitios web solo para responder &lt;em&gt;"¿dónde está la leche más barata cerca de mí?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;El proyecto comenzó como un conector VTEX y creció hasta cubrir 36 retailers en &lt;strong&gt;Perú, Argentina, Brasil, México, Colombia, Chile, EE.UU. y más&lt;/strong&gt;. Tenemos conectores VTEX, Shopify y Magento corriendo un daemon colector cada 4 horas. ~45K precios indexados actualmente, creciendo a &lt;strong&gt;más de 200K&lt;/strong&gt; con descargas de catálogo completo.&lt;/p&gt;

&lt;p&gt;También estamos trabajando en un &lt;strong&gt;archivo histórico de precios de 90 días&lt;/strong&gt; para seguimiento de inflación.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;🇬🇧 &lt;em&gt;The bottleneck for AI shopping agents isn't t LM — it's the commerce data layer. Started as a single VTEX connector, now covering 36 retailers across 11 countries. Working on 200K+ prices and a 90-day historical price archive for inflation tracking.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Abierto a todos
&lt;/h2&gt;

&lt;p&gt;Construido en Python. Licencia MIT. Los retailers pueden listarse gratis — si tenés una tienda en Shopify o Magento, solo necesitamos un token de API de solo lectura. Sin lock-in.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;Repositorio:&lt;/strong&gt; &lt;a href="https://github.com/Treevu-ai/cli-market-world" rel="noopener noreferrer"&gt;https://github.com/Treevu-ai/cli-market-world&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;strong&gt;Demo:&lt;/strong&gt; &lt;a href="https://cli-market.dev" rel="noopener noreferrer"&gt;https://cli-market.dev&lt;/a&gt; (GIF de terminal de 60s mostrando un checkout completo con agente)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;¡Me encantaría recibir feedback de quienes estén construyendo agentes de IA o trabajando en infraestructura de retail!&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;🇬🇧 &lt;em&gt;Built in Python. MIT licensed. Retailers can list for free — Shopify or Magento store, read-only API token is all we need. No lock-in. Would love feedback from anyone building AI agents or working on retail infrastructure!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>opensource</category>
      <category>cli</category>
    </item>
    <item>
      <title>Shipping an MCP server: parallel search, JSON output, and what broke along the way</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Thu, 21 May 2026 01:57:06 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/shipping-an-mcp-server-parallel-search-json-output-and-what-broke-along-the-way-2j3n</link>
      <guid>https://dev.to/ricardo_cuba/shipping-an-mcp-server-parallel-search-json-output-and-what-broke-along-the-way-2j3n</guid>
      <description>&lt;p&gt;CLI Market hit 3,760 retailers this week. With that scale came problems. &lt;/p&gt;

&lt;p&gt;Here's what we fixed and what we learned.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Problem 1: Search timeout][...]

[Problem 2: --json flag that didn't work][...]

[Problem 3: Session loss on cloud deploys][...]

[What we learned about Render vs Railway][...]

[Full changelog + code links]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;pip install cli-market&lt;br&gt;
github.com/Treevu-ai/cli-market-world&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>python</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How I registered an MCP server for 3,760 retailers — and what I learned</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Wed, 20 May 2026 00:08:56 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/how-i-registered-an-mcp-server-for-3760-retailers-and-what-i-learned-4npm</link>
      <guid>https://dev.to/ricardo_cuba/how-i-registered-an-mcp-server-for-3760-retailers-and-what-i-learned-4npm</guid>
      <description>&lt;p&gt;Yesterday CLI Market was a PyPI package. &lt;br&gt;
This week it's an official MCP Registry server: &lt;br&gt;
&lt;a href="//io.github.Treevu-ai/cli-market"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu0c62gvt540wqh890p9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu0c62gvt540wqh890p9.gif" alt=" " width="600" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's what it took to get listed, what the registry validation looks like, and why MCP is the missing layer between e-commerce and AI agents.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  The MCP Registry: what it took to get listed
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
The Model Context Protocol Registry at registry.modelcontextprotocol.io is the canonical&lt;br&gt;
directory of MCP servers. Getting listed isn't just about having a working server — the registry validates ownership, checks schema compliance, and verifies that the package actually exists.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 1: The &lt;code&gt;mcp.json&lt;/code&gt; file&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Every MCP server needs a mcp.json at the repo root. Ours:&lt;br&gt;
&lt;code&gt;{&lt;br&gt;
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json"&lt;br&gt;
    ,&lt;br&gt;
      "name": "io.github.Treevu-ai/cli-market",&lt;br&gt;
      "title": "CLI Market",&lt;br&gt;
      "version": "1.0.1",&lt;br&gt;
      "description": "12 MCP tools for search, compare, purchase across 3,760 retailers in 67 c&lt;br&gt;
    ountries",&lt;br&gt;
      "repository": {&lt;br&gt;
        "url": "https://github.com/Treevu-ai/cli-market-world",&lt;br&gt;
        "source": "github"&lt;br&gt;
      },&lt;br&gt;
      "packages": [{&lt;br&gt;
        "registryType": "pypi",&lt;br&gt;
        "identifier": "cli-market",&lt;br&gt;
        "version": "1.0.17",&lt;br&gt;
        "transport": { "type": "stdio" }&lt;br&gt;
      }]&lt;br&gt;
    }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Key decisions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name format: io.github.{org}/{project} — reverse-DNS, org-scoped&lt;/li&gt;
&lt;li&gt;registryType: pypi — CLI Market is a Python package on PyPI&lt;/li&gt;
&lt;li&gt;transport: stdio — the MCP server communicates over standard input/output&lt;/li&gt;
&lt;li&gt;version locked — no ranges, exact version matching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Step 2: Proving ownership&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The registry doesn't trust that cli-market on PyPI belongs to Treevu-ai on GitHub. It validates by scanning the PyPI package README for a specific HTML comment:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-- mcp-name: io.github.Treevu-ai/cli-market --&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This line must appear in the README that renders on PyPI. The registry fetches the package, parses the README, and checks that the annotation matches the server name. If it doesn't match — rejected.&lt;/p&gt;

&lt;p&gt;We added this to our README, bumped the version to 1.0.17, and uploaded to PyPI. The registry validated it in under a second.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 3: Schema validation&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The publish endpoint runs the full ServerJSON schema validator. Every field is checked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;description max 100 characters, name must match ^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$,&lt;br&gt;
packages[].identifier must resolve in the registry, packages[].transport.type must be stdio/&lt;br&gt;
streamable-http/sse.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One thing that tripped us up: the schema changed between mcp.json (the repo-side format) and ServerJSON (the registry API format). In the repo, you declare command, args, type. In the registry API, those go inside packages[].transport and packages[] requires registryType + identifier + transport. Getting this right took a few rounds.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 4: Authentication&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The registry uses GitHub OAuth. We exchanged a GitHub token for a registry JWT:&lt;br&gt;
&lt;code&gt;POST /v0.1/auth/github-at  →  { registry_token: "eyJ..." }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then published:&lt;br&gt;
&lt;code&gt;POST /v0.1/publish  →  { server: {...}, _meta: { status: "active" } }&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The token expires, so for updates you re-authenticate. The whole flow is scriptable in under 10 lines of bash.&lt;/p&gt;

&lt;p&gt;The 12 tools: architecture&lt;/p&gt;

&lt;p&gt;All 12 tools sit on top of a unified VTEX connector that normalizes 3,760 retailer APIs into a single JSON schema.&lt;/p&gt;

&lt;p&gt;_Four tools deserve special attention:&lt;br&gt;
_&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;- market_compare — Not a simple price fetch. It first normalizes SKUs across retailers (the same product has different internal IDs at Carrefour Brazil and Sainsbury's UK), deduplicates, and returns a canonical price set. Three steps under one MCP call.&lt;/li&gt;
&lt;li&gt;market_checkout — Chains: cart validation → stock verification → payment method resolution → order confirmation. All in one invocation. But it never completes autonomously — V1 requires explicit human approval before execution.&lt;/li&gt;
&lt;li&gt;market_ask — The most composite tool. Natural language input → semantic search → cross-retailer comparison → cart building → checkout readiness. "Buy rice" walks the full pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The composition pattern — Tools are atomic enough to compose, composite enough to not drown the agent. 12 tools. Not 1 mega-tool. Not 100 individual REST endpoints.&lt;/p&gt;

&lt;p&gt;───&lt;/p&gt;

&lt;p&gt;What I'd do differently&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Read the OpenAPI spec first. The publish endpoint schema is documented at /docs. I guessed from the mcp.json format and hit 5 validation errors before getting it right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up the PyPI annotation early. The mcp-name comment is the ownership proof. Add it to your README before you publish to the registry.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Script the auth flow. GitHub token → registry JWT → publish. Three curl calls. Wrap them in a Makefile target and forget about it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;───&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI Market is on the registry&lt;/strong&gt;. &lt;br&gt;
The agent can now search, compare, and buy across 3,760 retailers in 67 countries — all via structured tool calls with zero scraping.&lt;/p&gt;

&lt;p&gt;pip install cli-market&lt;br&gt;
io.github.Treevu-ai/cli-market&lt;br&gt;
github.com/Treevu-ai/cli-market-world&lt;/p&gt;

&lt;p&gt;Ricardo Cuba&lt;br&gt;
Founder &amp;amp; Product Lead | CLI Market&lt;br&gt;
CEO Sinapsis Innovadora&lt;br&gt;
Trujillo, Perú&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>python</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The VTEX public API is the same for 3,760 retailers — but no one aggregated it. Until now.</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Tue, 19 May 2026 01:15:27 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/the-vtex-public-api-is-the-same-for-3760-retailers-but-no-one-aggregated-it-until-now-2hd7</link>
      <guid>https://dev.to/ricardo_cuba/the-vtex-public-api-is-the-same-for-3760-retailers-but-no-one-aggregated-it-until-now-2hd7</guid>
      <description>&lt;p&gt;VTEX runs e-commerce for Nike, Carrefour, Samsung, Motorola, and 3,760+ other brands. Every one exposes the same search and catalog API endpoints. Same JSON schema. Same pagination rules.&lt;/p&gt;

&lt;p&gt;For years, if you wanted to query products across retailers, you had to scrape or make separate API calls per store. There was no aggregation layer.&lt;/p&gt;

&lt;p&gt;VTEX powers e-commerce for Nike, Carrefour, Samsung, and 3,760+ brands. &lt;br&gt;
All share the same public API — but no one had built the aggregation layer for programmatic access. Until now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pip install cli-market&lt;/strong&gt; and your terminal becomes a commerce engine across 67 countries.&lt;/p&gt;

&lt;p&gt;So I built one.&lt;br&gt;
gifsicle --optimize=3 --lossy=80 demo.gif -o demo-small.gif&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrngxa6zlrnynfdjgg5q.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcrngxa6zlrnynfdjgg5q.gif" alt=" " width="560" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Technical details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single Python connector that maps VTEX's public search/catalog/checkout endpoints&lt;/li&gt;
&lt;li&gt;Each retailer = one config line: {domain, country, currency, line}&lt;/li&gt;
&lt;li&gt;SQLite price snapshots for historical data&lt;/li&gt;
&lt;li&gt;Rich terminal UI + REST API + MCP server (12 tools)&lt;/li&gt;
&lt;li&gt;JSON output saves ~85% context window tokens vs raw HTML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is indexed and queryable cross-retailer. Search "milk" and get results from Carrefour Brazil, Sainsbury's UK, Wong Peru, in one response.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Treevu-ai/cli-market-world" rel="noopener noreferrer"&gt;https://github.com/Treevu-ai/cli-market-world&lt;/a&gt;&lt;br&gt;
Live: &lt;a href="https://cli-market.dev" rel="noopener noreferrer"&gt;https://cli-market.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stack: Python, FastAPI, Rich, SQLite, Next.js. MIT license.&lt;/p&gt;

&lt;p&gt;Curious what the community thinks about e-commerce APIs being still optimized for browsers instead of programmatic access.&lt;/p&gt;

</description>
      <category>api</category>
      <category>cli</category>
      <category>python</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Conecta tus agentes de IA a +2000 retailers de LATAM con una sola API</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Mon, 18 May 2026 04:14:09 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/conecta-tus-agentes-de-ia-a-2000-retailers-de-latam-con-una-sola-api-3hgh</link>
      <guid>https://dev.to/ricardo_cuba/conecta-tus-agentes-de-ia-a-2000-retailers-de-latam-con-una-sola-api-3hgh</guid>
      <description>&lt;p&gt;En este post te presento CLI Market, una infraestructura de comercio open source que conecta 100 retailers en 12 países de LATAM a través de una sola API y una CLI para agentes de IA.&lt;/p&gt;

&lt;p&gt;_&lt;/p&gt;

&lt;p&gt;¿Qué es CLI Market?&lt;br&gt;
CLI Market unifica catálogos, precios y disponibilidad de múltiples retailers para que tus agentes de IA puedan buscar, comparar y simular compras sin integrar tienda por tienda.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2000+ retailers conectados&lt;/li&gt;
&lt;li&gt;40+ países en el mundo&lt;/li&gt;
&lt;li&gt;Una API y una CLI open source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Sitio: &lt;a href="https://cli-market.dev/" rel="noopener noreferrer"&gt;https://cli-market.dev/&lt;/a&gt;&lt;br&gt;
👉 Repo: &lt;a href="https://github.com/Treevu-ai/cli-market-world" rel="noopener noreferrer"&gt;https://github.com/Treevu-ai/cli-market-world&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cómo empezar?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Treevu-ai/cli-market-latam.git
&lt;span class="nb"&gt;cd &lt;/span&gt;cli-market-latam
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ejemplo rápido para listar retailers por país:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cli-market retailers list --country=PE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con esto ya puedes exponer catálogos como herramientas para tus agentes (HTTP, JSON, MCP) y construir asistentes que optimicen compras en retail sobre una sola capa de infraestructura.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>api</category>
      <category>startup</category>
    </item>
    <item>
      <title>first create post dev test</title>
      <dc:creator>Ricardo Cuba</dc:creator>
      <pubDate>Mon, 11 May 2026 02:41:34 +0000</pubDate>
      <link>https://dev.to/ricardo_cuba/3-ways-to-installing-ubuntu-515j</link>
      <guid>https://dev.to/ricardo_cuba/3-ways-to-installing-ubuntu-515j</guid>
      <description>&lt;p&gt;One of the most powerful things I've learned a few days ago is the possibilities to vibe coding from ubuntu and docker containers&lt;/p&gt;

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