Skip to main content
Glama

reuse_forecasting_agent_and_get_forecast

Generate forecasts for values between 0 and 1 using a pre-configured Chronulus AI agent, providing predictions and explanations without requiring historical data.

Instructions

This tool creates a NormalizedForecaster agent with your session and input data model and then provides a forecast input data to the agent and returns the prediction data and text explanation from the agent.

When to use this tool:

  • Use this tool to request a forecast from Chronulus

  • This tool is specifically made to forecast values between 0 and 1 and does not require historical data

  • The prediction can be thought of as seasonal weights, probabilities, or shares of something as in the decimal representation of a percent

How to use this tool:

  • First, make sure you have a session_id for the forecasting or prediction use case.

  • Next, think about the features / characteristics most suitable for producing the requested forecast and then create an input_data_model that corresponds to the input_data you will provide for the thing being forecasted.

  • Remember to pass all relevant information to Chronulus including text and images provided by the user.

  • If a user gives you files about a thing you are forecasting or predicting, you should pass these as inputs to the agent using one of the following types:

    • ImageFromFile

    • List[ImageFromFile]

    • TextFromFile

    • List[TextFromFile]

    • PdfFromFile

    • List[PdfFromFile]

  • If you have a large amount of text (over 500 words) to pass to the agent, you should use the Text or List[Text] field types

  • Finally, add information about the forecasting horizon and time scale requested by the user

  • Assume the dates and datetimes in the prediction results are already converted to the appropriate local timezone if location is a factor in the use case. So do not try to convert from UTC to local time when plotting.

  • When plotting the predictions, use a Rechart time series with the appropriate axes labeled and with the prediction explanation displayed as a caption below the plot

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent_id for the forecasting or prediction use case and previously defined input_data_model
input_dataYesThe forecast inputs that you will pass to the chronulus agent to make the prediction. The keys of the dict should correspond to the InputField name you provided in input_fields.
forecast_start_dt_strYesThe datetime str in '%Y-%m-%d %H:%M:%S' format of the first value in the forecast horizon.
time_scaleNoThe times scale of the forecast horizon. Valid time scales are 'hours', 'days', and 'weeks'.days
horizon_lenNoThe integer length of the forecast horizon. Eg., 60 if a 60 day forecast was requested.

Implementation Reference

  • The handler function for the 'reuse_forecasting_agent_and_get_forecast' tool. It loads a pre-existing NormalizedForecaster agent using the provided agent_id, validates and processes the input_data, queues a forecast over the specified horizon, retrieves the prediction, and returns a dictionary containing the agent_id, prediction_id, forecast data, and textual explanation.
    async def reuse_forecasting_agent_and_get_forecast( agent_id: Annotated[str, Field(description="The agent_id for the forecasting or prediction use case and previously defined input_data_model")], input_data: Annotated[Dict[str, Union[str, dict, List[dict]]], Field( description="The forecast inputs that you will pass to the chronulus agent to make the prediction. The keys of the dict should correspond to the InputField name you provided in input_fields.")], forecast_start_dt_str: Annotated[str, Field( description="The datetime str in '%Y-%m-%d %H:%M:%S' format of the first value in the forecast horizon.")], time_scale: Annotated[str, Field( description="The times scale of the forecast horizon. Valid time scales are 'hours', 'days', and 'weeks'.", default="days")], horizon_len: Annotated[int, Field( description="The integer length of the forecast horizon. Eg., 60 if a 60 day forecast was requested.", default=60)], ) -> Union[str, Dict[str, Union[dict, str]]]: """Queues and retrieves a forecast from Chronulus with a previously created agent_id This tool provides a forecast input to a previous created Chronulus NormalizedForecaster agent and returns the prediction data and text explanation from the agent. Args: agent_id (str): The agent_id for the forecasting or prediction use case and previously defined input_data_model input_data (Dict[str, Union[str, dict, List[dict]]]): The forecast inputs that you will pass to the chronulus agent to make the prediction. The keys of the dict should correspond to the InputField name you provided in input_fields. forecast_start_dt_str (str): The datetime str in '%Y-%m-%d %H:%M:%S' format of the first value in the forecast horizon." time_scale (str): The times scale of the forecast horizon. Valid time scales are 'hours', 'days', and 'weeks'. horizon_len (int): The integer length of the forecast horizon. Eg., 60 if a 60 day forecast was requested. Returns: Union[str, Dict[str, Union[dict, str]]]: a dictionary with prediction data, a text explanation of the predictions, agent_id, and the prediction id. """ nf_agent = NormalizedForecaster.load_from_saved_estimator(estimator_id=agent_id, verbose=False) item = nf_agent.input_type(**input_data) try: forecast_start_dt = datetime.fromisoformat(forecast_start_dt_str) horizon_params = { 'start_dt': forecast_start_dt, time_scale: horizon_len } req = nf_agent.queue(item, **horizon_params) except Exception as e: return f"""Error at nf_agent: {str(e)}""" try: predictions = nf_agent.get_predictions(req.request_id) prediction = predictions[0] return { "agent_id": nf_agent.estimator_id, "prediction_id": prediction.id, 'data': prediction.to_json(orient='rows'), 'explanation': prediction.text} except Exception as e: return f"""Error on prediction: {str(e)}"""
  • Registers the 'reuse_forecasting_agent_and_get_forecast' tool with the FastMCP server instance. Note that it uses the description constant intended for the create tool.
    mcp.add_tool(reuse_forecasting_agent_and_get_forecast, description=CREATE_AGENT_AND_GET_FORECAST_DESCRIPTION)
  • Imports the 'reuse_forecasting_agent_and_get_forecast' handler from the forecaster module to make it available for registration.
    from chronulus_mcp.agent.forecaster import create_forecasting_agent_and_get_forecast, reuse_forecasting_agent_and_get_forecast, rescale_forecast
  • Defines the description string for the reuse forecasting tool, detailing usage instructions and parameters, though not directly used in the registration (uses create tool's description instead). Serves as tool schema/documentation.
    REUSE_AGENT_AND_GET_FORECAST_DESCRIPTION = f""" This tool provides a forecast input to a previous created Chronulus NormalizedForecaster agent and returns the prediction data and text explanation from the agent. When to use this tool: - Use this tool to request a forecast from a Chronulus agent that you have already created and when your input data model is unchanged - This tool is specifically made to forecast values between 0 and 1 and does not require historical data - The prediction can be thought of as seasonal weights, probabilities, or shares of something as in the decimal representation of a percent How to use this tool: - First, make sure you have an agent_id for the agent. The agent is already attached to the correct session. So you do not need to provide a session_id. - Next, reference the input data model that you previously used with the agent and create new inputs for the item being forecast that align with the previously specified input data model {FILE_TYPE_INSTRUCTIONS} - Finally, add information about the forecasting horizon and time scale requested by the user - Assume the dates and datetimes in the prediction results are already converted to the appropriate local timezone if location is a factor in the use case. So do not try to convert from UTC to local time when plotting. - When plotting the predictions, use a Rechart time series with the appropriate axes labeled and with the prediction explanation displayed as a caption below the plot """

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ChronulusAI/chronulus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server