Common MCP pitfalls
List of frequent problems when building flows with the MCP and how to resolve them.
Reference
- IDs are reassigned on each write
- After any add_node or configure_node, node IDs change. Always call get_flow to get the current state before the next operation.
- WAF blocks default User-Agent
- Cloudflare may block requests with generic HTTP library User-Agents. Set a custom User-Agent (e.g. 'MyApp/1.0').
- execute_flow expects a real payload
- execute_flow doesn't simulate the trigger. You need to pass a payload matching what the channel would send. Use get_node_sample for an example.
- Sim stays in «Waiting» forever
- The phone number is wired to the webhook of the wrong environment (dev vs prod). Check in Meta Developer Console which app has the webhook.
- Orphan node blocks the flow
- validate_flow detects orphans. A flow with orphans can't execute. Connect or delete all unconnected nodes.
- No cross-worker Redis sync
- Pulbot doesn't use managed Redis for cross-instance state. Persistent state goes to MongoDB, not Redis.
- Live flows = pause before editing
- Never edit nodes or connections of a production flow without pausing it first. Exception: global tool definitions.
- list_tools without category doesn't show KV
- To see global tools like KV Save/Get/Delete, use list_tools(category='global/all').
Next step
See code examples to get started quickly.