Salesforce MCP server

Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Salesforce, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.

Overview

This pack lets an agent read from and write to a Salesforce org across standard CRM objects and any custom object. Supported operations include filtering and retrieving records, running custom queries, and creating, updating, upserting, or deleting records.

For setup instructions, see SnapLogic MCP Server quickstart.

Example Prompts

  • Create a lead: Jane Doe at Globex, source Web, email [email protected]
  • Add a contact named Maria Lopez to the Acme Corp account
  • Log a case: 'Login fails on mobile', priority High
  • Create a new account called Northwind Traders in the Manufacturing industry
  • Add an Invoice__c record for order PO-88231
  • Delete the duplicate lead with ID 00Qxx0000012xyz
  • Remove the test account 001xx000003DGb2 I created earlier
  • Delete case 500xx0000012abc
  • Get rid of the obsolete Invoice__c record a01xx000003XyZ1
  • What fields does the Opportunity object have?

Tools

Tool Name Functions
SalesforceCreateRecord Create a new Salesforce record of any object type.
SalesforceCreateRecordChild Salesforce Create Record Child
SalesforceDeleteRecord Delete a Salesforce record by object type and ID.
SalesforceDeleteRecordChild Salesforce Delete Record Child
SalesforceDescribeObject List a Salesforce object's fields with their API names, types and nullability.
SalesforceGetAccounts List Salesforce accounts filtered by name, type, industry, owner or creation date.
SalesforceGetCampaigns List Salesforce campaigns filtered by name, status, type, active flag or start date.
SalesforceGetCases List Salesforce cases filtered by status, priority, type, account, owner or creation date.
SalesforceGetContacts List Salesforce contacts filtered by name, email, account, title or department.
SalesforceGetLeads List Salesforce leads filtered by status, source, company, owner or creation date.
SalesforceGetOpportunities List Salesforce opportunities filtered by stage, amount range, close date, account or owner.
SalesforceGetRecordByID Fetch one Salesforce record by object type and record ID.
SalesforceSOQLQuery Run an arbitrary SOQL statement against Salesforce.
SalesforceSOSLSearch Full-text SOSL search across several Salesforce objects at once.
SalesforceUpdateRecord Update fields on an existing Salesforce record by ID.
SalesforceUpdateRecordChild Salesforce Update Record Child
SalesforceUpsertRecord Insert-or-update a Salesforce record keyed on an external ID field.
SalesforceUpsertRecordChild Salesforce Upsert Record Child

Set up the MCP Server tools

  1. Download salesforce_tools.zip.
  2. In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded salesforce_tools.zip. Designer unpacks each pipeline into the project.
  3. Attach the required account to the connectivity snaps (see Connection Setup).
  4. Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.

Configure account

Attach a Salesforce account (OAuth 2.0 or username-password) to each Salesforce snap in Designer after import.

These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.

See the SnapLogic account documentation for this connector: Salesforce Account.

Important: These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute. Credentials live in the SnapLogic account store, never in the pipeline JSON.

SalesforceCreateRecord

Creates a new record of any Salesforce object type, such as a lead, contact, case, or custom object row. Use it whenever the user wants to add something new to the CRM.

Parameter Type Default Description
object_type* string

Salesforce object API name to insert into, e.g. Lead, Contact, Case.

record* object

Field map of the new record's values, keyed by field API name.

* Required parameter.

Try asking:

  • Create a lead: Jane Doe at Globex, source Web, email [email protected]
  • Add a contact named Maria Lopez to the Acme Corp account
  • Log a case: 'Login fails on mobile', priority High
  • Create a new account called Northwind Traders in the Manufacturing industry
  • Add an Invoice__c record for order PO-88231

SalesforceCreateRecordChild

Lets the LLM salesforce create record child, exposed as an MCP tool callable via Pipeline Execute.

Parameter Type Default Description
object_type string Account

SalesforceDeleteRecord

Deletes a single Salesforce record by object type and record ID. It requires an exact record ID, so the agent can only remove a record the user has explicitly identified.

Parameter Type Default Description
object_type* string

Salesforce object API name, e.g. Lead, Account, Case.

record_id* string

ID of the record to delete; written to the payload as Id.

* Required parameter.

Try asking:

  • Delete the duplicate lead with ID 00Qxx0000012xyz
  • Remove the test account 001xx000003DGb2 I created earlier
  • Delete case 500xx0000012abc
  • Get rid of the obsolete Invoice__c record a01xx000003XyZ1

SalesforceDeleteRecordChild

Lets the LLM salesforce delete record child, exposed as an MCP tool callable via Pipeline Execute.

Parameter Type Default Description
object_type string Account

SalesforceDescribeObject

Returns the fields defined on any Salesforce object, including their API names, data types, and whether they are required. Use it to discover what fields are available before querying or writing to an object, especially custom ones.

Parameter Type Default Description
object_type* string

Salesforce object API name to describe, e.g. Opportunity, Invoice__c.

* Required parameter.

Try asking:

  • What fields does the Opportunity object have?
  • Describe the custom object Invoice__c
  • Which fields on Case are required — that is, not nillable?
  • Show me the API names and data types on Account before I build a query
  • List the custom fields defined on Contact

SalesforceGetAccounts

Searches and retrieves Salesforce Account records filtered by name, type, industry, owner, or creation date. Use it to find customers or partners matching specific criteria.

Parameter Type Default Description
name string

Account name, matched as a partial (LIKE) match.

type string

Exact account type, e.g. Customer, Partner, Prospect.

industry string

Exact industry value, e.g. Technology, Finance.

owner_name string

Owner's name, matched as a partial match on Owner.Name.

created_after date

Only accounts with CreatedDate on or after this SOQL date literal (e.g. 2026-01-01T00:00:00Z).

created_before date

Only accounts with CreatedDate on or before this SOQL date literal.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • Show me all accounts in the Technology industry
  • Which partner accounts were created since January?
  • Find accounts with 'Acme' in the name
  • List the accounts Priya owns, 20 at most
  • Pull our customer accounts in the UK with their annual revenue

SalesforceGetCampaigns

Retrieves Salesforce Campaign records filtered by name, status, type, active flag, or start date. Use it to find campaigns and review their performance, including budget and lead response data.

Parameter Type Default Description
name string

Campaign name, matched as a partial match.

status string

Exact status, e.g. Planned, In Progress, Completed.

type string

Exact campaign type, e.g. Email, Webinar, Event.

is_active boolean

Match on the IsActive flag — pass true or false.

start_date_after date

Only campaigns with StartDate on or after this SOQL date literal.

start_date_before date

Only campaigns with StartDate on or before this SOQL date literal.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • Show me all active campaigns
  • Which webinar campaigns started this year?
  • How many leads did our completed campaigns generate?
  • List campaigns still in Planned status with their budgeted cost
  • Find campaigns that started before March and their actual spend

SalesforceGetCases

Retrieves Salesforce Case records filtered by status, priority, type, account, owner, or creation date. Use it to find and review support cases, including their current status and assigned owner.

Parameter Type Default Description
status string

Exact case status, e.g. New, Working, Escalated, Closed.

priority string

Exact priority, e.g. High, Medium, Low.

type string

Exact case type, e.g. Problem, Question, Feature Request.

account_name string

Related account name, matched as a partial match on Account.Name.

owner_name string

Owner's name, matched as a partial match on Owner.Name.

created_after date

Only cases with CreatedDate on or after this SOQL date literal.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • Show me all high-priority cases that are still New
  • What cases has Acme Corp raised this month?
  • List escalated cases owned by the support team
  • Find cases of type 'Problem' created since Monday
  • Give me the 15 newest cases with their subjects and owners

SalesforceGetContacts

Retrieves Salesforce Contact records filtered by name, email, account, title, or department. Use it to find people in the CRM by any combination of those criteria.

Parameter Type Default Description
name string

Contact name, matched as a partial match.

email string

Email address, matched as a partial match.

account_name string

Parent account name, matched as a partial match on Account.Name.

title string

Job title, matched as a partial match.

department string

Exact department value.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • Who are our contacts at Acme Corp?
  • Find contacts with 'VP' in their title
  • Look up the contact whose email is [email protected]
  • List everyone in the Procurement department we have on file
  • Show me the first 10 contacts at Globex with their phone numbers

SalesforceGetLeads

Retrieves Salesforce Lead records filtered by status, source, company, owner, or creation date. Use it to review top-of-funnel leads, including whether they have already been converted.

Parameter Type Default Description
status string

Exact lead status, e.g. Open, Working - Contacted, Qualified.

source string

Exact LeadSource value, e.g. Web, Referral, Trade Show.

company string

Lead's company, matched as a partial match.

owner_name string

Owner's name, matched as a partial match on Owner.Name.

created_after date

Only leads with CreatedDate on or after this SOQL date literal.

created_before date

Only leads with CreatedDate on or before this SOQL date literal.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • Show me the leads created this month with source Web
  • Which open leads came in from Globex?
  • List leads with status 'Working - Contacted' owned by Marco
  • What are our 25 newest leads?
  • Find leads created before June that were never converted

SalesforceGetOpportunities

Retrieves Salesforce Opportunity records filtered by stage, amount range, close date, account, or owner. Use it to review the sales pipeline and forecast, answering questions about what is closing, how large the deals are, and who owns them.

Parameter Type Default Description
stage string

Exact StageName, e.g. Prospecting, Negotiation, Closed Won.

min_amount number

Minimum Amount (inclusive).

max_amount number

Maximum Amount (inclusive).

close_date_start date

Earliest CloseDate, as a SOQL date literal (e.g. 2026-01-01).

close_date_end date

Latest CloseDate, as a SOQL date literal.

account_name string

Related account name, matched as a partial match on Account.Name.

owner_name string

Owner's name, matched as a partial match on Owner.Name.

limit integer 50

Maximum records to return (default 50).

Try asking:

  • What opportunities over $50k are closing before the end of the quarter?
  • Show me deals in the Negotiation stage for Acme Corp
  • List everything Priya closed won this year
  • Which open deals are between $10k and $100k?
  • Give me the 20 most recent opportunities with their close dates and probabilities

SalesforceGetRecordByID

Fetches a single Salesforce record by object type and record ID. Use it when the user already has a specific record ID and wants to retrieve its details.

Parameter Type Default Description
object_type* string

Salesforce object API name, e.g. Account, Contact, Opportunity, Invoice__c.

record_id* string

The 15- or 18-character Salesforce record ID.

fields string

Comma-separated SELECT list. Omitted, the tool selects FIELDS(STANDARD).

* Required parameter.

Try asking:

  • Get the account with ID 001xx000003DGb2
  • Show me the full details of opportunity 006xx000004TmiQ
  • Pull just Name and Email for contact 003xx0000045abc
  • Open case 500xx0000012abc for me
  • Look up custom record a01xx000003XyZ1 on Invoice__c

SalesforceSOQLQuery

Executes a custom SOQL query against Salesforce and returns the results. Use it for advanced queries such as aggregations, subqueries, or custom field selections that the purpose-built read tools cannot handle.

Parameter Type Default Description
soql_query* string

The SOQL statement to execute, passed through verbatim. Include a LIMIT clause to cap rows.

max_records integer 200

Declared on the tool (default 200) but not applied to the query — use LIMIT in the SOQL itself.

* Required parameter.

Try asking:

  • Run: SELECT Name, AnnualRevenue FROM Account WHERE AnnualRevenue > 1000000 LIMIT 50
  • Query the total opportunity amount grouped by StageName
  • Get all Invoice__c records modified in the last 7 days
  • Count contacts per account for our top accounts
  • Select Id and Subject from Task where the related opportunity is Acme's

SalesforceSOSLSearch

Searches Salesforce across multiple object types at once using a text term, returning all matching records regardless of where the term appears. Use it when the user knows a string but not which object or record it belongs to.

Parameter Type Default Description
search_term* string

Text to find; searched IN ALL FIELDS.

objects string Account,Contact,Lead,Opportunity

Comma-separated objects to search (default Account,Contact,Lead,Opportunity).

returning_fields string Id,Name

Comma-separated fields returned for each object (default Id,Name).

limit integer 20

Maximum hits to return (default 20).

* Required parameter.

Try asking:

  • Search Salesforce for anything mentioning 'Acme'
  • Find 'acme.com' across accounts, contacts and leads
  • Search all records for the phone number 415-555-0100
  • Look for 'Northwind' in accounts and opportunities only, return Id and Name
  • Find any record referencing PO-88231, up to 50 hits

SalesforceUpdateRecord

Updates specific fields on an existing Salesforce record by object type and record ID. Use it to change values on any record, such as moving a deal to a new stage, updating contact details, or reassigning ownership.

Parameter Type Default Description
object_type* string

Salesforce object API name, e.g. Opportunity, Account, Case.

record_id* string

ID of the record to update; written to the payload as Id.

fields* object

Field map of values to change, keyed by field API name.

* Required parameter.

Try asking:

  • Move opportunity 006xx000004TmiQ to Closed Won
  • Update the phone number on account 001xx000003DGb2 to 555-0200
  • Set case 500xx0000012abc to Escalated
  • Change the industry on the Acme account to Finance
  • Reassign lead 00Qxx0000012xyz to Marco

SalesforceUpdateRecordChild

Lets the LLM salesforce update record child, exposed as an MCP tool callable via Pipeline Execute.

Parameter Type Default Description
object_type string Account

SalesforceUpsertRecord

Creates or updates a Salesforce record matched by an external ID field, so re-running the same data does not create duplicates. Use it when syncing records from another system that has its own identifier for each record.

Parameter Type Default Description
object_type* string

Salesforce object API name, e.g. Lead, Account, Product2.

external_id_field* string

External-ID field used to match an existing record, e.g. External_Id__c.

record* object

Field map of the record's values; must include the external-ID field.

* Required parameter.

Try asking:

  • Upsert this lead on External_Id__c = EXT-001
  • Sync this account from our ERP by its ERP_Ref__c, creating it if it's new
  • Upsert the product record keyed on SKU__c
  • Push these customer details into Salesforce without creating a duplicate
  • Update or create the contact matching Legacy_Id__c 44821

SalesforceUpsertRecordChild

Lets the LLM salesforce upsert record child, exposed as an MCP tool callable via Pipeline Execute.

Parameter Type Default Description
object_type string Account

external_id_field string Id