Configuration Models
Data structures for system configuration — profile extraction, playbook extraction, evaluation, storage, and LLM settings.
ConfigmodelRoot configuration object for the Emend system. Every nested type below is linked — click through to see the fields each accepts.
| Prop | Type |
|---|---|
storage_configrequired | StorageConfig |
storage_config_test | StorageConfigTest |
agent_context_prompt | string |
tool_can_use | array[ToolUseConfig] |
profile_extractor_config | ProfileExtractorConfig |
user_playbook_extractor_config | UserPlaybookExtractorConfig |
agent_success_config | AgentSuccessConfig |
extraction_preset | ExtractionPreset |
window_size | integer |
stride_size | integer |
api_key_config | APIKeyConfig |
llm_config | LLMConfig |
retrieval_experiment_config | RetrievalExperimentConfig |
retrieval_experiment_history | array[RetrievalExperimentRecord] |
skip_should_run_check | boolean |
enable_document_expansion | boolean |
retrieval_floor | RetrievalFloorConfig |
playbook_optimizer_config | PlaybookOptimizerConfig |
lineage_gc | LineageGCConfig |
expiry_reclamation | ExpiryReclamationConfig |
governance_retention | GovernanceRetentionConfig |
pending_tool_call_config | PendingToolCallConfig |
shadow_mode_enabled | boolean |
eval_sample_n_per_stratum | integer |
eval_concurrency_limit | integer |
shadow_comparison_judge_prompt_version | string |
Enterprise Offline Tuner Configuration
Enterprise get_config responses include a separate offline-tuner overlay:
{ "offline_tuner_config": { "enabled": false }}offline_tuner_config is a response overlay, not a persisted shared Config field. The Python client's set_config method strips response overlays from Config model instances, including objects returned by get_config; a dictionary containing an overlay is rejected by strict shared-Config validation. The current release returns { "enabled": false } as availability status. Attempts to set enabled: true are unavailable: managed deployments return tuner_not_composed or config_reset_incomplete, and self-hosted deployments return deployment_unsupported. There is no launched or reachable offline-tuner generator, optimizer, automatic application, publication, or successor workflow.StorageConfigmodelStorageConfig is a union type — pass whichever variant matches your deployment. None is also accepted (no storage configured yet).
StorageConfigSQLitemodelLocal SQLite storage. The default for Local OSS.
| Prop | Type |
|---|---|
db_path | string |
StorageConfigSupabasemodelSupabase-backed storage for Hosted Enterprise configurations.
| Prop | Type |
|---|---|
urlrequired | string |
keyrequired | string |
db_urlrequired | string |
read_url | string |
read_key | string |
schema | string |
StorageConfigPostgresmodelNative PostgreSQL-backed storage for RDS or bring-your-own Postgres deployments.
| Prop | Type |
|---|---|
type | literal["postgres"] |
db_urlrequired | string |
schema | string |
pool_size | integer |
pool_acquire_timeout | number |
read_db_url | string |
read_pool_size | integer |
read_pool_acquire_timeout | number |
StorageConfigManagedSupabasemodelRead-only representation returned when Hosted Enterprise manages storage credentials.
| Prop | Type |
|---|---|
managed_byrequired | literal["platform"] |
schema_present | boolean |
ToolUseConfigmodelDefines a tool that the agent can use.
| Prop | Type |
|---|---|
tool_namerequired | string |
tool_descriptionrequired | string |
ProfileExtractorConfigmodelConfiguration for profile extraction from interactions.
| Prop | Type |
|---|---|
extractor_name | string |
extraction_definition_promptrequired | string |
context_prompt | string |
tagging_definition_prompt | string |
should_extract_profile_prompt_override | string |
request_sources_enabled | array[string] |
manual_trigger | boolean |
window_size_override | integer |
stride_size_override | integer |
UserPlaybookExtractorConfigmodelConfiguration for user-playbook extraction. Also exposed as PlaybookConfig (deprecated alias).
| Prop | Type |
|---|---|
extractor_name | string |
extraction_definition_promptrequired | string |
context_prompt | string |
tagging_definition_prompt | string |
aggregation_config | PlaybookAggregatorConfig |
deduplication_config | DeduplicationConfig |
request_sources_enabled | array[string] |
window_size_override | integer |
stride_size_override | integer |
PlaybookAggregatorConfigmodelConfiguration for playbook aggregation (clustering similar user playbooks into agent playbooks).
| Prop | Type |
|---|---|
min_cluster_size | integer |
reaggregation_trigger_count | integer |
clustering_similarity | float | null |
direction_overlap_threshold | float |
DeduplicationConfigmodelControls bounded candidate generation when looking for existing playbooks to dedup against. The LLM consolidation stage makes the final duplicate decision.
| Prop | Type |
|---|---|
search_threshold | float |
search_top_k | integer |
max_unified_content_chars | integer |
RetrievalExperimentConfigmodelThe one retrieval experiment currently assigning agent search traffic.
| Prop | Type |
|---|---|
experiment_idrequired | string |
holdout_percentagerequired | float |
RetrievalExperimentRecordmodelHistorical lifecycle metadata for a retrieval experiment. It contains all RetrievalExperimentConfig fields plus:
| Prop | Type |
|---|---|
started_atrequired | integer |
ended_at | integer |
RetrievalFloorConfigmodelConfiguration for the read-path relevance floor applied on unified search (/api/search). Retrieved candidates are reranked by a cross-encoder, and any result whose relevance score falls below the per-arm floor is dropped. Because filtering happens after retrieval, a search arm can return fewer than top_k results — including zero — when nothing clears its floor.
Floors are raw, model-specific cross-encoder logits, not probabilities, so they are not bounded to [0, 1] and can be negative. Leave a floor null to use the calibrated default for the reranker discovered from the private inference service; a numeric value, including 0.0, is preserved exactly.
| Prop | Type |
|---|---|
enabled | boolean |
pool_size | integer |
profile_floor | float | null |
user_playbook_floor | float | null |
agent_playbook_floor | float | null |
PlaybookOptimizerConfigmodelOpt-in (disabled by default) GEPA-backed optimizer for playbook content. Requires exactly one assistant backend — webhook_url or assistant_script_path, not both.
| Prop | Type |
|---|---|
enabled | boolean |
optimize_agent_playbooks | boolean |
optimize_user_playbooks | boolean |
auto_update_pending_agent_playbooks | boolean |
auto_update_user_playbooks | boolean |
max_metric_calls | integer |
max_turns | integer |
early_stop_score | float |
reflection_minibatch_size | integer |
max_validation_windows | integer |
min_commit_windows | integer |
min_commit_score | float |
min_commit_likert | integer |
use_merge | boolean |
max_merge_invocations | integer |
reflection_model | string |
webhook_url | string |
webhook_auth_header | string |
webhook_timeout_seconds | integer |
webhook_max_retries | integer |
webhook_backoff_base_seconds | float |
assistant_script_path | string |
assistant_script_args | array[string] |
scheduler_jitter_seconds | float |
cooldown_after_aborts_seconds | integer |
abort_cooldown_threshold | integer |
PendingToolCallConfigmodelConfiguration for non-blocking pending tool calls (async information tools) during classic extraction.
| Prop | Type |
|---|---|
enabled | boolean |
max_pending_followups_per_scope | integer |
pending_ttl_seconds | integer |
dedup_cache_seconds | integer |
prior_answer_valid_seconds | integer |
similarity_threshold | float |
resume_poll_interval_seconds | float |
resume_claim_ttl_seconds | integer |
max_resume_attempts | integer |
max_finalization_attempts | integer |
hmac_secrets | array[string] |
tool_overrides | dict[str, PendingToolCallToolOverrideConfig] |
LineageGCConfigmodelControls reclamation of retired profile and playbook tombstones after the audit and rollback window.
| Prop | Type |
|---|---|
enabled | boolean |
tombstone_grace_window_days | integer |
poll_interval_seconds | integer |
ExpiryReclamationConfigmodel| Prop | Type |
|---|---|
enabled | boolean |
GovernanceRetentionConfigmodelHosted Enterprise retention policy for audit events. These fields are accepted but do not perform audit-event reclamation in Local OSS.
| Prop | Type |
|---|---|
audit_events_retention_enabled | boolean |
audit_events_retention_days | integer |
audit_events_delete_batch_limit | integer |
AgentSuccessConfigmodelConfiguration for agent success evaluation.
| Prop | Type |
|---|---|
evaluation_name | string |
success_definition_promptrequired | string |
tagging_definition_prompt | string |
request_sources_enabled | list[string] |
sampling_rate | float |
evaluation_only_sampling_rate | float | null |
retrieved_learning_sampling_rate | float | null |
window_size_override | integer |
stride_size_override | integer |
ExtractionPresetenumNamed presets that bundle window_size and stride_size. Accepts a string.
quick_chat— short conversations (support bots, quick Q&A). window_size=5, stride_size=3.standard— general-purpose conversational agents. window_size=10, stride_size=5. (default)long_form— long conversations (coding assistants, research). window_size=25, stride_size=10.high_volume— high-traffic agents (1000+ daily interactions). window_size=15, stride_size=8.
APIKeyConfigmodelAPI key configuration for LLM providers. When custom_endpoint is configured, it takes priority over all other providers for LLM completion calls (but not embeddings).
| Prop | Type |
|---|---|
custom_endpoint | CustomEndpointConfig |
openai | OpenAIConfig |
anthropic | AnthropicConfig |
openrouter | OpenRouterConfig |
gemini | GeminiConfig |
minimax | MiniMaxConfig |
deepseek | DeepSeekConfig |
dashscope | DashScopeConfig |
zai | ZAIConfig |
moonshot | MoonshotConfig |
xai | XAIConfig |
CustomEndpointConfigmodelOpenAI-compatible custom endpoint. Validated against SSRF: cloud metadata endpoints are always blocked, and when EMEND_BLOCK_PRIVATE_URLS=true, literal private IPs plus hostnames resolving to private, loopback, link-local, reserved, multicast, or unspecified IPs are blocked.
| Prop | Type |
|---|---|
modelrequired | string |
api_keyrequired | string |
api_baserequired | string |
OpenAIConfigmodelOpenAI API configuration. At least one of api_key or azure_config must be provided.
| Prop | Type |
|---|---|
api_key | string |
azure_config | AzureOpenAIConfig |
AzureOpenAIConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
endpointrequired | string |
api_version | string |
deployment_name | string |
AnthropicConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
OpenRouterConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
GeminiConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
MiniMaxConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
DeepSeekConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
DashScopeConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
api_base | string |
ZAIConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
MoonshotConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
XAIConfigmodel| Prop | Type |
|---|---|
api_keyrequired | string |
LLMConfigmodelLLM model configuration overrides. If a field is None, the system default is used.
| Prop | Type |
|---|---|
should_run_model_name | string |
generation_model_name | string |
embedding_model_name | string |
pre_retrieval_model_name | string |