What was going on
Using the Strands Agents harness (@strands-agents/cli 0.1.0) with a Bedrock Mantle OpenAI model such as bedrock-mantle/openai.gpt-6-astra, any web search triggered a hard 400 from Mantle: the tools schema only accepts 'function' or 'mcp', but the harness injected a native { type: 'web_search' } tool. The root cause was hasWebSearch() returning true for bedrock-mantle openai.gpt-5.* / gpt-6-* models, so resolveModel added the unsupported native tool. On top of that, setting builtinTools.web_search to "exa" explicitly was ignored, so users had no way around the 400. Seen on Node.js 26.x / macOS with harness 0.1.0.
What fixed it
This was a real bug, fixed in the harness in PR #4489. The fix stops sending the unsupported native web_search tool to Bedrock Mantle models and makes an explicit web_search: "exa" selection correctly override native search, with cross-SDK (TypeScript/Python) regression tests and updated docs. If you hit the 400, update to a harness version containing #4489; there was no clean workaround before the fix since the explicit "exa" selection was being ignored.