Conversation inside the running app
The Assistant is ScreenerBot's dashboard conversation surface. It calls your selected LLM provider, keeps session history locally, and can use the same app-owned tools exposed to scheduled tasks and paired agents.
One consumer, not the whole model system
Assistant owns conversation
The Assistant calls provider clients directly. It does not send chat through the model-scored filtering/trading analysis engine, and it does not own tool authorization.
Agent Control owns the tool registry and permission decision. The Assistant supplies conversation context, shows progress, and persists user, assistant, and tool events to the local chat database.
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.
17 shared tools
The registry is grouped into five capability categories. It is shared with scheduled automation and Agent Connections, so a tool has one implementation and one authorization path.
Analysis
Read token metrics, market data, and security findings.
- analyze_token
- get_market_data
- check_security
Portfolio
Read open positions, wallet balance, and realized/unrealized P&L.
- get_positions
- get_position
- get_balance
- get_pnl
Trading
Spend SOL and close positions through the live trading engine.
- buy_token
- sell_token
- close_position
Config
Discover the schema and read or change any non-secret app setting.
- get_config
- describe_config
- update_config
System
Read runtime status and events; halt or resume execution.
- get_status
- get_events
- force_stop
- clear_force_stop
Permission and confirmation behavior
Allow
Read-only tools run immediately. The interactive Assistant still confirms tools explicitly marked as mutating, including trades, config writes, and force-stop changes.
Ask user
Every tool in the category waits for an in-app decision. Confirmation state is stored with the conversation so refreshes and retries do not manufacture a second action.
Deny
The category is unavailable. The Assistant explains that the action is blocked instead of calling a parallel or lower-level implementation.
Wallet keys are outside the permission system
No Assistant permission can read or write wallet_encrypted or wallet_nonce. ScreenerBot signs locally; the model receives tool results, never signing material.
Configuration
[llm]
enabled = true
default_provider = "groq"
[llm.providers.groq]
enabled = true
api_key = "<api-key>"
model = "<model-id>"
[assistant]
enabled = true
max_session_messages = 100
auto_summarize = true
[agent_control]
analysis = "allow"
portfolio = "allow"
trading = "allow"
config = "allow"
system = "allow"Provider credentials and model selection live under [llm]. Assistant lifecycle settings live under [assistant]. The five capability values above govern the in-app Assistant and scheduled tasks only; each paired MCP connection carries its own policy.