When a model has capabilities.memory set to true, the tools for memory functions should be registered automatically in the chat request. This will prevent tool loops and ensure that memory functions can be executed properly.
## Bug Description When a model has `capabilities.memory: true` in its meta config and the system prompt instructs the model to use `add_memory`/`search_memories`, the model generates tool calls for these functions. However, the tools are not registered for execution because `get_builtin_tools()` in `utils/tools.py` requires `features.get("memory")` to be truthy — which depends on the frontend sending `features: {memory: true}` in the chat request. This creates a tool loop: the model calls `add_memory`, but since the tool isn't registered (`tool_function_name not in tools`), the result is empty, and the model retries up to `CHAT_RESPONSE_MAX_TOOL_CALL_RETRIES` (30) times. ## Steps to Reproduce 1. Configure a model with `capabilities.memory: true` in the model editor 2. Set a system prompt that tells the model to use `add_memory` for preferences 3. Set `function_calling: native` in model params 4. Start a new chat with this model 5. Send: "Remember my favorite color is blue" 6. The