Navigation over search
Most knowledge agents embed everything into a vector index, search the index at query time, and return chunks. This works for a frozen corpus. It breaks when the corpus is alive. Scout navigates sources at query time. List folders, search for files, read full documents, follow links. No ingest. No embeddings. No stale index. The downside: each query costs more LLM calls. The benefits:- Answers reflect the live state of every source.
- Citations include exact paths back to the source.
- Adding a new source means registering one provider, no ingest pipeline.
How Scout works
Scout runs on AgentOS. Every question goes through the same loop:- Plan. Scout interprets the question and picks a starting source based on what it knows about your workspace and what it has learned before.
- Navigate. It fetches what’s relevant from that source the way a person would: opening threads, following links, jumping into linked docs.
- Assemble. When enough context is in hand, Scout composes an answer with citations back to the original sources.
- Learn. When Scout finds where an answer lives, it remembers, so the next retrieval skips the exploration.
Context Providers
Scout works because of an abstraction called Context Providers. Each provider exposesquery_<id> (and optionally update_<id>) tools on Scout. The agent calls them like any other tool. The provider handles auth, navigation, and pagination on the way to the source.
This keeps two things clean. Scout doesn’t carry every source’s schema in its context. The know-how for navigating each source lives with the provider.
Providers that ship with Scout
| Provider | What it exposes | Default |
|---|---|---|
| Web | web_search, web_fetch | Always on (hosted web search MCP) |
| Filesystem | list_files, search_files, search_content, read_file | Always on (the Scout codebase, so Scout can answer questions about itself) |
| Database | query_crm, update_crm | Always on (local Postgres for people, projects, notes) |
| Slack | search_workspace, get_channel_history, get_thread, list_users | When SLACK_BOT_TOKEN is set |
| Google Drive | search_files, list_files, read_file | When GOOGLE_SERVICE_ACCOUNT_FILE is set |
| MCP servers | query_mcp_<slug> per server | Wired in scout/contexts.py |
scout/contexts.py and Scout exposes a query_mcp_<slug> tool for it.