@@ -58,6 +58,7 @@ async def get_agent(
5858 available_input_shields : list [str ],
5959 available_output_shields : list [str ],
6060 conversation_id : str | None ,
61+ no_tools : bool = False ,
6162) -> tuple [AsyncAgent , str ]:
6263 """Get existing agent or create a new one with session persistence."""
6364 if conversation_id is not None :
@@ -76,7 +77,7 @@ async def get_agent(
7677 instructions = system_prompt ,
7778 input_shields = available_input_shields if available_input_shields else [],
7879 output_shields = available_output_shields if available_output_shields else [],
79- tool_parser = GraniteToolParser .get_parser (model_id ),
80+ tool_parser = None if no_tools else GraniteToolParser .get_parser (model_id ),
8081 enable_session_persistence = True ,
8182 )
8283 conversation_id = await agent .create_session (get_suid ())
@@ -532,41 +533,53 @@ async def retrieve_response(
532533 available_input_shields ,
533534 available_output_shields ,
534535 query_request .conversation_id ,
536+ query_request .no_tools or False ,
535537 )
536538
537- # preserve compatibility when mcp_headers is not provided
538- if mcp_headers is None :
539+ # bypass tools and MCP servers if no_tools is True
540+ if query_request . no_tools :
539541 mcp_headers = {}
542+ agent .extra_headers = {}
543+ toolgroups = None
544+ else :
545+ # preserve compatibility when mcp_headers is not provided
546+ if mcp_headers is None :
547+ mcp_headers = {}
540548
541- mcp_headers = handle_mcp_headers_with_toolgroups (mcp_headers , configuration )
549+ mcp_headers = handle_mcp_headers_with_toolgroups (mcp_headers , configuration )
542550
543- if not mcp_headers and token :
544- for mcp_server in configuration .mcp_servers :
545- mcp_headers [mcp_server .url ] = {
546- "Authorization" : f"Bearer { token } " ,
547- }
551+ if not mcp_headers and token :
552+ for mcp_server in configuration .mcp_servers :
553+ mcp_headers [mcp_server .url ] = {
554+ "Authorization" : f"Bearer { token } " ,
555+ }
548556
549- agent .extra_headers = {
550- "X-LlamaStack-Provider-Data" : json .dumps (
551- {
552- "mcp_headers" : mcp_headers ,
553- }
554- ),
555- }
557+ agent .extra_headers = {
558+ "X-LlamaStack-Provider-Data" : json .dumps (
559+ {
560+ "mcp_headers" : mcp_headers ,
561+ }
562+ ),
563+ }
564+
565+ logger .debug ("Session ID: %s" , conversation_id )
566+ vector_db_ids = [
567+ vector_db .identifier for vector_db in await client .vector_dbs .list ()
568+ ]
569+ toolgroups = (get_rag_toolgroups (vector_db_ids ) or []) + [
570+ mcp_server .name for mcp_server in configuration .mcp_servers
571+ ]
572+ # Convert empty list to None for consistency with existing behavior
573+ if not toolgroups :
574+ toolgroups = None
556575
557576 logger .debug ("Session ID: %s" , conversation_id )
558- vector_db_ids = [
559- vector_db .identifier for vector_db in await client .vector_dbs .list ()
560- ]
561- toolgroups = (get_rag_toolgroups (vector_db_ids ) or []) + [
562- mcp_server .name for mcp_server in configuration .mcp_servers
563- ]
564577 response = await agent .create_turn (
565578 messages = [UserMessage (role = "user" , content = query_request .query )],
566579 session_id = conversation_id ,
567580 documents = query_request .get_documents (),
568581 stream = True ,
569- toolgroups = toolgroups or None ,
582+ toolgroups = toolgroups ,
570583 )
571584
572585 return response , conversation_id
0 commit comments