Convoy AI

Product Station · CRM

Salesforce

CommunityDraftPlayground

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

Discount above the limit

What you will see: A limit on a value and a missing tool: two protections that do not depend on the agent's goodwill.

Agent connected to the station through MCP
  1. HumanCreate an opportunity for Acme, 120,000 EUR, with a 35% discount, and mark it as won.
  2. AgentI'll find the account, then create the opportunity.
  3. MCP callfindAccount(name: "Acme")
  4. StationAccount found. 3 tools shown: find, create, prepare a quote.OKRule applied: profile sales-rep
  5. MCP callcreateOpportunity(account: "Acme", amount: 120000, discount: 35)
  6. Station35% discount is above the 20% limit. A manager must approve. Context is saved and the task resumes at this step.PENDINGRule applied: max-discount
  7. MCP callcloseOpportunityAsWon(account: "Acme")
  8. StationAction refused: closing as won is not available to agents.REFUSEDRule applied: tool not exposed

Connect your own agent to the station and test it live.

Try with
Convoy Station · SalesforceTo connect
Step 1: connect to Claude

Open settings, connectors section, add a custom connector and paste the station MCP address.

https://[station-address]/mcp
Step 2: paste a request into Claude
Create an opportunity for Acme, 120,000 EUR, with a 35% discount, and mark it as won.
Send the quote to the customer now.
Summarize the notes on this account.

Then watch the agent: the station refuses, limits or asks for a human, as in the replay.

These rules are not yours?

Copy the station, change a limit or an approval step in its configuration file, and get your own station.

Copy and adapt

The configuration in detail

salesforce.yamlRead the docs →

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.