ReasoningMemory API Reference
Table of Contents
API for reasoning trace and tool call storage.
Overview
ReasoningMemory records how agents solve problems: reasoning steps, tool calls, and outcomes.
async with MemoryClient(settings) as client:
# Access via client
reasoning = client.reasoning
# Start a reasoning trace
trace = await reasoning.start_trace(
session_id="user-123",
task="Find restaurant recommendations"
)
Trace Operations
start_trace
Start a new reasoning trace.
trace = await reasoning.start_trace(
session_id: str,
task: str,
triggered_by_message_id: str | None = None,
metadata: dict[str, Any] | None = None,
)
complete_trace
Complete a reasoning trace with outcome.
trace = await reasoning.complete_trace(
trace_id: str,
outcome: str,
success: bool = True,
)
Step Operations
Tool Call Operations
record_tool_call
Record a tool call within a step.
tool_call = await reasoning.record_tool_call(
step_id: str,
tool_name: str,
arguments: dict[str, Any],
result: Any,
duration_ms: float | None = None,
success: bool = True,
error: str | None = None,
message_id: str | None = None,
)
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
|
|
required |
Parent step ID |
|
|
required |
Name of the tool called |
|
|
required |
Tool arguments |
|
|
required |
Tool result |
|
|
|
Execution time in milliseconds |
|
|
|
Whether the call succeeded |
|
|
|
Error message if failed |
|
|
|
Message that triggered the call |
Search Operations
Statistics
Models
ReasoningTrace
@dataclass
class ReasoningTrace:
id: str
session_id: str
task: str
outcome: str | None
success: bool | None
started_at: datetime
completed_at: datetime | None
metadata: dict[str, Any]
embedding: list[float] | None
Example
async with MemoryClient(settings) as client:
# Start reasoning trace linked to user message
trace = await client.reasoning.start_trace(
session_id="user-123",
task="Find Italian restaurants nearby",
triggered_by_message_id=message.id,
)
# Add reasoning step
step = await client.reasoning.add_step(
trace.id,
thought="User wants Italian food. I should search for nearby restaurants.",
action="search_restaurants",
)
# Record tool call
await client.reasoning.record_tool_call(
step.id,
tool_name="search_api",
arguments={"cuisine": "Italian", "location": "nearby"},
result=[{"name": "La Trattoria", "rating": 4.5}],
duration_ms=234.5,
)
# Complete trace
await client.reasoning.complete_trace(
trace.id,
outcome="Recommended La Trattoria based on high rating",
success=True,
)
# Later: find similar past reasoning
similar = await client.reasoning.search_traces("restaurant recommendations")
for trace, score in similar:
print(f"[{score:.2f}] {trace.task}: {trace.outcome}")