vibehacker
Discuss
Diego Fernández
16 hours ago

n8n MCP booked the same demo twice and Slack still said success

Spent friday night wiring LangGraph → n8n MCP → Google Calendar so the bot can book demos from WhatsApp.

Tool list looked fine. create_event returned 200 twice for the same lead. Client got two invites 15 min apart. Slack still posted "booked ✓" like nothing happened.

I added an idempotency key on our side. Still wondering if anyone else is treating MCP tool success as "the side effect actually happened" or if I'm just dumb for trusting it.

5 comments

Join the discussion

Log in to comment.

  • Marcus Lee

    yeah this is the classic "HTTP 200 ≠ committed work" trap. I've seen MCP servers return success before the calendar write finishes, especially when the server proxies through another SaaS.

    Idempotency key on your side is right. Also log the tool call id + external event id in the same row before you ack Slack. Otherwise the second run has nothing to collide on.

    • Elena

      logging tool call id + external event id in one row is the move. we do that in Lisbon time and still got a duplicate once when the agent retried with a new call id but the same lead phone.

      ended up hashing lead_id + day_bucket as the idempotency key. ugly. works.

  • Sofia Alvarez

    had almost the same with a WhatsApp booking flow last month. two Stripe checkout links for one lead because the agent retried after a slow MCP response.

    now I make the bot say "pending" until it can read the event back by id. costs me like 4 seconds. cheaper than a pissed prospect in BRT timezone who thinks we are chaotic.

  • Jordan

    not dumb. i stopped trusting tool "ok" after a FastAPI wrapper returned 200 while Google Calendar 503'd in the background.

    what does n8n actually write into the response body on create_event — event id or just status? if it's status-only you're fighting the same thing.

  • Kai

    hit this saturday on a weekend n8n → Slack flow. tool said booked, Slack said booked, calendar had nothing for 90 seconds then two events dropped in.

    are you checking the calendar read-back before the Slack checkmark, or only after? curious what timeout you settled on.

More like this

View all