ParseToolCallResultOp

Purpose

Evaluates individual tool invocations and adds them to the tool memory database with comprehensive assessments.

Functionality

  • Receives tool call results with input parameters, output, and metadata
  • Uses LLM to evaluate each tool call based on success and parameter alignment
  • Generates summary, evaluation, and score (0.0 or 1.0) for each call
  • Appends evaluated results to existing tool memory or creates new memory
  • Maintains a sliding window of recent tool calls (configurable limit)

Parameters

  • op.parse_tool_call_result_op.params.max_history_tool_call_cnt (integer, default: 100):
  • Maximum number of historical tool call results to retain per tool
  • When exceeded, oldest results are removed (FIFO)

  • op.parse_tool_call_result_op.params.evaluation_sleep_interval (float, default: 1.0):

  • Delay in seconds between concurrent evaluations
  • Prevents rate limiting when evaluating multiple calls

SummaryToolMemoryOp

Purpose

Analyzes accumulated tool call history and generates comprehensive usage patterns, best practices, and recommendations.

Functionality

  • Retrieves existing tool memories from the vector store
  • Intelligently skips tools where all recent calls have already been summarized (using is_summarized flag)
  • Analyzes the most recent N tool calls (configurable)
  • Calculates statistical metrics (success rate, average scores, costs)
  • Uses LLM to synthesize actionable usage guidelines
  • Updates tool memory content with generated insights
  • Marks processed calls as summarized to avoid redundant processing in future runs

Smart Skip Logic

To optimize costs and performance, SummaryToolMemoryOp tracks which tool call results have been included in a summary:

  • Skip Condition: If all recent N calls are already summarized (is_summarized=True), the tool is skipped entirely
  • Trigger Condition: If at least 1 recent call is new (is_summarized=False), re-summarization is triggered
  • Automatic Marking: After successful summarization, all processed calls are marked with is_summarized=True

Example Behavior:

Run 1: 30 new calls → Summarize all 30, mark as summarized
Run 2: Same 30 calls → Skip (all already summarized) ✓ Cost savings
Run 3: 30 old + 1 new → Re-summarize all 31, mark new call as summarized

This ensures summaries stay fresh while avoiding unnecessary LLM calls.

Parameters

  • op.summary_tool_memory_op.params.recent_call_count (integer, default: 30):
  • Number of most recent tool calls to analyze
  • Also determines the window for checking summarization status
  • Focuses on recent usage patterns

  • op.summary_tool_memory_op.params.summary_sleep_interval (float, default: 1.0):

  • Delay in seconds between concurrent summarizations
  • Prevents rate limiting when summarizing multiple tools

Return Value

The operation returns a response message indicating: - Number of tools summarized (had new unsummarized calls) - Number of tools skipped (all recent calls already summarized)

Example: "Successfully processed 5 tool memories: 2 summarized, 3 skipped (already up-to-date)"