SObject Mutations
The platform/sobject-mutations server allows AI agents to create and update Salesforce records, but not delete them. It gives agents write access to your data while excluding potential destructive operations. This is a natural middle ground for workflows where agents need to act on data (log a note, create a task, update a stage, add a contact) but where permanent deletion should require a separate, more deliberate process.
Choose this server when your use case involves data entry or record enrichment: an agent that creates follow-up tasks from a meeting summary, fills in fields based on research, or updates opportunity stages based on criteria — without any risk of accidental deletion. Because records go to the Recycle Bin when deleted (not immediate permanent removal), admins who want to allow deletion but retain a recovery window may consider SObject All instead.
All mutations are constrained by the authenticated user's field-level security and object permissions. An agent cannot create a record the user cannot create, and cannot set a field the user cannot edit.
- Production:
https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations - Sandbox/Scratch:
https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations
- "Create a new Lead for Sarah Chen at Brightpath Technologies — she's VP of Engineering and her email is sarah.chen@brightpath.com."
- "Update the Stage on each open opportunity where Close Date is past due to 'Needs Review'."
- "Add a note to the Acme Corp account summarizing today's meeting: they're interested in the Enterprise tier but need security review first."
- "Create a follow-up task for every Contact I met with at the conference last week. I'll give you their names."
- "Update the Annual Revenue field on these five accounts based on the figures I'm about to share."
The sobject-mutations server provides the following tools.
Returns Salesforce schema information optimized for LLM consumption. Call with no parameters to get a compact index of all objects, then call with a specific object name before creating or updating records to understand required fields, valid picklist values, and field data types. Includes admin-authored guidance alongside the standard schema.
Two modes:
- Index mode (no parameters): Compact list of all business objects with descriptions and relationships
- Detail mode (with object name): Full field schema plus any contextual admin guidance
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
object-name | string | No | API name of the object. Omit to get the compact index of all objects. |
Outputs: Index mode: compact list of queryable objects with descriptions. Detail mode: full field schema with types, required flags, picklist values, relationships, and any admin-authored guidance.
Executes a SOQL query to retrieve Salesforce records. Use this to look up existing records before creating or updating — for example, to find the Account ID to associate with a new Contact, or to identify which records need updating based on criteria.
Example: SELECT Id, Name, StageName FROM Opportunity WHERE CloseDate < TODAY AND StageName NOT IN ('Closed Won', 'Closed Lost') LIMIT 50
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | A valid SOQL query string |
Outputs: Array of matching records with the fields specified in the SELECT clause.
Executes a text search across multiple Salesforce objects simultaneously. Use this to look up records by name or search term when you don't know which object to query, or when the search term could appear across multiple objects.
Example: FIND {Sarah Chen} IN NAME FIELDS RETURNING Contact(Id, Name, AccountId), Lead(Id, Name, Company)
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
search | string | Yes | A valid SOSL search string |
Outputs: Search result groups by object type, each containing matched records with the requested fields.
Creates a new Salesforce record. Call getObjectSchema first to understand required fields and valid values — the operation fails if required fields are missing or values violate validation rules. Returns the new record's ID on success. All operations respect the user's permissions and field-level security.
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
sobject-name | string | Yes | API name of the object to create a record for |
body | object | Yes | Field-value pairs for the new record |
Outputs: The new record's Salesforce ID and success indicator.
Updates an existing record by ID. Only include fields you want to change — omitted fields keep their current values. Call getObjectSchema to verify field names and valid picklist values if unsure. Fails if the record doesn't exist, the user lacks edit permission, or field validations fail.
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
sobject-name | string | Yes | API name of the object |
id | string | Yes | Salesforce record ID of the record to update |
body | object | Yes | Field-value pairs to update |
Outputs: Success or error indicator.
Updates a child record by navigating from a parent record through a relationship. Use this when you have the parent record context and need to modify a related record without knowing the child's ID directly.
Inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
sobject-name | string | Yes | API name of the parent object |
id | string | Yes | Salesforce record ID of the parent record |
relationship-path | string | Yes | Relationship path to the target record |
body | object | Yes | Field-value pairs to update on the related record |
Outputs: Success or error indicator.