StoriBot draws on three kinds of source, each held under the same controls: uploaded files (PDF, Word, Excel, Markdown), live data from your connected systems, and grounded web search — where external facts are cited, so they trace to source like everything else.
Two ways to connect. Either you generate a scoped API token at the provider and we hold it in AWS KMS, or — where the provider supports it — you approve StoriBot at the provider itself over OAuth. On that second route we never hold a secret you typed, and you can withdraw consent at the provider without going through us. We are moving connections to that model wherever it is available.
Grants are per operation, not per system. You choose what a connection may read and whether it may write. The split is not a property of the system — the same connection can read performance data back and publish a post, and you decide which of those it does.
Reads are the default. Every write is one you granted — nothing in a connected system changes as a side effect of drafting. Two switches govern this, and they answer two different questions:
- What the model does with your data. With
secure_llm on, inference is restricted to models under zero-retention terms, and a request fails rather than falling back to one that collects. - What the system can do to your systems. One instance-level switch disables every write and irreversible operation. What a granted write can do is bounded by the operation itself, not by what StoriBot sent — that can extend to changing or removing what is already in the system. Flipping the switch costs you whatever those writes were doing; reading, drafting and review all keep working.