AI agents are the new frontier, and the Model Context Protocol (MCP) is quickly becoming the standard for how they interact with the real world.
Over the last three weeks, I’ve been building JSONexLab — a suite of API tools and MCP servers for developers and AI agents. The idea was simple: build highly specific, fast, and reliable data pipelines (like HS codes classification, document parsing, and sanctions screening) and sell them via a pay-per-call model using x402 (USDC).
I’m writing this as a "build in public" post because I see a lot of tutorials on how to build an MCP server, but almost nothing on what happens when you try to take it to production.
Here are the real numbers, the architecture, and the things that broke.
The Stack
- Hosting: Cloudflare Workers & Pages (for edge performance).
- Database: Cloudflare D1 (SQLite at the edge).
- Backend: Node.js (v22).
- AI: GPT-4o-mini for classification and data extraction.
- Payments: x402 (USDC on Base), Suby (crypto), and currently verifying with AgentaOS (fiat).
🏆 What Works (The Wins)
- 1,018 SEO Pages Generated: I built a custom static site generator that created 1,000+ landing pages (programmatic SEO) for specific HS codes and validators. It takes 12 minutes to build but generates massive organic surface area.
- The MCP Servers: We have 10 active MCP servers (Document-to-JSON, HS Codes, Currency Exchange, etc.). They are lightweight, respond in milliseconds, and can be hooked directly into Claude Desktop or Cursor.
- The Traffic: We are seeing ~300 MCP calls per day for the document-to-JSON server. Developers are actively using the free tier.
- Dark Mode: I finally moved away from the standard "white SaaS" look. A dark, high-contrast UI (like Supabase or Vercel) instantly made the product look 10x more premium.
💥 What Broke (The Ugly Truth)
1. The Cloudflare D1 Daily Row Write Limit
Cloudflare D1 has a free tier limit of 100,000 row writes per day. In my naivety, I set up a GitHub Action to ingest the UN Sanctions list (956 records) and the GLEIF entity database (20,000+ records).
Within hours, the database completely locked up. The API was returning D1 API error 400: code 7500: Your account has exceeded D1's free tier daily row write limit.
The fix: I had to write a custom script to batch the writes, limit the GLEIF sync to just 20 pages (4,000 records) per run, and gracefully handle the quota exhaustion so the script doesn't crash.
2. The PowerShell UTF-8 Encoding Nightmare
When building a static site on a Windows machine, PowerShell is your worst enemy. Every time I injected a Python or JS script containing emojis (⚡, 🌍, 💳), PowerShell (or Notepad) saved the file in Windows-1251 (ANSI) encoding. The browser would read the UTF-8 file and display these horrid characters: ВљЎ, рџЊЌ.
The fix: I had to write a Node.js script using raw Unicode escape sequences (like \u26A1) to forcefully overwrite the file in UTF-8 without BOM (Byte Order Mark).
3. The "CNAME Cross-User Banned" DNS Error
When pointing my custom domain to Cloudflare Pages, I hit Error 1014. It turned out that a stale CNAME record was pointing to a different Cloudflare account, and the zone was locked. After hours of deleting and recreating DNS records, I had to flush the local Windows DNS cache (ipconfig /flushdns run as Administrator) just to see the changes.
4. Payment Gateways for a Ukrainian Founder
This is the biggest bottleneck. I wanted to monetize using Gumroad, but they do not support payouts to Ukraine. Polar also blocked Ukrainian accounts. I had to pivot to AgentaOS (which specializes in Ukrainian payouts) and Paddle (which is notoriously strict with merchant verification).
Note: If you are selling a service that even remotely touches compliance, you have to strip the word "License verification" from your pricing page, or Paddle will put your account on hold until you prove you are a licensed broker.
The Reality Check: $0 Revenue
Despite ~300 daily API calls and a fully functional site, I have made $0 in revenue. Why?
Because developers use the free tier (50 calls per day), and setting up crypto payments (USDC on Base) is still a massive friction point for mainstream users. The fiat gateway (credit cards) is currently blocked by merchant verification.
What's Next?
- Waiting for AgentaOS/Paddle to approve the fiat payment gateway.
- Expanding the x402 native payments (so AI agents can literally pay for their own API calls).
- Continuing to build new MCP servers.
Building an AI-native API business is a marathon, not a sprint. If you are building in the MCP space right now, my advice is: don't underestimate the infrastructure quotas, and figure out your payment rails before you launch.
If you want to check out the tools or test the MCP servers, you can find them at jsonexlab.com. I'd love to hear your feedback on the architecture!
Top comments (1)
Hey everyone! Author here 👋
The biggest surprise for me while building this was just how fast I hit the Cloudflare D1 free tier limits. I underestimated how heavy the daily ingestion of the GLEIF database would be.
For those of you building on the edge right now: what database are you using for your APIs? Did you stick with D1, or did you move to something like Supabase or a dedicated Postgres instance?
Also, for the indie hackers out there: how are you handling payments for AI agents? Is x402 (crypto) the future, or are you just waiting for Stripe to implement native agent payments?
I'm happy to answer any questions about the stack or the MCP servers!