1717from futuresearch .generated .api .tasks import get_task_status_tasks_task_id_status_get
1818from futuresearch .generated .models .task_status import TaskStatus
1919from futuresearch .ops import (
20- agent_map_async ,
20+ _submit_agent_map ,
21+ _submit_rank ,
22+ _submit_single_agent ,
2123 classify_async ,
2224 create_table_artifact ,
2325 dedupe_async ,
2426 forecast_async ,
2527 merge_async ,
26- rank_async ,
27- single_agent_async ,
2828)
2929from futuresearch .session import list_sessions
3030from futuresearch .task import cancel_task
5151 StdioResultsInput ,
5252 UploadDataInput ,
5353 UseListInput ,
54- _schema_to_model ,
5554)
5655from futuresearch_mcp .result_store import (
5756 _build_result_response ,
@@ -270,10 +269,6 @@ async def futuresearch_agent(
270269
271270 input_data = params ._aid_or_dataframe
272271
273- response_model : type [BaseModel ] | None = None
274- if params .response_schema :
275- response_model = _schema_to_model ("AgentResult" , params .response_schema )
276-
277272 async with create_linked_session (
278273 client = client , session_id = params .session_id , name = params .session_name
279274 ) as session :
@@ -284,8 +279,8 @@ async def futuresearch_agent(
284279 "input" : input_data ,
285280 "enforce_row_independence" : params .enforce_row_independence ,
286281 }
287- if response_model :
288- kwargs ["response_model " ] = response_model
282+ if params . response_schema :
283+ kwargs ["response_schema " ] = params . response_schema
289284 kwargs ["effort_level" ] = params .effort_level
290285 if params .effort_level is None :
291286 if params .llm is not None :
@@ -294,8 +289,8 @@ async def futuresearch_agent(
294289 kwargs ["iteration_budget" ] = params .iteration_budget
295290 if params .include_reasoning is not None :
296291 kwargs ["include_reasoning" ] = params .include_reasoning
297- cohort_task = await agent_map_async (** kwargs )
298- task_id = str (cohort_task .task_id )
292+ submitted = await _submit_agent_map (** kwargs )
293+ task_id = str (submitted .task_id )
299294 total = len (input_data ) if isinstance (input_data , pd .DataFrame ) else 0
300295
301296 return await create_tool_response (
@@ -356,10 +351,6 @@ async def futuresearch_single_agent(
356351 log_client_info (ctx , "futuresearch_single_agent" )
357352 client = _get_client (ctx )
358353
359- response_model : type [BaseModel ] | None = None
360- if params .response_schema :
361- response_model = _schema_to_model ("SingleAgentResult" , params .response_schema )
362-
363354 # Convert input_data dict to a BaseModel if provided
364355 input_model : BaseModel | None = None
365356 if params .input_data :
@@ -378,8 +369,8 @@ async def futuresearch_single_agent(
378369 }
379370 if input_model is not None :
380371 kwargs ["input" ] = input_model
381- if response_model is not None :
382- kwargs ["response_model " ] = response_model
372+ if params . response_schema :
373+ kwargs ["response_schema " ] = params . response_schema
383374 kwargs ["effort_level" ] = params .effort_level
384375 if params .effort_level is None :
385376 if params .llm is not None :
@@ -388,8 +379,8 @@ async def futuresearch_single_agent(
388379 kwargs ["iteration_budget" ] = params .iteration_budget
389380 if params .include_reasoning is not None :
390381 kwargs ["include_reasoning" ] = params .include_reasoning
391- cohort_task = await single_agent_async (** kwargs )
392- task_id = str (cohort_task .task_id )
382+ submitted = await _submit_single_agent (** kwargs )
383+ task_id = str (submitted .task_id )
393384
394385 return await create_tool_response (
395386 task_id = task_id ,
@@ -445,24 +436,20 @@ async def futuresearch_rank(
445436
446437 input_data = params ._aid_or_dataframe
447438
448- response_model : type [BaseModel ] | None = None
449- if params .response_schema :
450- response_model = _schema_to_model ("RankResult" , params .response_schema )
451-
452439 async with create_linked_session (
453440 client = client , session_id = params .session_id , name = params .session_name
454441 ) as session :
455442 session_id_str = str (session .session_id )
456- cohort_task = await rank_async (
443+ submitted = await _submit_rank (
457444 task = params .task ,
458445 session = session ,
459446 input = input_data ,
460447 field_name = params .field_name ,
461448 field_type = params .field_type ,
462- response_model = response_model ,
449+ response_schema = params . response_schema ,
463450 ascending_order = params .ascending_order ,
464451 )
465- task_id = str (cohort_task .task_id )
452+ task_id = str (submitted .task_id )
466453 total = len (input_data ) if isinstance (input_data , pd .DataFrame ) else 0
467454
468455 return await create_tool_response (
0 commit comments