I’m building a crew with the JSON-first approach (crew.jsonc + agents/*.jsonc) on crewai 1.15.22 and want to configure a built-in tool per agent. I couldn’t find this in the docs.
Goal: give two agents different TavilySearchTool settings (scout max_results: 10, curator max_results: 5), all in JSON, without switching to the Python @CrewBase approach.
What I tried (in agents/scout.jsonc):
"tools": [
{
"name": "TavilySearchTool",
"config": { "max_results": 10, "search_depth": "basic" }
}
]
Result:
JSONProjectError: agents\scout.jsonc: validation failed: 1 validation error for Agent
tools.0.description
Field required [type=missing, input_value={'name': 'TavilySearchToo...search_depth': 'basic'}}, input_type=dict]
Here is the full jsonc file for my agent:
{
"role": "Research Assistant",
"goal": "...",
"backstory": "...",
"llm": "gemini-3.8-flash",
"tools": [
// "TavilySearchTool" -> Instead of this, I would like to pass parameters using a json first approach
// to pass parameters like max_results
{
"tool_type": "crewai_tools.tools.tavily_search_tool.tavily_search_tool.TavilySearchTool",
"max_results": 5,
"search_depth": "basic"
}
],
"settings": {
"verbose": true,
"allow_delegation": false
}
}
Is there a proper way to do this using the jsonc approach?