Why it matters
Out of the box, a Salesforce-connected agent inherits the user’s full data permission set — including fields the user has access to but should not exfiltrate (deal value to a CSM, etc.). Inviolet narrows each query to the columns declared by the matched purpose.1. Create a Connected App in Salesforce
Salesforce setup → App Manager → New Connected App.- API name:
Inviolet Gateway - Enable OAuth: yes
- Callback URL:
https://app.inviolet.ai/api/oauth/salesforce/callback - Scopes:
api,refresh_token,offline_access
2. Add the data source in Inviolet
App dashboard → Data Sources → Add → Salesforce. Paste:- Instance URL (e.g.,
https://acme.my.salesforce.com) - Consumer Key + Consumer Secret
- A read-only integration user’s username + password (for the observation phase)
Account and lists the
discovered objects. Confirm.
3. Run a tool call through the gateway
4. Verify
The query pattern map atapp.inviolet.ai/data-sources/salesforce_prod updates as tool calls
arrive. After 50–100 events, you’ll see which SObject types and
fields your agents actually touch — the foundation for declaring a
purpose against this source.
Read next
- Snowflake — analytics-shaped source
- Postgres — transactional source
- Define your first purpose — graduate this source from observation to policy