Four owners, one coherent control plane
ScreenerBot separates outbound model clients, model-scored trading analysis, dashboard conversation, and tool authorization. That split keeps provider secrets, trading decisions, chat state, and agent permissions from collapsing back into one ambiguous module.
The ownership map
Provider transport
[llm]Master switch, one default provider, credentials, model IDs, and per-provider rate limits.
Model-scored analysis
[llm_analysis]Filtering, entry/exit decisions, confidence thresholds, background checks, and analysis cache.
Assistant
[assistant]Dashboard conversation and scheduled-task runtime settings.
Agent Control
[agent_control]Shared tool boundary and the policy used by the in-app Assistant and scheduled tasks.
The old [ai] table is retired
Existing installations are migrated once into [llm], [llm_analysis], [assistant], and [agent_control]. New configuration and documentation use only those owners. The filenames ai.db, ai_chat.db, and existing ai_* tables remain solely as on-disk compatibility names.
Nine provider clients, one selection
Supported providers
Every model-backed feature calls llm.default_provider. There is no per-feature provider and no automatic fallback chain. A second configured provider is ready for a deliberate switch, not an automatic retry.
What each surface does
Model analysis
Optional typed scoring for the last filtering stage and for entry/exit decisions. It owns prompts, schemas, analysis cache, instructions, and decision history.
Assistant
User-facing chat and scheduled conversations. It calls provider clients directly and sends tool calls through Agent Control.
Agent Connections
External stdio MCP clients connect through a thin adapter to the running app. Each pairing has its own five-category policy; wallet key material remains unreachable.
Choose a guide
Configuration
Configure the four current TOML sections and the single selected provider.
Providers
Set up one of nine provider clients without pinning stale model IDs.
Filtering Analysis
Use typed pass/reject decisions, integer confidence, and explicit failure behavior.
Assistant Chat
Understand conversation, shared tools, and interactive confirmations.
Scheduled Automation
Run saved Assistant instructions through the same capability boundary.
Agent Connections
Pair an external stdio MCP client with its own live permission policy.
Safety boundary
Models and external agents never receive wallet private-key material. Trading tools ask the live app to act; ScreenerBot applies its normal safety and verification path and signs locally. Model output is an optional input, not proof of token safety or a guarantee of execution.