Product Station · CRM
Salesforce
Find accounts, create opportunities and prepare quotes, with a discount limit and a human approval before sending.
The control station, in brief
This station sits between your agent and the tool. Before any call, it checks who is acting, shows only the useful tools, applies the rules below and keeps track of the task.
It can
- Find an account and read its notes
- Create an opportunity
- Prepare a quote preview
It asks a human for
- Give more than 20% discount
- Send a quote to the customer
It never has access to
- Delete a record
- Export accounts
- Mark an opportunity as won
An agent works through the station. Simulated scenarios, no real data, no key required.
Connect your own agent to the station and test it live.
Open settings, connectors section, add a custom connector and paste the station MCP address.
https://[station-address]/mcp
Then watch the agent: the station refuses, limits or asks for a human, as in the replay.
Copy the station, change a limit or an approval step in its configuration file, and get your own station.
The configuration in detail
Everything the station does fits in this file. The replay above applies it, and a copy starts from it. The values are examples to adapt, not a recommendation.
station:
id: salesforce
kind: product
policies:
- {policy: max-discount, at: submit}
- {policy: human-for-send, at: submit}
global:
language: en
timezone: Europe/Paris
apis:
- id: salesforce-rest
operations:
findAccount: {access: read}
readNotes: {access: read}
createOpportunity: {access: write, risk: medium}
previewQuote: {access: write, risk: low}
sendQuote: {access: write, risk: high}
# not listed, so not available to the agent:
# deleteRecord, exportAccounts, closeOpportunityAsWon
profiles:
sales-rep:
allow: [findAccount, readNotes, createOpportunity, previewQuote, sendQuote]
policies:
max-discount:
type: rule
when: "action == createOpportunity and discount > 20"
effect: needs-human
reason: "Above 20% discount, a manager approves."
human-for-send:
type: rule
when: "action == sendQuote"
effect: needs-human
reason: "A quote reaches a customer only after a human approves the preview."
skills:
- {id: find-account, uses: findAccount}
- {id: read-notes, uses: readNotes}
- {id: create-opportunity, uses: createOpportunity}
- {id: preview-quote, uses: previewQuote}
- {id: send-quote, uses: sendQuote}
playbooks:
- id: quote-an-account
tasks: [find-account, create-opportunity, preview-quote, send-quote]Shared copies
Copies that their authors choose to share will appear here. Each one keeps a link to this original station.