API Models
Data models and schemas used across the API. All models use Pydantic unless noted as @dataclass.
Provider Models
Defined in providers/base.py.
Message
| Field |
Type |
Required |
Description |
role |
MessageRole |
yes |
"system", "user", "assistant", "tool" |
content |
string |
yes |
Message text |
name |
string |
no |
Tool name (for tool messages) |
tool_call_id |
string |
no |
ID linking to a tool call |
tool_calls |
list[dict] |
no |
Tool calls requested by assistant |
| Field |
Type |
Description |
id |
string |
Unique tool call ID |
name |
string |
Tool function name |
arguments |
dict |
Parsed arguments |
StreamChunk
| Field |
Type |
Description |
content |
string |
Token text (may be empty) |
finish_reason |
string |
null, "stop", "tool_calls" |
tool_calls |
list[ToolCall] |
Tool calls collected during stream |
CompletionResult
| Field |
Type |
Description |
content |
string |
Generated text |
finish_reason |
string |
"stop", "length", "tool_calls" |
tool_calls |
list[ToolCall] |
Tool calls (if function calling) |
usage |
dict |
{"prompt_tokens": int, "completion_tokens": int, "total_tokens": int} |
model |
string |
Model ID used |
raw_response |
dict |
Full provider response (debug) |
ModelCapabilities (@dataclass)
| Field |
Type |
Default |
Description |
supports_tools |
bool |
false |
Function calling support |
supports_vision |
bool |
false |
Image input support |
supports_streaming |
bool |
true |
Streaming support |
supports_json_mode |
bool |
false |
JSON mode support |
context_window |
int |
4096 |
Max input tokens |
max_output_tokens |
int |
null |
Max output tokens |
cost_per_1k_input |
float |
null |
Input cost in USD |
cost_per_1k_output |
float |
null |
Output cost in USD |
Agent Models
Defined in agent/core.py.
AgentResult
| Field |
Type |
Description |
task_id |
string |
Short UUID for the task |
status |
AgentStatus |
"idle", "planning", "reasoning", "executing", "complete", "failed", "cancelled" |
answer |
string |
Final response text |
thinking |
string |
Extracted <think> tag content |
has_thinking |
bool |
Whether thinking was extracted |
plan_steps |
int |
Number of plan steps executed |
reasoning_steps |
int |
Number of reasoning steps |
tools_used |
list[string] |
Names of tools invoked |
models_used |
list[string] |
Model IDs used |
total_tokens |
int |
Total token count |
total_time_ms |
float |
Elapsed time in milliseconds |
trace |
list[dict] |
Debug trace (optional) |
AgentConfig (@dataclass)
| Field |
Type |
Default |
Description |
name |
string |
"agentx" |
Agent name |
user_id |
string |
null |
User identifier |
default_model |
string |
"llama3.2" |
Default model |
reasoning_model |
string |
null |
Override for reasoning |
drafting_model |
string |
null |
Override for drafting |
max_iterations |
int |
20 |
Max task iterations |
timeout_seconds |
float |
300.0 |
Task timeout |
enable_planning |
bool |
true |
Enable task planning |
enable_reasoning |
bool |
true |
Enable reasoning strategies |
enable_drafting |
bool |
false |
Enable drafting |
enable_memory |
bool |
true |
Enable memory system |
enable_tools |
bool |
true |
Enable MCP tools |
default_reasoning_strategy |
string |
"auto" |
Strategy: "auto", "cot", "tot", "react", "reflection" |
allowed_tools |
list[string] |
null |
Whitelist tools (null = all) |
blocked_tools |
list[string] |
null |
Blacklist tools |
max_tool_rounds |
int |
10 |
Max tool round-trips |
Memory Models
Defined in kit/agent_memory/models.py.
Turn
| Field |
Type |
Default |
Description |
id |
string |
auto UUID |
Turn identifier |
conversation_id |
string |
required |
Parent conversation |
index |
int |
required |
Position in conversation |
timestamp |
datetime |
now (UTC) |
When the turn occurred |
role |
string |
required |
"user", "assistant", "system", "tool" |
content |
string |
required |
Message content |
embedding |
list[float] |
null |
Vector embedding |
token_count |
int |
null |
Token count |
metadata |
dict |
{} |
Extra data (model, latency, etc.) |
channel |
string |
"_global" |
Memory channel |
Entity
| Field |
Type |
Default |
Description |
id |
string |
auto UUID |
Entity identifier |
name |
string |
required |
Entity name |
type |
string |
required |
"Person", "Organization", "Concept", etc. |
aliases |
list[string] |
[] |
Alternative names |
description |
string |
null |
Entity description |
embedding |
list[float] |
null |
Vector embedding |
salience |
float |
0.5 |
Importance score (0–1) |
properties |
dict |
{} |
Arbitrary key-value properties |
first_seen |
datetime |
now |
When first encountered |
last_accessed |
datetime |
now |
Last retrieval time |
access_count |
int |
0 |
Retrieval count |
channel |
string |
"_global" |
Memory channel |
Fact
| Field |
Type |
Default |
Description |
id |
string |
auto UUID |
Fact identifier |
claim |
string |
required |
The factual claim |
claim_hash |
string |
auto |
SHA256 hash for duplicate detection |
confidence |
float |
0.8 |
Confidence score (0–1) |
source |
string |
required |
"extraction", "user_stated", "inferred" |
source_turn_id |
string |
null |
Turn this fact was extracted from |
entity_ids |
list[string] |
[] |
Linked entities |
embedding |
list[float] |
null |
Vector embedding |
created_at |
datetime |
now |
Creation time |
channel |
string |
"_global" |
Memory channel |
last_accessed |
datetime |
now |
Last retrieval time |
access_count |
int |
0 |
Retrieval count |
salience |
float |
0.5 |
Importance score |
temporal_context |
string |
null |
"current", "past", "future" |
superseded_at |
datetime |
null |
When superseded by correction |
superseded_by_id |
string |
null |
ID of superseding fact |
supersedes_id |
string |
null |
ID of fact this supersedes |
flagged_for_review |
bool |
false |
Flagged for contradiction review |
Goal
| Field |
Type |
Default |
Description |
id |
string |
auto UUID |
Goal identifier |
description |
string |
required |
Goal description |
status |
string |
"active" |
"active", "completed", "abandoned", "blocked" |
priority |
int |
3 |
Priority 1–5 |
parent_goal_id |
string |
null |
Parent goal for hierarchy |
embedding |
list[float] |
null |
Vector embedding |
created_at |
datetime |
now |
Creation time |
deadline |
datetime |
null |
Optional deadline |
channel |
string |
"_global" |
Memory channel |
Strategy
| Field |
Type |
Default |
Description |
id |
string |
auto UUID |
Strategy identifier |
description |
string |
required |
Strategy description |
context_pattern |
string |
required |
Matching pattern (regex/keywords) |
tool_sequence |
list[string] |
[] |
Ordered tool names |
embedding |
list[float] |
null |
Vector embedding |
success_count |
int |
0 |
Successful uses |
failure_count |
int |
0 |
Failed uses |
last_used |
datetime |
null |
Last invocation |
channel |
string |
"_global" |
Memory channel |
MemoryBundle
Aggregated retrieval result returned by AgentMemory.remember().
| Field |
Type |
Description |
relevant_turns |
list[dict] |
Recent relevant conversation turns |
entities |
list[dict] |
Matching entities |
facts |
list[dict] |
Relevant facts |
strategies |
list[dict] |
Applicable strategies |
active_goals |
list[dict] |
Current active goals |
user_context |
dict |
User-level context |
Has a to_context_string() method that formats the bundle for LLM prompt injection.
Prompt Models
Defined in prompts/models.py.
PromptSection
| Field |
Type |
Description |
id |
string |
Unique section identifier |
name |
string |
Display name |
type |
SectionType |
"persona", "task", "format", "constraints", "examples", "context", "custom" |
content |
string |
Prompt text |
enabled |
bool |
Whether active in composition |
order |
int |
Sort order within profile |
PromptProfile
| Field |
Type |
Description |
id |
string |
Unique profile identifier |
name |
string |
Display name |
description |
string |
Usage description |
sections |
list[PromptSection] |
Ordered sections |
is_default |
bool |
Whether this is the default profile |
GlobalPrompt
| Field |
Type |
Description |
content |
string |
Global prompt text |
enabled |
bool |
Whether active |
PromptConfig
Combines all prompt components for a request.
| Field |
Type |
Description |
global_prompt |
GlobalPrompt |
Core persona prompt |
profile |
PromptProfile |
Selected profile |
mcp_tools_prompt |
string |
Auto-generated tools prompt |
structured_output |
StructuredOutputConfig |
Output constraints |
additional_context |
string |
Request-specific context |
system_override |
string |
Replaces entire system prompt |
Composition order: Global prompt → MCP tools → Profile sections → Additional context.
MCP Models
ServerConfig (@dataclass, defined in mcp/server_registry.py)
| Field |
Type |
Description |
name |
string |
Server identifier |
transport |
TransportType |
"stdio", "sse", "streamable_http" |
command |
string |
Command for stdio transport |
args |
list[string] |
Command arguments |
env |
dict |
Environment variables (resolved from $VAR syntax) |
url |
string |
URL for SSE/HTTP transport |
headers |
dict |
HTTP headers (env vars resolved) |
| Field |
Type |
Description |
name |
string |
Tool name |
description |
string |
Tool description |
input_schema |
dict |
JSON Schema for parameters |
server_name |
string |
Source server |
ResourceInfo (@dataclass, defined in mcp/client.py)
| Field |
Type |
Description |
uri |
string |
Resource URI |
name |
string |
Resource name |
description |
string |
Resource description |
mime_type |
string |
Content type |
server_name |
string |
Source server |
SSE Event Schemas
Events emitted by POST /api/agent/chat/stream:
| Event |
Schema |
start |
{"task_id": string, "model": string} |
chunk |
{"content": string} |
tool_call |
{"tool": string, "arguments": dict} |
tool_result |
{"tool": string, "content": string} |
done |
{"task_id": string, "thinking": string?, "has_thinking": bool, "total_time_ms": float, "session_id": string} |
error |
{"error": string} |