🔍 Overview
When using the Search Atlas AI Agent via the Model Context Protocol (MCP), calls to ws_bulk_send_message may return an HTTP 403 Forbidden error on the WebSocket channel. This article explains why this happens, how to confirm the root cause, and what steps to take to restore normal functionality.
⚠️ What Causes the 403 Error?
An HTTP 403 (Forbidden) response on a WebSocket upgrade or message-send request means the server received your connection attempt but rejected it due to a missing, expired, or malformed JSON Web Token (JWT). Because ws_bulk_send_message relies on the same authenticated WebSocket channel used by Website Studio's MCP tools, a broken token blocks every bulk message call — even when the underlying message delivery actually succeeds on the server side.
A 403 error on ws_bulk_send_message is almost always caused by one of the following:
- Expired or invalid JWT token: The authentication token used to open the WebSocket connection has expired or was not issued correctly, causing the server to reject subsequent message calls.
- MCP bulk sends disabled at the project level: In some cases, the ability to send bulk messages via MCP can be turned off for a specific project, either by a configuration change or a platform update.
- Incorrect WebSocket endpoint: An older integration may be pointing to a deprecated REST endpoint instead of the correct WebSocket channel, resulting in auth failures. An earlier version of Website Studio's V2 integration attempted REST endpoint calls instead of routing traffic through the correct WebSocket channel, producing 403 and 404 responses.
- False failure reporting: In some resolved cases, ws_bulk_send_message reported a 403 failure even though the message was delivered successfully. This was a known bug that has since been fixed.
- create_project dependency: Because create_project and ws_bulk_send_message share the same authenticated session setup, a broken project-creation flow could leave the WebSocket channel in an unauthenticated state for all subsequent calls.
Common symptoms include:
- All ws_bulk_send_message calls return 403 immediately without queuing messages.
- Website Studio editing tools (create_project, page edits) also fail or return errors when accessed via MCP.
- The AI Agent log shows JWT auth errors alongside the 403 response.
- Some messages appear delivered in the UI despite the 403 error in the API response — this is a known false-failure behaviour that has been patched.
✅ How to Confirm the Root Cause
Before taking corrective action, follow these steps to identify exactly what is causing the error in your project:
- Check your JWT token validity. Inspect the token being passed in your MCP connection headers. Tokens typically expire after a set period. If the token is expired, re-authenticate to generate a new one and re-establish the WebSocket connection.
- Verify your WebSocket endpoint. Confirm that your integration is connecting to the correct WebSocket URL for the Search Atlas agent channel. If you see REST-style URLs (e.g., /api/v2/...) in your request logs, your integration may be misconfigured and needs to be updated to use the WebSocket endpoint.
- Test with a fresh project. Create a new project and attempt a ws_bulk_send_message call. If the call succeeds on a new project but fails on the original one, the issue is likely tied to that specific project's configuration.
- Check whether MCP sends are enabled. In your project settings, confirm that MCP-based messaging is active. If the option appears greyed out or unavailable, the feature may have been disabled for your account or project. Note that a true MCP-disabled state returns a configuration-level error message (such as "MCP tool not available" or "feature disabled") indicating the feature is turned off — it does not return an HTTP 403. If you are receiving a 403 specifically, MCP messaging is enabled but the request is being rejected at the authentication layer.
- Review recent platform updates. If the error appeared suddenly without any changes on your end, it may be related to a recent platform update. Check the Search Atlas changelog or status page for any relevant notices.
🔧 Steps to Restore ws_bulk_send_message
Once you have identified the cause, use the appropriate fix below:
- Expired JWT token: Re-authenticate your MCP client using your Search Atlas credentials to obtain a fresh JWT token. In Search Atlas, go to Account Menu → Settings → API Keys and regenerate your API key. Copy the new key and update it in your MCP client configuration. Restart your AI Agent or MCP client to force a fresh WebSocket handshake with the new JWT. Do not reuse a cached session token from before a fix was deployed. Update your WebSocket connection to use the new token before retrying ws_bulk_send_message.
- Wrong endpoint: Update your integration to point to the correct WebSocket channel. Remove any references to legacy REST endpoints. Contact support via the chat widget if you need the current endpoint details for your account.
- Project-level configuration issue: If a specific project appears to have MCP messaging disabled or misconfigured, try removing and re-adding the project connection within the AI Agent settings. This resets the channel configuration. Also confirm that the target project was created successfully by opening Website Studio and verifying it exists. If create_project previously failed silently, the project may be missing, which will cause all subsequent ws_bulk_send_message calls to 403 because there is no valid channel to attach to. Re-run create_project if needed.
- False failure on successful delivery: If your messages are actually being delivered despite the 403 error appearing in your logs, this was a known reporting bug that has been resolved in recent platform updates. Ensure your platform is on the latest version and verify message delivery directly in Website Studio before assuming a failure occurred. If you retried sends during the false-failure window, your project may contain duplicate content — review the affected pages in Website Studio and remove any duplicates manually.
- Test with a single message first. Before running a bulk send, call ws_bulk_send_message with a single small payload to confirm the channel is authenticated and returning 200.
🚫 How to Confirm if MCP Sends Are Disabled
To check whether MCP bulk messaging has been disabled for your project:
- Click Atlas Agent in the header (e.g., 'Launch Atlas Agent' on Home).
- Navigate to the project in question and open its MCP Channel Settings.
- Look for a toggle or status indicator labelled Bulk Messaging or MCP Sends. If it is off, enable it and save your changes.
- Retry the ws_bulk_send_message call to confirm the error is resolved.
If the toggle is not visible or cannot be enabled, the feature may require reactivation at the account level by a member of our team. If you see a message such as "MCP tool not available" or "feature disabled", contact support to confirm your plan includes MCP access.
💡 Prevention Tips
- Always handle JWT token expiry gracefully in your MCP integration by implementing automatic re-authentication before the token expires.
- Log both the HTTP status code and the actual delivery outcome separately so you can distinguish between true failures and false reporting errors.
- After any Search Atlas platform update, do a quick test call on your most active projects to confirm WebSocket connectivity is intact.
- After any bulk send retry cycle, review affected pages in Website Studio to check for duplicate content that may have been created during a false-failure window.
🙋 Still Need Help?
If you have followed the steps above and are still experiencing 403 errors on ws_bulk_send_message, our team can review your account's WebSocket logs directly. To reach us, open the chat widget in the bottom-right corner of the platform and type human teammate.