<?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: Michael Egberts</title>
    <description>The latest articles on DEV Community by Michael Egberts (@megberts).</description>
    <link>https://dev.to/megberts</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3842727%2F72c75668-5f03-4d45-8287-c5aaa231ad58.jpg</url>
      <title>DEV Community: Michael Egberts</title>
      <link>https://dev.to/megberts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/megberts"/>
    <language>en</language>
    <item>
      <title>WAVE Coding: Why we built 78 integrations for AI instead of letting AI build them</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Thu, 14 May 2026 19:38:45 +0000</pubDate>
      <link>https://dev.to/megberts/wave-coding-why-we-built-78-integrations-for-ai-instead-of-letting-ai-build-them-if2</link>
      <guid>https://dev.to/megberts/wave-coding-why-we-built-78-integrations-for-ai-instead-of-letting-ai-build-them-if2</guid>
      <description>&lt;p&gt;Every week I see another "I built a SaaS in 4 hours with AI" post. And every week, the comments are the same: "Cool, but does the Stripe integration actually work?"&lt;/p&gt;

&lt;p&gt;Usually it doesn't.&lt;/p&gt;

&lt;p&gt;That's vibe coding. You prompt, you hope, and you pray that the AI correctly implements a payment flow it's never actually tested. It hallucinates webhook handlers. It guesses at email configs. It builds checkout flows that break on the first real transaction.&lt;/p&gt;

&lt;p&gt;We took the opposite approach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The puzzle piece pattern&lt;/strong&gt;&lt;br&gt;
We're building WebsitePublisher.ai — a platform where AI assistants build and publish websites and web applications through conversation. Available on 9 AI platforms (Claude, ChatGPT, Gemini, Cursor, Windsurf, GitHub Copilot, Grok, Mistral, n8n) via MCP protocol.&lt;br&gt;
In the last 16 days, we shipped 78 integrations. Each one is a self-contained puzzle piece — proven software running on our web servers. AI doesn't generate the integration code. AI calls the integration.&lt;br&gt;
Here's what that looks like in practice:&lt;/p&gt;

&lt;p&gt;User: "I need a webshop with Stripe payments and order confirmation emails"&lt;/p&gt;

&lt;p&gt;AI selects:&lt;br&gt;
  → product-catalog (MAPI entity + helpers)&lt;br&gt;
  → shopping-cart (session-based)&lt;br&gt;
  → checkout-flow (orchestration engine)&lt;br&gt;
  → stripe (payment processing)&lt;br&gt;
  → invoice-generator (PDF + accounting)&lt;br&gt;
  → email-templates (Resend rendering)&lt;/p&gt;

&lt;p&gt;Result: 6 tested puzzle pieces combined into a working application.&lt;/p&gt;

&lt;p&gt;Zero hallucinated Stripe webhooks. Zero guessed SMTP configs. The heavy lifting happens in proven software on the server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters&lt;/strong&gt;&lt;br&gt;
The fundamental problem with vibe coding is that AI is asked to do two things at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Understand what you want&lt;/strong&gt; (AI is great at this)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implement reliable infrastructure&lt;/strong&gt; (AI is terrible at this)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WAVE coding separates the two. AI handles #1 — understanding your intent and selecting the right puzzle pieces. The proven software handles #2 — the actual Stripe calls, the email delivery, the database queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's in the 78 puzzle pieces&lt;/strong&gt;&lt;br&gt;
Some highlights from what shipped in 16 days:&lt;br&gt;
&lt;strong&gt;E-commerce stack&lt;/strong&gt;:&lt;br&gt;
Product catalog, shopping cart, checkout flow, order management, inventory tracking, shipping (MyParcel), invoice generation, discount codes&lt;br&gt;
&lt;strong&gt;Communication&lt;/strong&gt;:&lt;br&gt;
SMTP email, email templates, contact forms, multi-layer spam protection&lt;br&gt;
&lt;strong&gt;Data layer&lt;/strong&gt;:&lt;br&gt;
Server-side rendering for SEO, batch update/delete endpoints, data grids with validation&lt;br&gt;
&lt;strong&gt;AI layer&lt;/strong&gt;:&lt;br&gt;
Coach (guided website creation), concept generation, streaming chat&lt;br&gt;
&lt;strong&gt;Platform hardening&lt;/strong&gt;:&lt;br&gt;
DNSSEC, request tracing, error envelope standardization, security hardening&lt;/p&gt;

&lt;p&gt;Each piece follows the same pattern: a handler receives the endpoint, input, and project ID. Dependencies are explicit. No magic.&lt;/p&gt;

&lt;p&gt;The results&lt;br&gt;
In the same 16 days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;7 new customers onboarded&lt;/li&gt;
&lt;li&gt;World Cup prediction game deployed for PSV Supporters (30,000 members)&lt;/li&gt;
&lt;li&gt;Visual editor upgrade shipped&lt;/li&gt;
&lt;li&gt;Coach AI guidance system improved&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;We're calling it WAVE coding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not because it's a clever acronym. Because each application you build is a wave — one deliberate push that combines existing puzzle pieces into something new. Each wave builds on what came before.&lt;br&gt;
Vibe coding is random energy hoping to land somewhere useful.&lt;br&gt;
WAVE coding is deliberate momentum. 🌊&lt;/p&gt;

&lt;p&gt;Curious what you think. Are you building infrastructure for AI to use, or letting AI build infrastructure from scratch?&lt;br&gt;
websitepublisher.ai&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>mcp</category>
    </item>
    <item>
      <title>We're now in Mistral's connector directory — here's what that means for AI-powered web publishing</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Tue, 05 May 2026 11:54:06 +0000</pubDate>
      <link>https://dev.to/megberts/were-now-in-mistrals-connector-directory-heres-what-that-means-for-ai-powered-web-publishing-206</link>
      <guid>https://dev.to/megberts/were-now-in-mistrals-connector-directory-heres-what-that-means-for-ai-powered-web-publishing-206</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hook&lt;/strong&gt;: WebsitePublisher.ai is a pre-configured Directory Connector in Mistral's curated MCP connector directory. That's a mouthful, so let me break it down: Le Chat users can now find us in their connector settings, click Add, complete OAuth, and immediately start building websites through conversation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key points to cover&lt;/strong&gt;:&lt;br&gt;
What a Directory Connector is vs Custom Connector&lt;br&gt;
OAuth 2.1 + DCR auto-discovery&lt;br&gt;
55+ MCP tools available&lt;br&gt;
How it compares to our ChatGPT integration (Custom GPT = zero setup)&lt;br&gt;
The 10-platform story&lt;br&gt;
Link to setup guide: websitepublisher.ai/docs/mcp#mistral-setup&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Building an AI-native web platform: 69 features in 11 days (solo dev log)</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Tue, 28 Apr 2026 10:35:51 +0000</pubDate>
      <link>https://dev.to/megberts/building-an-ai-native-web-platform-69-features-in-11-days-solo-dev-log-l55</link>
      <guid>https://dev.to/megberts/building-an-ai-native-web-platform-69-features-in-11-days-solo-dev-log-l55</guid>
      <description>&lt;p&gt;I'm building WebsitePublisher.ai — a platform where AI assistants build and publish complete websites through MCP (Model Context Protocol) tools. Here's what the last 11 days looked like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Visual Editor Problem&lt;/strong&gt;&lt;br&gt;
Users could build entire websites through conversation, but changing a single typo required asking the AI to patch the page. Terrible UX for small edits.&lt;br&gt;
&lt;strong&gt;Solution: WPE v2&lt;/strong&gt; — a visual editor that loads the published page in an iframe, detects editable elements, and lets users click-to-edit text, drag-and-drop images, right-click for context menus, and save back through the same PAPI that AI assistants use.&lt;/p&gt;

&lt;p&gt;Key decisions: httpOnly cookies instead of URL tokens, change count badge in dashboard, overlay detection for CSS-covered images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Integration Cookbook&lt;/strong&gt;&lt;br&gt;
Our integration engine (IAPI) supports http (external proxy) and internal (PHP handler) drivers. After shipping LinkedIn posting and SMTP email in the same week, I wrote an Internal Integration Cookbook:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create manifest JSON with endpoint definitions&lt;/li&gt;
&lt;li&gt;Implement handler extending InternalIntegrationHandler&lt;/li&gt;
&lt;li&gt;Define body_transform and response_transform hooks&lt;/li&gt;
&lt;li&gt;Register in engine&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Result: the API Proxy integration took 2 hours from start to production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Session Stability&lt;/strong&gt;&lt;br&gt;
OAuth 2.1 + PKCE authentication. Claude's connector occasionally lost session state → 401 errors mid-conversation. Fixed with a 6-layer approach: token refresh, graceful 401 handling, session persistence, stale token detection, project selector refresh, frontend error boundaries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Domains with DNS Pre-validation&lt;/strong&gt;&lt;br&gt;
SSL certificate requests would fail when DNS hadn't propagated. Now we validate CNAME resolution before calling certbot. Clear error messages instead of cryptic failures.&lt;br&gt;
&lt;strong&gt;Numbers&lt;/strong&gt;&lt;br&gt;
Tasks completed (11 days): 69&lt;br&gt;
Total MCP tools: 55&lt;br&gt;
AI platforms supported: 9&lt;br&gt;
API layers: 10&lt;br&gt;
Directory listings: 15+&lt;/p&gt;

&lt;p&gt;→ websitepublisher.ai&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Week 16 Dev Log: From First Customer to 56 MCP Tools — Building an AI-Native Website Publisher</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Mon, 13 Apr 2026 14:05:54 +0000</pubDate>
      <link>https://dev.to/megberts/week-16-dev-log-from-first-customer-to-56-mcp-tools-building-an-ai-native-website-publisher-511k</link>
      <guid>https://dev.to/megberts/week-16-dev-log-from-first-customer-to-56-mcp-tools-building-an-ai-native-website-publisher-511k</guid>
      <description>&lt;p&gt;I'm building WebsitePublisher.ai — a platform where AI assistants build and publish websites through MCP (Model Context Protocol) tools. This week: first paying customer, team collaboration, and some interesting architecture decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quick context: Laravel/PHP backend, dual-server DigitalOcean cluster, Redis Sentinel, MySQL, S3 for assets. The AI layer is a multi-API stack:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PAPI&lt;/strong&gt; — pages and assets&lt;br&gt;
&lt;strong&gt;MAPI&lt;/strong&gt; — entities and structured data&lt;br&gt;
&lt;strong&gt;VAPI&lt;/strong&gt; — vault/secrets management&lt;br&gt;
&lt;strong&gt;IAPI&lt;/strong&gt; — third-party integrations (Stripe, Resend, Twilio, etc.)&lt;br&gt;
&lt;strong&gt;SAPI&lt;/strong&gt; — sessions, forms, visitor auth&lt;br&gt;
&lt;strong&gt;TAPI&lt;/strong&gt; — task tracking across AI sessions&lt;br&gt;
&lt;strong&gt;AAPI&lt;/strong&gt; — scheduled automations&lt;/p&gt;

&lt;p&gt;All exposed as MCP tools. Currently 56 tools, accessible from Claude, ChatGPT, Cursor, Windsurf, GitHub Copilot, Gemini, Grok, Mistral, and n8n.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What shipped this week&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Collaboration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our first paying customer — an agency — asked for multi-user support on day one. We shipped it within 48 hours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Owner invites team members via email&lt;/li&gt;
&lt;li&gt;Team members get full access to all projects&lt;/li&gt;
&lt;li&gt;Magic link authentication (no passwords)&lt;/li&gt;
&lt;li&gt;Max 5 members per Agency account&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Architecture decision: no per-project granularity in v1. Simpler model, ship fast, iterate based on real usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dashboard Vault — Secrets Without AI Exposure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A security feature I'm particularly proud of: the Vault tab lets users manage API keys (Stripe, Resend, etc.) through the browser UI. The key insight: &lt;strong&gt;if you share an API key in an AI chat, it ends up in transcripts, logs, and context windows.&lt;/strong&gt; The Vault bypasses AI entirely — write-once, never displayed, rotate or delete only.&lt;/p&gt;

&lt;p&gt;Backend uses AES-256-GCM encryption keyed per project, so even if someone gains database access, secrets from other projects are unreadable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Language Refactor — From 4 Hardcoded Lists to Zero&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our AI Coach (a conversational website builder) needed proper i18n. The old code had 4 separate hardcoded language→string mappings scattered across the codebase. We refactored to a single CapiLanguage value object with a Redis → DB → Haiku → fallback chain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check Redis cache&lt;/li&gt;
&lt;li&gt;Check papi_language_meta table (27 seeded languages)&lt;/li&gt;
&lt;li&gt;Ask Claude Haiku for language detection (costs ~$0.001)&lt;/li&gt;
&lt;li&gt;Fall back to English&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Result: any of the 250+ ISO 639-1 codes work automatically. Adding a new language = 1 database row.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;get_asset MCP Tool — Closing the Read Gap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We had tools to list, upload, patch, and delete assets — but no tool to read them. AI agents were doing blind find/replace via patch_asset without knowing the current file state. get_asset closes that gap: text content returned directly, binary assets as base64.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Activation Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;67 signups, one paying customer. The gap is real. Our research this week showed that the friction is in the "how do I start?" moment — users sign up, see a dashboard, but don't know which AI platform to connect or how to begin.&lt;/p&gt;

&lt;p&gt;Our answer: an embedded AI coach right inside the dashboard. Uses Sonnet (not Opus — cost control), generates one concept, writes directly to the user's first project. From "I just signed up" to "I have a website" in under 2 minutes.&lt;/p&gt;

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

&lt;p&gt;Friday release agent (AAPI-powered automated changelog + test plans)&lt;br&gt;
patch_asset optimistic concurrency (base version hash to prevent conflicts)&lt;br&gt;
CAPI language refactor retest (waiting on external tester confirmation)&lt;/p&gt;

&lt;p&gt;If you're building with MCP or interested in AI-native development tools, I'd love to connect. The MCP ecosystem is moving fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt;: megberts/websitepublisher-mcp&lt;br&gt;
&lt;strong&gt;MCP Server&lt;/strong&gt;: mcp.websitepublisher.ai&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>webdev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>How we built an MCP server that lets AI assistants publish complete websites</title>
      <dc:creator>Michael Egberts</dc:creator>
      <pubDate>Wed, 25 Mar 2026 07:53:24 +0000</pubDate>
      <link>https://dev.to/megberts/how-we-built-an-mcp-server-that-lets-ai-assistants-publish-complete-websites-3mjh</link>
      <guid>https://dev.to/megberts/how-we-built-an-mcp-server-that-lets-ai-assistants-publish-complete-websites-3mjh</guid>
      <description>&lt;p&gt;Building a website with an AI assistant usually ends the same way: you get a wall of HTML in a code block, you paste it somewhere, and then you're on your own for hosting, deployment, and every update after that.&lt;br&gt;
We wanted to fix that. So we built WebsitePublisher.ai — a platform where AI assistants don't just describe websites, they actually build and publish them.&lt;br&gt;
Here's how it works under the hood.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core idea: AI as a first-class developer&lt;/strong&gt;&lt;br&gt;
The premise is simple. Instead of AI being a code generator that hands off to a human, we wanted AI to be the developer — with access to a real API it can call directly.&lt;br&gt;
That API needed to cover the full stack of what a website actually needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pages and assets (HTML, CSS, images)&lt;/li&gt;
&lt;li&gt;Structured data (entities, records)&lt;/li&gt;
&lt;li&gt;Forms and visitor sessions&lt;/li&gt;
&lt;li&gt;Integrations (email, SMS, payments)&lt;/li&gt;
&lt;li&gt;Scheduled tasks&lt;/li&gt;
&lt;li&gt;Vault (credentials management)
So we built it. Eight API layers, all exposed through a Model Context Protocol (MCP) server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What MCP gives us&lt;/strong&gt;&lt;br&gt;
MCP is an open protocol that lets AI assistants call tools — similar to function calling, but standardized across clients. Claude, ChatGPT, Cursor, Windsurf, GitHub Copilot, and others all support it.&lt;br&gt;
Our MCP server exposes ~55 tools. An AI can call &lt;em&gt;create_page&lt;/em&gt; with HTML content and it's live. It can call &lt;em&gt;configure_form&lt;/em&gt; and a contact form appears. It can call &lt;em&gt;create_scheduled_task&lt;/em&gt; and a nightly content refresh starts running.&lt;br&gt;
The AI doesn't need to know about hosting, DNS, or deployment. It just calls the tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API layers&lt;/strong&gt;&lt;br&gt;
We ended up with eight layers, each with a clear responsibility:&lt;br&gt;
&lt;em&gt;PAPI (Pages &amp;amp; Assets)&lt;/em&gt; — Create, update, and version HTML pages and static assets. Includes diff-patch for surgical updates, URL fetching, and a content quality warning system.&lt;br&gt;
&lt;em&gt;MAPI (Entities &amp;amp; Data)&lt;/em&gt; — A schema-less data layer. The AI defines entities (think: database tables) and creates records. Powers everything from contact lists to leaderboards to inventory.&lt;br&gt;
&lt;em&gt;SAPI (Sessions &amp;amp; Forms)&lt;/em&gt; — Anonymous visitor sessions, form submissions, visitor authentication, and analytics. No cookies to configure — it just works.&lt;br&gt;
&lt;em&gt;VAPI (Vault)&lt;/em&gt; — Encrypted credential storage. The AI stores API keys that are then used by integrations — never exposed back to the client.&lt;br&gt;
&lt;em&gt;IAPI (Integrations)&lt;/em&gt; — A proxy engine that routes calls through stored credentials to external services. Resend, Mailgun, Stripe, Mollie, Twilio — the AI picks the integration, the vault provides the credentials.&lt;br&gt;
&lt;em&gt;AAPI (Agent API)&lt;/em&gt; — Scheduled tasks. The AI creates cron jobs that run PHP handlers on a schedule. Daily content refresh, nightly cleanup, automated data sync.&lt;br&gt;
&lt;em&gt;CAPI (Coach API)&lt;/em&gt; — A conversational intake system. Ask four questions, generate a complete website. The AI handles the conversation; the platform handles the generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A real example&lt;/strong&gt;&lt;br&gt;
Here's what a Claude session looks like when building a site from scratch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: Build me a landing page for my consulting business. Focus on lead generation.

Claude: [calls get_skill to load WebsitePublisher context]
[calls create_page with full HTML/CSS]
[calls configure_form with name, email, message fields]
[calls setup_integration with Resend credentials]
[calls execute_integration to test email delivery]

Done — your page is live at yourproject.websitepublisher.ai.
The contact form sends leads to your inbox via Resend.
Want me to add a thank-you page or set up SMS notifications too?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No copy-paste. No deployment step. The AI did it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The interesting engineering problems&lt;/strong&gt;&lt;br&gt;
A few things that weren't obvious until we built them:&lt;br&gt;
&lt;em&gt;Multi-session coordination&lt;/em&gt;. When multiple AI sessions work on the same project in parallel, they can overwrite each other's progress. We built TAPI — an append-only task tracking system — specifically to solve this. Each session logs progress via INSERTs only. MAX(completion_pct) from history records prevents any session from accidentally rolling back another's progress.&lt;br&gt;
&lt;em&gt;Tool count limits&lt;/em&gt;. Our MCP server returns 55 tools in tools/list. Some clients have limits on how many they load. Our workaround: the get_skill tool loads a SKILL.md document that gives the AI a map of the full API — so even with five tools loaded, it can use the REST API directly for everything else.&lt;br&gt;
&lt;em&gt;Content quality detection&lt;/em&gt;. AIs occasionally send a file path instead of HTML content to create_page. We added a WarningCollector that catches this pattern and returns a structured warning before anything gets saved.&lt;br&gt;
&lt;em&gt;Authentication across API layers&lt;/em&gt;. Each layer needed a different auth model. Project tokens (wpa_) for AI access. Dashboard sessions (wps_) for humans. Admin tokens (wsa_) for visitor-facing login flows. Getting these to coexist cleanly took a few iterations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's next&lt;/strong&gt;&lt;br&gt;
We're currently in the Mistral sprint — working on SSE streaming for the conversational intake (so responses feel instant instead of batched), parallel concept generation, and getting listed in Mistral's connector directory.&lt;br&gt;
If you're building with MCP, or thinking about what "AI-native" infrastructure actually means in practice — we'd love to hear what you think.&lt;/p&gt;

&lt;p&gt;The MCP server is at mcp.websitepublisher.ai&lt;br&gt;
Full docs at websitepublisher.ai/docs&lt;/p&gt;

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