Connect Your AI Agent with Salesforce for Slack

Integrate Salesforce MCP server into your Slack workspace for instant access to your AI agent.

Back to MCP Servers
Salesforce
Salesforce
Cloud-based customer relationship management (CRM) platform that helps businesses manage sales, marketing, customer support, and other business activities, ultimately aiming to improve customer relationships and streamline operations.

Categories

CRM

Available Tools

Tools that your AI agent can use through this MCP server to interact with Salesforce

Upsert Record

Create a Salesforce record, or update it if a matching one already exists, matched on an external ID field. The object must have an external ID field defined - use Describe Object to find one before calling. Use Create CRM Record or Update CRM Record when you already know whether the record exists. See the documentation

Update Record

Update a Salesforce record of any object type. Only the fields you supply change; everything else is left as-is. See the documentation

Update Opportunity

Update fields on an existing Salesforce opportunity, such as moving it to a new stage. Use Describe Object on Opportunity to list the valid StageName values for your org. Only the fields you supply change; everything else is left as-is. See the documentation

Update Opportunities (Batch)

Update many Salesforce opportunities in one job using Bulk API 2.0. Use this instead of Update Opportunity when updating more than roughly 200 records - it is asynchronous and returns a job ID, not the updated records. Every row must include the record Id of the opportunity to update. Input is a CSV file - supply a path under /tmp or a URL to download it from, with a header row of Salesforce field API names. Poll the job in Salesforce to confirm completion; a successful response means the job was accepted, not that every row loaded. See the documentation

Update Note

Update a classic Salesforce note (up to 32 KB of plain text). Use Update Content Note instead for enhanced rich-text notes - the two are different objects. Supplying Body replaces the note text outright rather than appending to it. See the documentation

Update Email Template

Update an existing Salesforce email template. Use List Email Templates to find the template ID first. Only the fields you supply change; everything else is left as-is. See the documentation

Update CRM Record

Update an existing Salesforce record. Only pass fields you want to change — unspecified fields remain unchanged. Use Describe Object for valid field names and picklist values. Use SOQL Query to find the record ID if you only have the name. See the documentation

Update Content Note

Update an enhanced Salesforce content note (rich text, stored in Salesforce Files). Use Update Note instead for classic plain-text notes - the two are different objects. Supplying Content replaces the note body outright rather than appending to it. Notes must be enabled in the org first - see Set Up Notes. See the documentation

Update Contact

Update fields on an existing Salesforce contact. Only the fields you supply change; everything else is left as-is. Use Find Records on Contact to get the record ID first. See the documentation

Update Accounts (Batch)

Update many Salesforce accounts in one job using Bulk API 2.0. Use this instead of Update Account when updating more than roughly 200 records - it is asynchronous and returns a job ID, not the updated records. Every row must include the record Id of the account to update. Input is a CSV file - supply a path under /tmp or a URL to download it from, with a header row of Salesforce field API names. Poll the job in Salesforce to confirm completion; a successful response means the job was accepted, not that every row loaded. See the documentation

Update Account

Update fields on an existing Salesforce account. Only the fields you supply change; everything else is left as-is. Use Find Records on Account to get the record ID first. See the documentation

Text Search

Search Salesforce records by keyword across multiple object types simultaneously. Use for free-text search when the user mentions a name, term, or keyword without specifying an object type. Use SOQL Query instead for structured queries on a single object type with specific conditions. Results are grouped by object type. See the documentation

SOSL Search (Object Search)

Run a SOSL text search with guided prompts. Prefer Text Search for agent and API use - it takes a plain keyword and searches several object types at once. SOSL matches indexed text fields, so it finds partial words but will not filter on numeric or date criteria. See the documentation

SOQL Query (Object Query)

Run a SOQL query with guided prompts for the object, fields and filter. Prefer SOQL Query for agent and API use - it accepts a complete query string and pages through every result, while this action returns only the first batch. SOQL filters on exact field values; use Text Search for keyword search. See the documentation

SOQL Query

Execute a SOQL query against Salesforce. This is the primary tool for querying Salesforce data — use for all structured queries. For free-text search across multiple objects, use Text Search instead.

When the user uses first-person language ('my', 'I', 'me'), filter by OwnerId using the userId from Get User Info. Use Describe Object to discover field names and picklist values before querying non-obvious fields.

SOQL syntax reference:

  • Basic: SELECT Id, Name, Email FROM Contact WHERE AccountId = '001xxx'
  • Operators: =, !=, >, <, >=, <=, LIKE '%text%', IN ('a','b'), NOT IN
  • Date literals: TODAY, THIS_MONTH, LAST_N_DAYS:30, THIS_QUARTER, LAST_QUARTER, THIS_YEAR
  • NULL checks: WHERE Email != null
  • Aggregates: SELECT StageName, COUNT(Id) c, SUM(Amount) s FROM Opportunity GROUP BY StageName
  • SOQL does NOT support the AS keyword — write COUNT(Id) c, not COUNT(Id) AS c
  • Reserved words cannot be aliasescount, sum, avg are reserved. Use short aliases like c, s, a
  • Cannot ORDER BY alias — repeat the aggregate: ORDER BY COUNT(Id) DESC, not ORDER BY c DESC
  • Parent relationship: SELECT Name, Account.Name FROM Contact
  • Child subquery: SELECT Name, (SELECT Name FROM Contacts) FROM Account
  • Sorting/limits: ORDER BY CreatedDate DESC LIMIT 10

Always include Id in SELECT. Include a clickable Salesforce link for every record using the format {instanceUrl}/lightning/r/{objectType}/{Id}/view (get instanceUrl from Get User Info). See the documentation

Send Email

Send an email through Salesforce. Use List Email Templates to find a template ID first when sending templated mail. Sent mail is logged against the related record - use List Email Messages to read it back. See the documentation

Search Object Records

Search for records of one object type using a parameterized SOSL search. Use Text Search to search across several object types at once, or SOQL Query for exact field filters. SOSL matches indexed text fields, so it finds partial words but will not filter on numeric or date criteria. See the documentation

Post a Message to Chatter Feed

Post a Chatter message to a Salesforce record's feed. Use List Case Feed Items to read a case feed, or Create Case Comment to add a case comment instead of a Chatter post. The message is built from segments - a plain string becomes text, and { "type": "Mention", "username": "jsmith" } mentions a user. See the documentation

List Objects

List available Salesforce object types (SObjects) in the org. Use when the user references an object type you're not sure about, or to discover custom objects. Custom objects end in __c. Standard CRM objects: Account, Contact, Lead, Opportunity, Case, Task, Event, Campaign, User. Use Describe Object to get field details for a specific object type. See the documentation

List Object Fields

List the field names for a Salesforce object type. Use this to discover valid field names before calling Find Records, SOQL Query or any create/update action. Use Describe Object instead when you also need field types, required flags and picklist values. See the documentation

List Knowledge Articles

List Salesforce Knowledge articles, newest first. Returns the article container records (KnowledgeArticle), not the published article bodies - use Get Knowledge Articles to read article content, and List Knowledge Data Category Groups to discover the categories articles are filed under. This can return a lot of records on a mature org, so set Limit. See the documentation

List Email Templates

List Salesforce email templates, newest first. Use this to find a template and its ID before sending with Send Email, or before editing with Update Email Template. For example, run with Limit 50, then pass the Id of the template you want to Send Email. See the documentation

List Email Messages

List Salesforce email messages, newest first, optionally scoped to one case. Returns the full email records including subject and body - use List Case Feed Items instead if you only need to know that an email happened. Find the case ID with List Cases first. Omit Case ID to list the most recent emails across the org, which can be large - set Limit. See the documentation

List Cases

List Salesforce support cases, newest first. Use this to find a case and its ID. Every filter is optional and they combine with AND - call with no filters to see the most recent cases. For example, Status New with Limit 10 returns the ten newest open cases. Status values are org-configurable. See the documentation

List Case Feed Items

List the feed (Chatter) entries on a case, newest first. Use this to read a case's activity trail - text posts, status changes, logged calls, email events and case comment events - in one call. The case feed only exists when feed tracking is enabled for Cases in the Salesforce org, so an org without it returns no records. See the documentation

List Case Comments

List the comments on a Salesforce case, newest first. Use this for the case's comment thread only - use List Case Feed Items for the full activity trail (status changes, logged calls, emails) or List Email Messages for emails on the case. Find the case ID with List Cases first. For example, case ID 5005g00001ABCDeAAI with Limit 20 returns that case's twenty most recent comments. See the documentation

Insert Blob Data

Upload binary file data to a Salesforce object such as ContentVersion or Attachment. Use this for Salesforce Files (ContentVersion); use Create Attachment only for the legacy attachment object. The file content must be supplied as a file path or URL, not as raw bytes in the request. See the documentation

Get User

Retrieve one Salesforce user by their record ID. Use Get Current User for the authenticated user instead of looking up an ID. Record owner fields such as OwnerId hold user IDs - pass one here to resolve it to a name and email. See the documentation

Get User Info

Get the current authenticated Salesforce user's identity, including user ID, email, org ID, and instance URL. Must be called before any query that uses first-person language ('my', 'I', 'me'). The userId can be used as an OwnerId filter in SOQL queries (e.g. WHERE OwnerId = '{userId}'). The instanceUrl is needed to construct clickable links to Salesforce records: {instanceUrl}/lightning/r/{objectType}/{recordId}/view. See the documentation

Get Related Records

Get child records related to a parent Salesforce record via a relationship. Use to traverse relationships without writing SOQL joins. Common relationships: Account → Contacts, Opportunities, Cases, Tasks; Contact → Cases, Opportunities, Tasks; Opportunity → OpportunityLineItems, Tasks. Use Describe Object to discover available relationship names if unsure (look for relationshipName on reference fields). See the documentation

Get Record by ID

Retrieve one Salesforce record of any object type by its record ID. Use Find Records to look up records by criteria, or SOQL Query when you need related fields or a filtered set. Use List Objects to discover object types if you are unsure of the type name. See the documentation

Get Knowledge Data Category Groups

List the Knowledge data category groups visible to the current user. Call this before Get Knowledge Articles to discover the valid category group and category names to filter by. Returns only categories the authenticated user can see, so results vary per user. See the documentation

Get Knowledge Articles

Retrieve a page of online Knowledge articles for a language and data category, by search or query. Use List Knowledge Data Category Groups to discover valid category values first, and List Knowledge Articles to browse article records instead. Returns published article content, so responses can be large - narrow by category or search term. See the documentation

Get Current User

Returns the authenticated Salesforce user's ID, name, email, and organization ID. Call this first when the user says 'my leads', 'my opportunities', 'my cases', or any first-person query. Use user_id as the OwnerId filter in SOQL Search (e.g. WHERE OwnerId = '{user_id}') and organization_id to construct Salesforce UI URLs. See the documentation.

Get Case

Retrieve one Salesforce case by its record ID. Use List Cases to find the ID first, or when you want to search cases rather than fetch a known one. Use List Case Feed Items and List Case Comments to read the case's activity and comment thread. See the documentation

Find Records

Retrieve selected fields for records of any Salesforce object, either specific records by ID or the most recent ones. Use this as the general-purpose record reader when no object-specific action fits - prefer List Cases for cases or Get Record by ID for a single known record. Use List Objects to discover object types and List Object Fields to discover field names. For example, SObject Type Account with Fields to Obtain Id, Name and Limit 25 returns the 25 most recently created accounts. Leaving Record ID(s) empty returns recent records, not every record - Salesforce sends one batch, so set Limit and use SOQL Query when you need everything. Newest-first ordering needs CreatedDate, so results are unordered on the few object types that lack it. See the documentation

Describe Object

Get field metadata for a Salesforce object type, including field names, types, required status, and picklist values. Use before Create Record or Update Record to discover available fields and valid picklist values. For picklist fields (like StageName on Opportunity, Status on Case), this returns all valid values — use the API value, not the display label. Use the fieldsFilter parameter to narrow results — full object descriptions can be very large (100+ fields). Use List Objects if you're unsure of the object's API name. See the documentation

Delete Record

Delete a Salesforce record of any object type. This moves the record to the Recycle Bin, where it stays recoverable for up to 15 days - storage limits can purge it sooner. Use Find Records or SOQL Query to confirm you have the right record ID before deleting. See the documentation

Delete Opportunity

Delete a Salesforce opportunity. This moves the record to the Recycle Bin, where it stays recoverable for up to 15 days - storage limits can purge it sooner. Use Find Records on Opportunity to get the ID first, and prefer Update Opportunity to set a Closed Lost stage when you want to keep the history. See the documentation

Delete Note Or Content Note

Delete a note or content note from a Salesforce record. This moves the note to the Recycle Bin, where it stays recoverable for up to 15 days - storage limits can purge it sooner. Use Find Records on Note or ContentNote to get the ID first. See the documentation

Delete CRM Record

Delete a Salesforce record. This moves it to the Recycle Bin, where it stays recoverable for up to 15 days - storage limits can purge it sooner. Use SOQL Query to find the record ID if you only have the record name. See the documentation

Create User

Create a Salesforce user (a login for a person in your org). Requires an available user license and a unique Username in email form; the Username must be globally unique across all Salesforce orgs. Use Get User or Find Records on User to check whether the person already has an account. See the documentation

Create Task

Create a Salesforce task (a to-do item with a due date, no specific time). Use Create Event instead for scheduled meetings with a start and end time. Use Find Records to get the WhoId (contact or lead) and WhatId (related record) to link the task to. See the documentation

Create Record

Create a Salesforce record of any object type. Use List Objects to discover object types and Describe Object to discover fields. See the documentation

Create Opportunity

Create a Salesforce opportunity (a potential deal with an amount and close date). Requires Name, StageName and CloseDate - use Describe Object on Opportunity to list the valid StageName values for your org. Use Find Records on Account to get the AccountId to attach the deal to. See the documentation

Create Opportunities (Batch)

Create many Salesforce opportunities in one job using Bulk API 2.0. Use this instead of Create Opportunity when inserting more than roughly 200 records - it is asynchronous and returns a job ID, not the created records. Every row needs Name, StageName and CloseDate. Input is a CSV file - supply a path under /tmp or a URL to download it from, with a header row of Salesforce field API names. Poll the job in Salesforce to confirm completion; a successful response means the job was accepted, not that every row loaded. See the documentation

Create Note

Create a classic Salesforce note (up to 32 KB of plain text) attached to a parent record. Prefer Create Content Note on modern orgs - classic notes are legacy and do not support rich text. Use Find Records to get the parent record ID first. See the documentation

Create Lead

Create a Salesforce lead (an unqualified prospect not yet linked to an account). Use Create Contact instead when the person already belongs to a known account. Use Add Lead to Campaign afterwards to attribute the lead to a campaign. See the documentation

Create Event

Create a Salesforce calendar event (a meeting or appointment with a start and end time). Use Create Task instead for to-do items with no scheduled time. Use Find Records to get the WhoId (contact or lead) and WhatId (related record) you want to link. See the documentation

Create CRM Record

Create a new Salesforce record of any object type. Use Describe Object first if you're unsure what fields are available or required. For picklist fields, use the API value from Describe Object, not the display label.

Common required fields:

  • Account: Name
  • Contact: LastName
  • Lead: LastName, Company
  • Opportunity: Name, StageName, CloseDate
  • Case: Subject
  • Task: Subject
  • Event: Subject, StartDateTime, EndDateTime

To add a Contact/Lead to a Campaign, create a CampaignMember: {"CampaignId": "701xxx", "ContactId": "003xxx"} or {"CampaignId": "701xxx", "LeadId": "00Qxxx"}. See the documentation

Create Content Note

Create an enhanced Salesforce content note (rich text, stored in Salesforce Files). Use this rather than Create Note on modern orgs; Create Note writes the classic plain-text note object. Use Update Content Note to edit one afterwards. Notes must be enabled in the org first - see Set Up Notes. See the documentation

Create Contact

Create a Salesforce contact (a person associated with an account). Use Find Records on Account to get the AccountId that links this contact to a company. Use Describe Object on Contact to discover which fields your org requires. See the documentation

Create Case Comment

Add a comment to an existing Salesforce case. Use List Cases to find the case ID, and List Case Comments to read the existing thread first. Comments are visible in the case feed - List Case Feed Items shows them as CaseCommentPost entries. See the documentation

Create Case

Create a Salesforce support case (a customer issue or request). Use List Cases to check whether a matching case already exists before creating a duplicate. After creating, use Create Case Comment to add notes or List Case Feed Items to read its activity. See the documentation

Create Campaign

Create a Salesforce marketing campaign. Use Add Contact to Campaign or Add Lead to Campaign afterwards to populate its members. For example, Name: "Summer 2026 Webinar" creates the campaign and returns its ID. See the documentation

Create Attachment

Attach a file to an existing Salesforce record (classic Attachment object). Use Find Records to get the parent record ID first. For newer orgs prefer Salesforce Files - use Insert Blob Data with ContentVersion instead. See the documentation

Create Accounts (Batch)

Create many Salesforce accounts in one job using Bulk API 2.0. Use this instead of Create Account when inserting more than roughly 200 records - it is asynchronous and returns a job ID, not the created records. Poll the job in Salesforce to confirm completion; a successful response means the job was accepted, not that every row loaded. Input is a CSV file - supply a path under /tmp or a URL to download it from, with a header row of Salesforce field API names. See the documentation

Create Account

Create a Salesforce account (a company or organization record). Use Describe Object on Account to discover which fields your org requires before calling. For example, Name Acme Corp creates a minimal account and returns its new record ID. See the documentation

Convert SOAP XML Object to JSON

Convert a SOAP XML payload received from Salesforce into JSON. Use this on the raw body delivered by an outbound-message trigger; it makes no API call. Every other Salesforce action already returns JSON, so this is only needed for outbound-message workflows. See the documentation

Add Lead to Campaign

Add an existing lead to an existing campaign as a campaign member. Use Find Records on Lead and on Campaign to look up the two IDs first. The lead must already exist - use Create Lead if it does not. See the documentation

Add Contact to Campaign

Add an existing contact to an existing campaign as a campaign member. Use Find Records on Contact and on Campaign to look up the two IDs first. The contact must already exist - use Create Contact if it does not. See the documentation