The 4 analysts (market, news, social, fundamentals) now detect a
ChatClaudeAgent LLM and dispatch to an SDK-native runner: LangChain @tool
functions are wrapped as in-process MCP tools via create_sdk_mcp_server, and
the SDK owns the iterative tool-calling loop. Claude returns the final report
in one call, so the analyst node outputs an AIMessage with no tool_calls and
the existing conditional edges route straight to the message-clear step.
Together with the Shape A provider this lets a Claude Max subscription drive
the full TradingAgents graph without an Anthropic API key. Other providers
continue to take the original bind_tools + LangGraph ToolNode path unchanged.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Routes inference through Claude Code's OAuth session, so a Claude Max/Pro
subscription authenticates without an Anthropic API key. Shape A supports
plain .invoke() for prompt-only call sites (researchers, managers, trader,
reflection, signal processing); bind_tools raises NotImplementedError until
Shape B rewrites analysts to use the SDK's native tool loop.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>