> **Building with AI coding agents?** If you're using an AI coding agent, install the official Scalekit plugin. It gives your agent full awareness of the Scalekit API — reducing hallucinations and enabling faster, more accurate code generation.
>
> - **Claude Code**: `/plugin marketplace add scalekit-inc/claude-code-authstack` then `/plugin install <auth-type>@scalekit-auth-stack`
> - **GitHub Copilot CLI**: `copilot plugin marketplace add scalekit-inc/github-copilot-authstack` then `copilot plugin install <auth-type>@scalekit-auth-stack`
> - **Codex**: run the bash installer, restart, then open Plugin Directory and enable `<auth-type>`
> - **Skills CLI** (Windsurf, Cline, 40+ agents): `npx skills add scalekit-inc/skills --list` then `--skill <skill-name>`
>
> `<auth-type>` / `<skill-name>`: `agent-auth`, `full-stack-auth`, `mcp-auth`, `modular-sso`, `modular-scim` — [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Salesforce

<div class="grid grid-cols-5 gap-4 items-center">
 <div class="col-span-4">
  Connect to Salesforce CRM. Manage leads, opportunities, accounts, and customer relationships
 </div>
 <div class="flex justify-center">
  <img src="https://cdn.scalekit.cloud/sk-connect/assets/provider-icons/sales_force.svg" width="64" height="64" alt="Salesforce logo" />
 </div>
</div>

Supports authentication: OAuth 2.0

## Set up the agent connector

<SetupSalesforceSection />

## Usage

<UsageSalesforceSection />

## Tool list

## `salesforce_account_create`

Create a new Account in Salesforce. Supports standard fields

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `AccountNumber` | string | No | Account number for the organization |
| `AnnualRevenue` | number | No | Annual revenue |
| `BillingCity` | string | No | Billing city |
| `BillingCountry` | string | No | Billing country |
| `BillingPostalCode` | string | No | Billing postal code |
| `BillingState` | string | No | Billing state/province |
| `BillingStreet` | string | No | Billing street |
| `Description` | string | No | Description |
| `Industry` | string | No | Industry |
| `Name` | string | Yes | Account Name |
| `NumberOfEmployees` | integer | No | Number of employees |
| `OwnerId` | string | No | Record owner (User/Queue Id) |
| `Phone` | string | No | Main phone number |
| `RecordTypeId` | string | No | Record Type Id |
| `Website` | string | No | Website URL |

## `salesforce_account_delete`

Delete an existing Account from Salesforce by account ID. This is a destructive operation that permanently removes the account record.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | ID of the account to delete |

## `salesforce_account_get`

Retrieve details of a specific account from Salesforce by account ID. Returns account properties and associated data.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `account_id` | string | Yes | ID of the account to retrieve |
| `fields` | string | No | Comma-separated list of fields to include in the response |

## `salesforce_account_update`

Update an existing Account in Salesforce by account ID. Allows updating account properties like name, phone, website, industry, billing information, and more.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `AccountNumber` | string | No | Account number for the organization |
| `AccountSource` | string | No | Lead source for this account |
| `AnnualRevenue` | number | No | Annual revenue |
| `BillingCity` | string | No | Billing city |
| `BillingCountry` | string | No | Billing country |
| `BillingGeocodeAccuracy` | string | No | Billing geocode accuracy |
| `BillingLatitude` | number | No | Billing address latitude |
| `BillingLongitude` | number | No | Billing address longitude |
| `BillingPostalCode` | string | No | Billing postal code |
| `BillingState` | string | No | Billing state/province |
| `BillingStreet` | string | No | Billing street |
| `CleanStatus` | string | No | Data.com clean status |
| `Description` | string | No | Description |
| `DunsNumber` | string | No | D-U-N-S Number |
| `Fax` | string | No | Fax number |
| `Industry` | string | No | Industry |
| `Jigsaw` | string | No | Data.com key |
| `JigsawCompanyId` | string | No | Jigsaw company ID |
| `NaicsCode` | string | No | NAICS code |
| `NaicsDesc` | string | No | NAICS description |
| `Name` | string | No | Account Name |
| `NumberOfEmployees` | integer | No | Number of employees |
| `OwnerId` | string | No | Record owner (User/Queue Id) |
| `Ownership` | string | No | Ownership type |
| `ParentId` | string | No | Parent Account Id |
| `Phone` | string | No | Main phone number |
| `Rating` | string | No | Account rating |
| `RecordTypeId` | string | No | Record Type Id |
| `ShippingCity` | string | No | Shipping city |
| `ShippingCountry` | string | No | Shipping country |
| `ShippingGeocodeAccuracy` | string | No | Shipping geocode accuracy |
| `ShippingLatitude` | number | No | Shipping address latitude |
| `ShippingLongitude` | number | No | Shipping address longitude |
| `ShippingPostalCode` | string | No | Shipping postal code |
| `ShippingState` | string | No | Shipping state/province |
| `ShippingStreet` | string | No | Shipping street |
| `Sic` | string | No | SIC code |
| `SicDesc` | string | No | SIC description |
| `Site` | string | No | Account site or location |
| `TickerSymbol` | string | No | Stock ticker symbol |
| `Tradestyle` | string | No | Trade style name |
| `Type` | string | No | Account type |
| `Website` | string | No | Website URL |
| `YearStarted` | string | No | Year the company started |
| `account_id` | string | Yes | ID of the account to update |

## `salesforce_accounts_list`

Retrieve a list of accounts from Salesforce using a pre-built SOQL query. Returns basic account information.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | number | Yes | Number of results to return per page |

## `salesforce_chatter_comment_create`

Add a comment to a Salesforce Chatter post (feed element).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `feed_element_id` | string | Yes | The ID of the Chatter post to comment on |
| `text` | string | Yes | The text body of the comment |

## `salesforce_chatter_comment_delete`

Delete a comment from a Salesforce Chatter post.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `comment_id` | string | Yes | The ID of the Chatter comment to delete |

## `salesforce_chatter_comments_list`

List all comments on a Salesforce Chatter post (feed element).

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `feed_element_id` | string | Yes | The ID of the Chatter post to list comments for |
| `page` | string | No | Page token for retrieving the next page of results |
| `page_size` | number | No | Number of comments to return per page (default: 25, max: 100) |

## `salesforce_chatter_post_create`

Create a new post (feed element) on a Salesforce Chatter feed. Use 'me' as subject_id to post to the current user's feed.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `text` | string | Yes | The text body of the Chatter post |
| `is_rich_text` | boolean | No | If true, the text body will be treated as HTML rich text |
| `message_segments` | array | No | Advanced: raw Salesforce message segments array for full rich text control (bold, italic, links, mentions, etc.) |
| `subject_id` | string | No | The ID of the subject (user, record, or group) to post to. Use 'me' for the current user's feed |

## `salesforce_chatter_post_delete`

Delete a Salesforce Chatter post (feed element) by its ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `feed_element_id` | string | Yes | The ID of the Chatter post to delete |

## `salesforce_chatter_post_get`

Retrieve a specific Salesforce Chatter post (feed element) by its ID.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `feed_element_id` | string | Yes | The ID of the Chatter feed element (post) to retrieve |

## `salesforce_chatter_posts_search`

Search Salesforce Chatter posts (feed elements) by keyword across all feeds.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `q` | string | Yes | Search query string to find matching Chatter posts |
| `page` | string | No | Page token for retrieving the next page of results |
| `page_size` | number | No | Number of results to return per page (default: 25, max: 100) |

## `salesforce_chatter_user_feed_list`

Retrieve feed elements (posts) from a Salesforce user's Chatter news feed. Use 'me' as the user ID to get the current user's feed.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `user_id` | string | Yes | The ID of the user whose Chatter feed to retrieve. Use 'me' for the current user |
| `page` | string | No | Page token for retrieving the next page of results |
| `page_size` | number | No | Number of feed elements to return per page (default: 25, max: 100) |
| `sort_param` | string | No | Sort order for feed elements. Options: LastModifiedDateDesc (default), CreatedDateDesc, MostRecentActivity |

## `salesforce_composite`

Execute multiple Salesforce REST API requests in a single call using the Composite API. Allows for efficient batch operations and related data retrieval.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `composite_request` | string | Yes | JSON string containing composite request with multiple sub-requests |

## `salesforce_contact_create`

Create a new contact in Salesforce. Allows setting contact properties like name, email, phone, account association, and other standard fields.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `AccountId` | string | No | Salesforce Account Id associated with this contact |
| `Department` | string | No | Department of the contact |
| `Description` | string | No | Free-form description |
| `Email` | string | No | Email address of the contact |
| `FirstName` | string | No | First name of the contact |
| `LastName` | string | Yes | Last name of the contact (required) |
| `LeadSource` | string | No | Lead source for the contact |
| `MailingCity` | string | No | Mailing city |
| `MailingCountry` | string | No | Mailing country |
| `MailingPostalCode` | string | No | Mailing postal code |
| `MailingState` | string | No | Mailing state/province |
| `MailingStreet` | string | No | Mailing street |
| `MobilePhone` | string | No | Mobile phone of the contact |
| `Phone` | string | No | Phone number of the contact |
| `Title` | string | No | Job title of the contact |

## `salesforce_contact_get`

Retrieve details of a specific contact from Salesforce by contact ID. Returns contact properties and associated data.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `contact_id` | string | Yes | ID of the contact to retrieve |
| `fields` | string | No | Comma-separated list of fields to include in the response |

## `salesforce_dashboard_clone`

Clone an existing dashboard in Salesforce. Creates a copy of the source dashboard in the specified folder.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `folderId` | string | No | Folder to place the cloned dashboard |
| `source_dashboard_id` | string | Yes | ID of the dashboard to clone |

## `salesforce_dashboard_get`

Retrieve dashboard data and results from Salesforce by dashboard ID. Returns dashboard component data and results from all underlying reports.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `dashboard_id` | string | Yes | ID of the dashboard to retrieve |
| `filter1` | string | No | First dashboard filter value (DashboardFilterOption ID) |
| `filter2` | string | No | Second dashboard filter value (DashboardFilterOption ID) |
| `filter3` | string | No | Third dashboard filter value (DashboardFilterOption ID) |

## `salesforce_dashboard_metadata_get`

Retrieve metadata for a Salesforce dashboard, including dashboard components, filters, layout, and the running user.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `dashboard_id` | string | Yes | The unique ID of the Salesforce dashboard |

## `salesforce_dashboard_update`

Save dashboard filters (sticky filters) in Salesforce. Use GET dashboard first to find filter IDs.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `dashboard_id` | string | Yes | ID of the dashboard to update |
| `filters` | `array<unknown>` | No | Dashboard filters to save (array) |

## `salesforce_global_describe`

Retrieve metadata about all available SObjects in the Salesforce organization. Returns list of all objects with basic information.

## `salesforce_limits_get`

Retrieve organization limits information from Salesforce. Returns API usage limits, data storage limits, and other organizational constraints.

## `salesforce_object_describe`

Retrieve detailed metadata about a specific SObject in Salesforce. Returns fields, relationships, and other object metadata.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `sobject` | string | Yes | SObject API name to describe |

## `salesforce_opportunities_list`

Retrieve a list of opportunities from Salesforce using a pre-built SOQL query. Returns basic opportunity information.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `limit` | number | No | Number of results to return per page |

## `salesforce_opportunity_create`

Create a new opportunity in Salesforce. Allows setting opportunity properties like name, amount, stage, close date, and account association.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `AccountId` | string | No | Associated Account Id |
| `Amount` | number | No | Opportunity amount |
| `CampaignId` | string | No | Related Campaign Id |
| `CloseDate` | string | Yes | Expected close date (YYYY-MM-DD, required) |
| `Custom_Field__c` | string | No | Example custom field (replace with your org’s custom field API name) |
| `Description` | string | No | Opportunity description |
| `ForecastCategoryName` | string | No | Forecast category name |
| `LeadSource` | string | No | Lead source |
| `Name` | string | Yes | Opportunity name (required) |
| `NextStep` | string | No | Next step in the sales process |
| `OwnerId` | string | No | Record owner (User/Queue Id) |
| `PricebookId` | string | No | Associated Price Book Id |
| `Probability` | number | No | Probability percentage (0–100) |
| `RecordTypeId` | string | No | Record Type Id for Opportunity |
| `StageName` | string | Yes | Current sales stage (required) |
| `Type` | string | No | Opportunity type |

## `salesforce_opportunity_get`

Retrieve details of a specific opportunity from Salesforce by opportunity ID. Returns opportunity properties and associated data.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | string | No | Comma-separated list of fields to include in the response |
| `opportunity_id` | string | Yes | ID of the opportunity to retrieve |

## `salesforce_opportunity_update`

Update an existing opportunity in Salesforce by opportunity ID. Allows updating opportunity properties like name, amount, stage, and close date.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `AccountId` | string | No | Associated Account Id |
| `Amount` | number | No | Opportunity amount |
| `CampaignId` | string | No | Related Campaign Id |
| `CloseDate` | string | No | Expected close date (YYYY-MM-DD) |
| `Description` | string | No | Opportunity description |
| `ForecastCategoryName` | string | No | Forecast category name |
| `LeadSource` | string | No | Lead source |
| `Name` | string | No | Opportunity name |
| `NextStep` | string | No | Next step in the sales process |
| `OwnerId` | string | No | Record owner (User/Queue Id) |
| `Pricebook2Id` | string | No | Associated Price Book Id |
| `Probability` | number | No | Probability percentage (0–100) |
| `RecordTypeId` | string | No | Record Type Id for Opportunity |
| `StageName` | string | No | Current sales stage |
| `Type` | string | No | Opportunity type |
| `opportunity_id` | string | Yes | ID of the opportunity to update |

## `salesforce_query_soql`

Execute SOQL queries against Salesforce data. Supports complex queries with joins, filters, and aggregations.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `query` | string | Yes | SOQL query string to execute |

## `salesforce_query_next_page`

Fetch the next page of results from a previous SOQL query. Use the nextRecordsUrl returned when a query response has `done=false`.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `cursor` | string | Yes | The record cursor from a previous SOQL query response. Extract the cursor ID from the nextRecordsUrl (e.g. `01gxx0000002GJm-2000` from `/services/data/v66.0/query/01gxx0000002GJm-2000`) |

## `salesforce_report_create`

Create a new report in Salesforce using the Analytics API. Minimal verified version with only confirmed working fields.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `aggregates` | string | No | Aggregates configuration (JSON array) |
| `chart` | string | No | Chart configuration (JSON object) |
| `description` | string | No | Report description |
| `detailColumns` | string | No | Detail columns (JSON array of field names) |
| `folderId` | string | No | Folder ID where report will be stored |
| `groupingsAcross` | string | No | Column groupings (JSON array) |
| `groupingsDown` | string | No | Row groupings (JSON array) |
| `name` | string | Yes | Report name |
| `reportBooleanFilter` | string | No | Filter logic |
| `reportFilters` | string | No | Report filters (JSON array) |
| `reportType` | string | Yes | Report type - object name (e.g., Account, Opportunity, Contact, Lead) |

## `salesforce_report_delete`

Delete an existing report from Salesforce by report ID. This is a destructive operation that permanently removes the report and cannot be undone.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `report_id` | string | Yes | ID of the report to delete |

## `salesforce_report_get`

Retrieve report definition and metadata from Salesforce by report ID. Returns the full report configuration including columns, filters, groupings, and chart settings.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `report_id` | string | Yes | ID of the report to retrieve |

## `salesforce_report_metadata_get`

Retrieve report, report type, and related metadata for a Salesforce report. Returns information about report structure, fields, groupings, and configuration.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `report_id` | string | Yes | The unique ID of the Salesforce report |

## `salesforce_report_update`

Update an existing report in Salesforce by report ID. Minimal verified version with only confirmed working fields. Only updates fields that are provided.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `aggregates` | string | No | Aggregates configuration (JSON array) |
| `chart` | string | No | Chart configuration (JSON object) |
| `description` | string | No | Updated report description |
| `detailColumns` | string | No | Detail columns (JSON array of field names) |
| `folderId` | string | No | Move report to different folder |
| `groupingsAcross` | string | No | Column groupings (JSON array) |
| `groupingsDown` | string | No | Row groupings (JSON array) |
| `name` | string | No | Updated report name |
| `reportBooleanFilter` | string | No | Filter logic |
| `reportFilters` | string | No | Report filters (JSON array) |
| `report_id` | string | Yes | ID of the report to update |

## `salesforce_search_parameterized`

Execute parameterized searches against Salesforce data. Provides simplified search interface with predefined parameters.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | string | No | Comma-separated list of fields to return |
| `search_text` | string | Yes | Text to search for |
| `sobject` | string | Yes | SObject type to search in |

## `salesforce_search_sosl`

Execute SOSL searches against Salesforce data. Performs full-text search across multiple objects and fields.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `search_query` | string | Yes | SOSL search query string to execute |

## `salesforce_sobject_create`

Create a new record for any Salesforce SObject type (Account, Contact, Lead, Opportunity, custom objects, etc.). Provide the object type and fields as a dynamic object.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | `object` | Yes | Object containing field names and values to set on the new record |
| `sobject_type` | string | Yes | The Salesforce SObject API name (e.g., Account, Contact, Lead, CustomObject__c) |

## `salesforce_sobject_delete`

Delete a record from any Salesforce SObject type by ID. This is a destructive operation that permanently removes the record.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `record_id` | string | Yes | ID of the record to delete |
| `sobject_type` | string | Yes | The Salesforce SObject API name (e.g., Account, Contact, Lead, CustomObject__c) |

## `salesforce_sobject_get`

Retrieve a record from any Salesforce SObject type by ID. Optionally specify which fields to return.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | string | No | Comma-separated list of fields to include in the response |
| `record_id` | string | Yes | ID of the record to retrieve |
| `sobject_type` | string | Yes | The Salesforce SObject API name (e.g., Account, Contact, Lead, CustomObject__c) |

## `salesforce_sobject_update`

Update an existing record for any Salesforce SObject type by ID. Only the fields provided will be updated.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | `object` | Yes | Object containing field names and values to update on the record |
| `record_id` | string | Yes | ID of the record to update |
| `sobject_type` | string | Yes | The Salesforce SObject API name (e.g., Account, Contact, Lead, CustomObject__c) |

## `salesforce_soql_execute`

Execute custom SOQL queries against Salesforce data. Supports complex queries with joins, filters, aggregations, and custom field selection.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `soql_query` | string | Yes | SOQL query string to execute |

## `salesforce_tooling_query_execute`

Execute SOQL queries against Salesforce Tooling API to access metadata objects like ApexClass, ApexTrigger, CustomObject, and development metadata. Use this for querying metadata rather than data objects.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `soql_query` | string | Yes | SOQL query string to execute against Tooling API |

## `salesforce_tooling_sobject_create`

Create a new metadata record for any Salesforce Tooling API object type (ApexClass, ApexTrigger, CustomField, etc.). Supports both simple and nested field structures. For CustomField, use FullName and Metadata properties.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | `object` | Yes | Object containing field names and values to set on the new metadata record. Supports nested structures for complex metadata types. |
| `sobject_type` | string | Yes | The Tooling API object name (e.g., ApexClass, ApexTrigger, CustomObject) |

## `salesforce_tooling_sobject_delete`

Delete a metadata record from any Salesforce Tooling API object type by ID. This is a destructive operation that permanently removes the metadata.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `record_id` | string | Yes | ID of the metadata record to delete |
| `sobject_type` | string | Yes | The Tooling API object name (e.g., ApexClass, ApexTrigger, CustomObject) |

## `salesforce_tooling_sobject_describe`

Retrieve detailed metadata schema for a specific Tooling API object type. Returns fields, relationships, and other metadata properties.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `sobject` | string | Yes | Tooling API object name to describe |

## `salesforce_tooling_sobject_get`

Retrieve a metadata record from any Salesforce Tooling API object type by ID. Optionally specify which fields to return.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | string | No | Comma-separated list of fields to include in the response |
| `record_id` | string | Yes | ID of the metadata record to retrieve |
| `sobject_type` | string | Yes | The Tooling API object name (e.g., ApexClass, ApexTrigger, CustomObject) |

## `salesforce_tooling_sobject_update`

Update an existing metadata record for any Salesforce Tooling API object type by ID. Supports both simple and nested field structures. Only the fields provided will be updated.

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `fields` | `object` | Yes | Object containing field names and values to update on the metadata record. Supports nested structures for complex metadata types. |
| `record_id` | string | Yes | ID of the metadata record to update |
| `sobject_type` | string | Yes | The Tooling API object name (e.g., ApexClass, ApexTrigger, CustomObject) |

---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
