CRM
Salesforce
API integration
Ship CRM features without building the integration. Full Salesforce API access via Proxy, normalized data through Unified APIs, and 150+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Salesforce
Common scenarios for SaaS companies building Salesforce integrations for their customers.
Log product activity to the Salesforce timeline automatically
SaaS companies push in-app events — emails sent, calls made, feature usage — as Engagements, Tasks, or Notes on the relevant Contact or Account in Salesforce. This keeps sales reps informed without switching tabs, and it's one of the most requested integrations by RevOps teams.
Enrich Salesforce records with product telemetry via custom fields
Push SaaS-specific data like health scores, subscription tiers, or last login dates into custom Fields on Salesforce Accounts or Contacts. This lets sales and CS teams segment, prioritize, and act on product signals directly inside their CRM without manual data entry.
Sync leads and contacts bidirectionally to keep systems in lockstep
When a new user signs up in your product or a lead is captured externally, search Salesforce for an existing Contact or Lead and create one if it doesn't exist — and vice versa. Continuous bidirectional sync eliminates duplicate records and ensures both systems reflect the latest state.
Automate opportunity and pipeline updates from external triggers
When a contract is signed, a quote is approved, or a self-serve user upgrades, automatically create or update an Opportunity and move its Stage in Salesforce. This removes manual deal updates and gives sales leadership accurate, real-time pipeline data for forecasting.
Surface Salesforce context inside your product's UI
Pull Account, Opportunity, and Contact data from Salesforce into your app so your end users — whether they're support agents, CSMs, or marketers — can see deal status, ownership, and relationship history without leaving your product.
What You Can Build
Ship these features with Truto + Salesforce
Concrete product features your team can ship faster by leveraging Truto’s Salesforce integration instead of building from scratch.
Visual custom field mapper
Use the Fields resource to read all standard and custom fields from your users' Salesforce instances, then present a drag-and-drop UI that lets them map your product's data points to the exact Salesforce fields their RevOps team has defined.
Automated activity logger
Write every meaningful in-app action — calls, emails, meetings, survey completions — as an Engagement or Task on the correct Salesforce Contact or Account, complete with the right owner assignment via the Users resource.
Two-way contact and account sync
Keep Contacts and Accounts continuously synchronized between your product and Salesforce using the Unified CRM API, handling creates, updates, and deduplication so both systems always agree.
Pipeline automation engine
Automatically create Opportunities, update Stages, and adjust deal amounts in Salesforce when key events happen in your product — like a contract being signed or a usage threshold being crossed.
Intelligent lead creation with duplicate detection
Use the Unified Search API to check for existing Leads or Contacts before creating new records, preventing duplicates and respecting the data hygiene rules that Salesforce admins enforce.
Account-level engagement feed
Pull Engagements, Notes, and Tasks from a Salesforce Account into your product's interface so your users can see the full customer interaction history alongside your own product data.
SuperAI
Salesforce AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_salesforce_accounts
List Salesforce accounts by executing a SOQL query that selects standard account fields. Returns: attributes, Id, Name, accountid.
get_single_salesforce_account_by_id
Get a single Salesforce account by id. Returns: attributes, Id, Name, accountid. Required: id.
update_a_salesforce_account_by_id
Update a Salesforce Account by id. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_account_by_id
Delete a Salesforce account by id. Returns an empty 204 response on success. Required: id.
create_a_salesforce_account
Create a new Salesforce Account record by supplying field values in the request body. Returns: id, success, errors.
salesforce_accounts_describe
Get complete metadata for the Account sObject in Salesforce, including fields, child relationships, and URLs. Returns: name, label, keyPrefix, labelPlural, custom, createable, updateable, deletable, queryable, searchable, mergeable, layoutable, activateable, compactLayoutable, customSetting, deepCloneable, deprecatedAndHidden, feedEnabled, hasSubtypes, isSubtype, mruEnabled, replicateable,…
salesforce_accounts_merge
Merge duplicate Salesforce account records via the SOAP API merge() call by sending a raw XML envelope. Returns: soapenv:Envelope. Required: body.
salesforce_accounts_batch_delete
Delete multiple Salesforce account records in a single request via the sObject Collections resource. Returns an empty 204 response on success. Required: ids.
list_all_salesforce_contacts
List Salesforce contacts by executing a SOQL query that selects all standard Contact fields, with optional custom fields and WHERE clause filtering. Returns: attributes, Id, Name. Optional: where, include_custom_fields.
get_single_salesforce_contact_by_id
Get a single Salesforce contact by id. Returns the contact record including Id, Name, and attributes (type, url). Required: id.
create_a_salesforce_contact
Create a new Contact record in Salesforce by providing field name-value pairs in the request body. Returns: id, success, errors. Available Contact fields depend on your Salesforce org's Contact object configuration.
update_a_salesforce_contact_by_id
Update a Salesforce Contact by id. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_contact_by_id
Delete a Salesforce Contact by id. Returns an empty 204 response on success. Required: id.
salesforce_contacts_describe
Describe the Contact sObject in Salesforce to retrieve complete field-level metadata, child relationships, and URLs. Returns: name, label, type, length, byteLength, nillable, custom, soapType, createable, updateable, filterable, sortable, groupable, aggregatable, unique, calculated, autoNumber, defaultValue, defaultValueFormula, digits, precision, scale, referenceTo, relationshipName,…
salesforce_contacts_merge
Merge up to two duplicate Contact records into a master record in Salesforce via the SOAP API. The master record retains its identity and optionally absorbs updated field values. Returns: soapenv:Envelope. Required: master_record_id, record_to_merge_ids.
list_all_salesforce_voice_calls
List VoiceCall records in Salesforce using a SOQL query. Returns each record with attributes (type, url), Id, CreatedDate, LastModifiedDate, SystemModstamp, and all standard VoiceCall fields. The query parameter q defaults to SELECT FIELDS(STANDARD) FROM VoiceCall.
get_single_salesforce_voice_call_by_id
Get a single VoiceCall record in Salesforce by id. Returns: attributes, Id, CreatedDate, LastModifiedDate, SystemModstamp. Required: id.
create_a_salesforce_voice_call
Create a new VoiceCall record in Salesforce with field values in the request body. Returns: id, success, errors.
update_a_salesforce_voice_call_by_id
Update a Salesforce VoiceCall record by id. Field values provided in the request body replace the existing values in the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_voice_call_by_id
Delete a Salesforce VoiceCall record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_tasks
List Salesforce tasks via a SOQL query selecting all standard Task fields and Who.Type. Returns: attributes, Id, Subject, Status, Priority, ActivityDate, OwnerId, WhoId, WhatId, Who, Description, IsClosed, CompletedDateTime, TaskSubtype, CreatedDate, LastModifiedDate and the standard recurrence fields. Optional: where clause to filter results.
get_single_salesforce_task_by_id
Get a single Salesforce Task record by id. Returns standard Task fields including Id, Subject, Status, Priority, ActivityDate, Description, OwnerId, WhoId, WhatId, IsClosed, CompletedDateTime and TaskSubtype, plus the Who.Type polymorphic field. Required: id.
create_a_salesforce_task
Create a new Task record in Salesforce by providing field values in the request body. Use WhoId to relate the task to a Contact or Lead and WhatId to relate it to any other object such as an Account or Opportunity. Returns: id, success, errors. Custom fields ending in __c must be declared in this tool's schema to be transmitted.
update_a_salesforce_task_by_id
Update a Salesforce Task record by id. Field values in the request body replace existing values on the record; omitted fields are left unchanged. Required: id. Returns an empty 204 response on success.
delete_a_salesforce_task_by_id
Delete a Salesforce Task record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_email_messages
List Salesforce EmailMessage records via a SOQL query selecting FIELDS(STANDARD). Returns each record with its attributes (including type and url) and Id, along with all standard EmailMessage fields. Optionally supply a SOQL WHERE clause fragment to filter results.
get_single_salesforce_email_message_by_id
Get a single Salesforce EmailMessage record by id. Returns the record with its attributes (including type and url) and Id, along with all standard EmailMessage fields. Required: id.
create_a_salesforce_email_message
Create a new EmailMessage record in Salesforce by supplying field name-value pairs in the request body. Returns: id, success, errors. The request body accepts any createable field on the EmailMessage sObject; use the sObject Describe resource to discover available fields.
update_a_salesforce_email_message_by_id
Update a Salesforce EmailMessage record by id. Field values provided in the request body replace existing values. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_email_message_by_id
Delete a Salesforce EmailMessage record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_events
List Salesforce events via a SOQL query selecting all standard Event fields and Who.Type. Returns: attributes, Id, Who. Optional: where clause to filter results.
get_single_salesforce_event_by_id
Get a single Salesforce Event record by id. Returns standard Event fields including Id, Subject, StartDateTime, EndDateTime, Location, WhoId, and the Who.Type polymorphic field. Required: id.
create_a_salesforce_event
Create a new Event record in Salesforce by providing field values in the request body. Returns: attributes, Id, Who.
update_a_salesforce_event_by_id
Update a Salesforce Event record by id. Field values in the request body replace existing values on the record. Required: id. Returns an empty 204 response on success.
delete_a_salesforce_event_by_id
Delete a Salesforce Event record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_leads
List Salesforce leads by executing a SOQL query against the Lead object. Returns each record with attributes (type, url), Id, and Name. Optional: where for filtering and include_custom_fields for custom field selection.
get_single_salesforce_lead_by_id
Get a single Salesforce Lead by id. Returns the lead record with attributes (type, url), Id, and Name. Required: id.
create_a_salesforce_lead
Create a new Salesforce Lead record from field values in the request body. Returns: id, success, errors.
update_a_salesforce_lead_by_id
Update a Salesforce Lead record by id. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_lead_by_id
Delete a Salesforce Lead by id. Returns an empty 204 response on success. Required: id.
salesforce_leads_describe
Describe the Salesforce Lead object's field-level metadata. Returns an array of field descriptors including name, label, type, nillable, createable, updateable, custom, picklistValues, referenceTo, and relationshipName for each field.
list_all_salesforce_notes
List Salesforce Notes via a SOQL query selecting standard fields and the parent object's type. Returns: attributes, Id, Title, Body, OwnerId, ParentId, IsPrivate, CreatedDate, LastModifiedDate, Parent.Type for each note record. Optional where parameter accepts a SOQL WHERE clause fragment to filter results.
get_single_salesforce_note_by_id
Get a single Salesforce Note by id. Returns: attributes, Id, Title, Body, OwnerId, ParentId, IsPrivate, CreatedDate, LastModifiedDate, Parent.Type. Required: id.
create_a_salesforce_note
Create a new Note record in Salesforce by supplying field values in the request body. Returns: id, success, errors. Required: ParentId, Body.
update_a_salesforce_note_by_id
Update a Salesforce Note record by id. Field values provided in the request body replace existing values on the Note sObject. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_note_by_id
Delete a Salesforce Note record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_opportunities
List Salesforce Opportunities via a SOQL query that selects standard fields. Returns: attributes, Id, Name. Use the where parameter to filter results and include_custom_fields to add custom fields to the query.
get_single_salesforce_opportunity_by_id
Get a single Salesforce Opportunity by id. Returns: attributes, Id, Name. Required: id.
create_a_salesforce_opportunity
Create a new Salesforce Opportunity with field values in the request body. Returns: id, success, errors.
update_a_salesforce_opportunity_by_id
Update a Salesforce Opportunity by id with field values in the request body. Field values in the request body replace existing values. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_opportunity_by_id
Delete a Salesforce Opportunity by id. Returns an empty 204 response on success. Required: id.
salesforce_opportunities_describe
Describe the Salesforce Opportunity sObject metadata at all levels. Returns: fields, urls, childRelationships.
list_all_salesforce_opportunity_stages
List Salesforce opportunity stages by executing a SOQL query against the OpportunityStage object. Returns: attributes, Id, MasterLabel, ApiName, DefaultProbability, ForecastCategoryName, IsActive, IsClosed, IsWon, SortOrder, Description. Optional: where (SOQL WHERE clause fragment, without the WHERE keyword).
get_single_salesforce_opportunity_stage_by_id
Get a single Salesforce OpportunityStage record by id. Returns the stage record including its attributes, Id, and Name. Required: id.
create_a_salesforce_opportunity_stage
Create a new OpportunityStage record in Salesforce by supplying field name/value pairs in the request body. Returns: attributes, Id, MasterLabel, ApiName, DefaultProbability, ForecastCategoryName, IsActive, IsClosed, IsWon, SortOrder, Description, Name.
update_a_salesforce_opportunity_stage_by_id
Update a Salesforce OpportunityStage record by id. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_opportunity_stage_by_id
Delete a Salesforce OpportunityStage record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_users
List Salesforce users by executing a SOQL query that selects all standard User fields. Returns each user record with Id, Name, and attributes metadata. An optional where clause appends a SOQL WHERE filter to the query.
get_single_salesforce_user_by_id
Get a single Salesforce user by record id. Returns the full user record including Id, Name, and attributes metadata. Required: id.
create_a_salesforce_user
Create a new Salesforce user by supplying field values in the request body. Returns the created user record including Id, Name, and attributes metadata.
update_a_salesforce_user_by_id
Update a Salesforce User record by id. Field values in the request body replace existing values on the record; only fields included in the body are modified. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_user_by_id
Delete a Salesforce User record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_profiles
List Salesforce Profile records by executing a SOQL query that selects all standard fields. Returns each Profile record including attributes, Id, and Name. The optional where parameter accepts a SOQL WHERE clause fragment to filter results.
get_single_salesforce_profile_by_id
Get a single Salesforce Profile record by id. Returns the Profile record including attributes, Id, and Name. Required: id.
create_a_salesforce_profile
Create a new Profile record in Salesforce by posting field values in the request body. Returns: id, success, errors. The request body must contain the required fields for the Profile object as defined in your Salesforce org.
update_a_salesforce_profile_by_id
Update a Salesforce Profile record by id. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_profile_by_id
Delete a Salesforce Profile record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_custom_fields
List Salesforce custom fields for a specified object type using a Tooling API SOQL query. Returns: attributes, Id, DeveloperName, TableEnumOrId, Description, InlineHelpText, NamespacePrefix, CreatedDate, LastModifiedDate. Required: object_type.
get_single_salesforce_custom_field_by_id
Get a single Salesforce custom field by id from the Tooling API. Returns: attributes, Id, DeveloperName, TableEnumOrId, Description, InlineHelpText, NamespacePrefix, CreatedDate, LastModifiedDate. Required: id.
create_a_salesforce_custom_field
Create a new custom field on any standard or custom Salesforce object. FullName format is ObjectName.FieldName__c (e.g. Account.Priority__c). Metadata must include type (Text, Number, Picklist, Checkbox, Lookup, Currency, Date, DateTime, Email, Phone, Url, TextArea, LongTextArea, etc.) and label. Type-specific config varies: Text needs length, Number needs precision/scale, Picklist needs valueSet.
update_a_salesforce_custom_field_by_id
Update a Salesforce CustomField record via the Tooling API. Field values in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
salesforce_custom_fields_describe
Describe the Salesforce CustomField Tooling API object, completely describing its metadata at all levels including field definitions, URLs, and child relationships. Returns: name, fields, childRelationships, urls.
salesforce_custom_fields_filter_by_developer_name
Filter Salesforce custom fields by object type and developer name using a Tooling API SOQL query. Returns matching CustomField records including Id, DeveloperName, TableEnumOrId, Description, InlineHelpText, NamespacePrefix, CreatedDate, LastModifiedDate, and Metadata. Required: object_type, developer_name.
delete_a_salesforce_custom_field_by_id
Delete a Salesforce custom field by id via the Tooling API. Returns an empty 204 response on success. Required: id.
list_all_salesforce_visualforce_pages
List Salesforce Visualforce pages (ApexPage) via a SOQL query against the Tooling API. Returns: attributes, Id, Name, NamespacePrefix, ApiVersion, MasterLabel, CreatedDate, LastModifiedDate. Provide an optional where clause to filter results.
get_single_salesforce_visualforce_page_by_id
Get a single Salesforce Visualforce page (ApexPage) by id from the Tooling API. Returns: attributes, Id, Name, NamespacePrefix, ApiVersion, MasterLabel, CreatedDate, LastModifiedDate. Required: id.
create_a_salesforce_visualforce_page
Create a new Salesforce Visualforce page (ApexPage) in the Tooling API. Returns: id, success, errors. Required: Name, MasterLabel, ApiVersion.
update_a_salesforce_visualforce_page_by_id
Update an existing Salesforce Visualforce page (ApexPage) by id in the Tooling API. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_visualforce_page_by_id
Delete a Salesforce Visualforce page (ApexPage) by id from the Tooling API. Returns an empty 204 response on success. Required: id.
salesforce_visualforce_pages_describe
Describe the ApexPage (Visualforce pages) sObject in Salesforce via the Tooling API, retrieving complete metadata at all levels for the object. Returns: name, label, labelPlural, keyPrefix, fields, urls, childRelationships, createable, updateable, deletable, queryable, searchable, retrieveable, custom, layoutable.
list_all_salesforce_permission_sets
List Salesforce permission sets by executing a SOQL query that selects all standard fields from the PermissionSet object. Returns each record's attributes (type, url), Id, and Name. Supply a where clause to filter results.
get_single_salesforce_permission_set_by_id
Get a single Salesforce permission set by id. Returns the permission set record including attributes (type, url), Id, and Name. Required: id.
create_a_salesforce_field_permission
Create a Salesforce FieldPermissions record by posting field values. Returns: id, success, errors. Required: ParentId, SobjectType, Field.
list_all_salesforce_field_permissions
List Salesforce FieldPermissions records via a SOQL query selecting all standard fields. Returns: attributes, Id, ParentId, SobjectType, Field, PermissionsEdit, PermissionsRead, CreatedById, CreatedDate, LastModifiedById, LastModifiedDate, SystemModstamp.
get_single_salesforce_field_permission_by_id
Get a single Salesforce FieldPermissions record by id. Returns the field-level security record including its Id, SobjectType, Field, PermissionsRead, PermissionsEdit, and ParentId. Required: id.
list_all_salesforce_contact_listview_results
Execute the SOQL query for a Salesforce Contact list view and return the resulting records. Returns: attributes, Id, Name. Required: list_view_id.
list_all_salesforce_contact_listviews
List the Contact list views available to the current Salesforce user. Returns: id, label, developerName, describeUrl, resultsUrl, soqlCompatible, url for each list view. Pass a returned id as list_view_id to contact-listview-results to execute the list view and fetch its records.
get_single_salesforce_contact_listview_by_id
Get a single Salesforce Contact list view by id. Returns: id, label, developerName, describeUrl, resultsUrl, soqlCompatible, url. Required: id.
list_all_salesforce_login_history
List Salesforce login history records via SOQL, ordered by LoginTime descending. Returns standard LoginHistory fields including LoginTime, UserId, Application, and SourceIp. Supports optional where and limit_query for filtering and limiting results.
list_all_salesforce_organization
List Salesforce organizations by executing a predefined SOQL query (SELECT FIELDS(STANDARD) FROM Organization) that returns all standard fields for each org record. Returns: attributes, Id.
get_single_salesforce_organization_by_id
Get a single Salesforce organization record by id, returning all standard fields for the Organization sObject. Returns: attributes, Id. Required: id.
list_all_salesforce_user_licenses
List Salesforce user licenses by executing a SOQL query that selects all standard fields from the UserLicense object. Returns: attributes, Id.
get_single_salesforce_user_license_by_id
Get a single Salesforce user license by id using a SOQL query filtered by Id. Returns: attributes, Id. Required: id.
list_all_salesforce_case_statuses
List Salesforce CaseStatus records via a SOQL query selecting all standard fields. Returns: attributes, Id, CreatedDate, LastModifiedDate.
get_single_salesforce_case_status_by_id
Get a single Salesforce CaseStatus record by id. Returns: attributes, Id, CreatedDate, LastModifiedDate. Required: id.
create_a_salesforce_case_status
Create a new CaseStatus record in Salesforce by supplying field name/value pairs in the request body. Returns: id, success, errors. The response is returned with HTTP 201 on success.
update_a_salesforce_case_status_by_id
Update a Salesforce CaseStatus record by id with new field values provided in the request body. Field values in the body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_case_status_by_id
Delete a Salesforce CaseStatus record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_cases
List Salesforce cases by executing a SOQL query that selects all standard Case fields via FIELDS(STANDARD). Returns: attributes, Id. The response also includes every standard Case field returned by the query; the exact field set depends on the org's Case object schema.
get_single_salesforce_case_by_id
Get a single Salesforce Case record by id. Returns the full Case record including Id, CaseNumber, Subject, Status, Origin, Priority, IsClosed, CreatedDate, and all other field values along with the record attributes. Required: id.
create_a_salesforce_case
Create a new Salesforce Case record by supplying field values in the request body. Returns: id, success, errors. The body accepts any standard or custom Case field (Subject, Origin, Status, Priority, Description, AccountId, ContactId, OwnerId, and others); required fields depend on your org's validation rules and page layout configuration.
update_a_salesforce_case_by_id
Update a Salesforce Case record by id, replacing existing field values with those provided in the request body. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_case_by_id
Delete a Salesforce Case record by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_case_comments
List Salesforce case comments by executing a SOQL query with FIELDS(STANDARD) on the CaseComment object. Returns: attributes, Id, CommentBody, IsPublished, ParentId, CreatedById, CreatedDate, LastModifiedById, LastModifiedDate, SystemModstamp, IsDeleted. Supports an optional where clause to filter results.
get_single_salesforce_case_comment_by_id
Get a single Salesforce CaseComment record by id. Returns the case comment record including its Id, CommentBody, IsPublished, ParentId, and attributes (type, url). Required: id.
create_a_salesforce_case_comment
Create a new CaseComment in Salesforce by providing field values in the request body. Returns: id, success, errors. Required: CommentBody, ParentId.
update_a_salesforce_case_comment_by_id
Update a Salesforce case comment by id. Field values provided in the request body replace existing values on the record. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_case_comment_by_id
Delete a Salesforce case comment by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_query
Execute a SOQL query in Salesforce to retrieve matching records. Returns: attributes, Id, Name. Required: q.
list_all_salesforce_search
Search Salesforce records using a SOSL query string. Returns matching records with attributes (type, url), Id, Name, and any additional fields specified in the SOSL RETURNING clause. Required: q. The search string must be URL-encoded.
list_all_salesforce_objects
List all Salesforce objects available in the org, including both standard and custom objects, using the Describe Global resource. Returns: sobjects (array of object metadata entries), encoding, maxBatchSize.
create_a_salesforce_composite
Execute a series of Salesforce REST API requests in a single POST call, using the output of one subrequest as input to a subsequent one. Returns a compositeResponse array where each item includes referenceId, httpStatusCode, and body of the corresponding subrequest. The entire series counts as a single call toward API limits.
list_all_salesforce_me
Get the authenticated Salesforce user's identity information via the Identity URL resolved from the OAuth token. Returns: user_id, organization_id, username, email, first_name, last_name, display_name, photos, rest_url.
list_all_salesforce_case_attachments
List Salesforce case attachments by querying ContentDocumentLink records linked to a specific case. Returns: attributes, Id, ContentDocumentId, LinkedEntityId. Required: case_id.
get_single_salesforce_case_attachment_by_id
Get a single Salesforce case attachment (the latest ContentVersion) by ContentDocumentId. Returns: attributes, Id, ContentDocumentId, IsLatest. Required: id.
salesforce_case_attachments_download
Download a Salesforce case attachment file from the specified path. Returns the raw file content as binary data (content-type-specific, not enumerable as JSON fields). Required: path, base.
list_all_salesforce_account_describe
Describe the Account sObject in Salesforce to retrieve complete field-level metadata. Returns an array of field descriptors including name, label, type, length, nillable, createable, updateable, picklistValues, and referenceTo.
list_all_salesforce_contact_describe
Describe the Contact sObject's field metadata in Salesforce. Returns an array of field descriptors including each field's name, label, type, nillable, createable, updateable, picklistValues, relationshipName, and urls. The response is extracted from the `fields` property of the sObject Describe result.
list_all_salesforce_opportunity_describe
Describe the Opportunity sObject in Salesforce to retrieve complete field-level metadata. Returns the fields array where each field descriptor includes name, type, and label along with additional field properties.
list_all_salesforce_lead_describe
Describe the Lead sObject in Salesforce, returning comprehensive field metadata for every field on the object. Returns: name, label, type, length, byteLength, digits, precision, scale, nillable, custom, updateable, createable, filterable, sortable, groupable, nameField, autoNumber, calculated, unique, idLookup, externalId, defaultedOnCreate, defaultValue, soapType, inlineHelpText,…
list_all_salesforce_case_describe
Describe the Salesforce Case object to retrieve its complete field-level metadata. Returns the fields array, where each field includes name, label, type, length, nillable, createable, and updateable.
list_all_salesforce_case_feed
List Salesforce CaseFeed records (case feed items) using a SOQL query that selects all standard fields via FIELDS(STANDARD). Returns: attributes, Id. Provide an optional where clause to filter results.
salesforce_attachments_download
Download the binary Body field of a specific Salesforce Attachment record by id. Returns the raw binary file content of the attachment, not a JSON or XML payload. Required: id.
list_all_salesforce_package_license
List Salesforce package licenses by querying the PackageLicense object for all standard fields. Returns each record's Id and attributes including the object type and REST URL.
get_single_salesforce_package_license_by_id
Get a single Salesforce package license by its Id. Returns the record's Id and attributes including the object type and REST URL. Required: id.
list_all_salesforce_user_package_license
List Salesforce user package licenses by executing a SOQL query that returns all standard fields from the userPackageLicense object. Returns: attributes, Id, UserId, PackageLicenseId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp. Results are limited to records visible to the executing user.
get_single_salesforce_user_package_license_by_id
Get a single Salesforce user package license by id, executing a SOQL query that returns all standard fields filtered by the record Id. Returns: attributes, Id, UserId, PackageLicenseId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp. Required: id.
list_all_salesforce_namespace_registry
List Salesforce NamespaceRegistry sObject metadata via the Describe Global resource. Returns each sObject descriptor with name, label, keyPrefix, custom, createable, updateable, and urls. The response is extracted from the sobjects array.
list_all_salesforce_meta_data_package
List Salesforce MetadataPackage records via the Tooling API SOQL query endpoint. Returns: attributes, Id, Name, NamespacePrefix.
get_single_salesforce_content_version_by_id
Download the binary file content (VersionData blob) of a specific ContentVersion record in Salesforce. Returns the file content as binary data. Required: id.
list_all_salesforce_permission_set_assignments
List Salesforce permission set assignments by executing a SOQL query against the PermissionSetAssignment object. Returns records including Id, AssigneeId, PermissionSetId, PermissionSetGroupId, CreatedDate, CreatedById, SystemModstamp, and attributes. An optional where clause filters results.
get_single_salesforce_permission_set_assignment_by_id
Get a single Salesforce permission set assignment by id. Returns: attributes, Id, AssigneeId, PermissionSetId, PermissionSetGroupId, CreatedDate, CreatedById, SystemModstamp. Required: id.
create_a_salesforce_permission_set_assignment
Assign a Salesforce permission set to a user by creating a PermissionSetAssignment record via the sObject create endpoint. Returns: id, success, errors. Required: AssigneeId, PermissionSetId.
delete_a_salesforce_permission_set_assignment_by_id
Delete a Salesforce permission set assignment by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_permission_set_licenses
List Salesforce permission set licenses by executing a SOQL query that selects all standard fields from the PermissionSetLicense object. Returns: attributes, Id, Name, MasterLabel, DeveloperName, NamespacePrefix, Status, CreatedDate, LastModifiedDate, SystemModstamp. An optional where clause can be supplied to filter results.
get_single_salesforce_permission_set_license_by_id
Get a single Salesforce PermissionSetLicense record by id. Returns the record's attributes (including type and url) and Id. Required: id.
list_all_salesforce_permission_set_license_assigns
List Salesforce permission set license assignments via a SOQL query. Returns each record with attributes, Id, AssigneeId, PermissionSetLicenseId, CreatedDate, and LastModifiedDate. An optional SOQL WHERE clause can be supplied via the where parameter to filter results.
get_single_salesforce_permission_set_license_assign_by_id
Get a single Salesforce permission set license assignment by id. Returns: attributes, Id, AssigneeId, PermissionSetLicenseId, CreatedDate, LastModifiedDate. Required: id.
create_a_salesforce_permission_set_license_assign
Create a new Salesforce permission set license assignment by providing field values in the request body. Returns: id, success, errors. Required: AssigneeId, PermissionSetLicenseId.
delete_a_salesforce_permission_set_license_assign_by_id
Delete a Salesforce permission set license assignment by id. Returns an empty 204 response on success. Required: id.
list_all_salesforce_active_feature_license_metric
List Salesforce ActiveFeatureLicenseMetric records by executing a SOQL query that selects all standard fields. Returns: attributes, Id, CreatedDate, LastModifiedDate. The SOQL query is preset and requires no caller-supplied parameters.
list_all_salesforce_limits
List Salesforce org limits. Returns a map of limit names, each containing the maximum allocation (Max) and remaining allocation (Remaining) for that limit.
list_all_salesforce_custom_objects
List custom objects in Salesforce by querying the EntityDefinition table via the Tooling API SOQL endpoint. Returns: attributes, QualifiedApiName, Label, PluralLabel, IsQueryable, IsSearchable, IsCustomSetting, KeyPrefix. Required: q.
list_all_salesforce_describe
Describe the field metadata for a Salesforce sObject by its object API name. Returns an array of field descriptors, each including its name and additional field-type-specific metadata attributes (such as type, label, nillable, length, picklist values, and access properties). Required: object_api_name.
get_single_salesforce_object_describe_by_id
Get complete metadata for a Salesforce sObject by name, including field definitions, URL endpoints, and child relationships. Returns: fields, urls, childRelationships. Required: id.
create_a_salesforce_record
Create a new Salesforce record for a specified sObject using field values in the request body. Returns: id, success, errors. Required: object_name. The body fields depend on the sObject type (e.g., Account, Contact).
update_a_salesforce_record_by_id
Update a Salesforce record by id for a specified sObject. Field values in the request body replace existing values. Returns an empty 204 response on success. Required: object_name, id. The body fields depend on the sObject type.
delete_a_salesforce_record_by_id
Delete a Salesforce record by specifying the sObject type and record ID. Returns an empty 204 response on success. Required: object_name, id.
get_single_salesforce_record_by_id
Get a single Salesforce record by object name and record id. Returns the record's attributes (type and url), Id, and all field values defined for the specified sObject type. Required: object_name, id. The specific fields returned beyond Id and attributes depend on the object's schema in Salesforce.
list_all_salesforce_custom_objects
List Salesforce CustomObject records by executing a SOQL query via the Tooling API. Returns each record with attributes (type, url), Id, Name, and any additional fields selected in the query. Required: q.
get_single_salesforce_custom_object_by_id
Get a single Salesforce CustomObject record by id via the Tooling API. Returns the full CustomObject metadata including attributes (type, url), Id, and Name. Required: id.
create_a_salesforce_custom_object
Create a new Salesforce CustomObject record via the Tooling API by providing field values in the request body. Returns: id, success, errors. Required: Name.
update_a_salesforce_custom_object_by_id
Update a Salesforce custom object's metadata via the Tooling API by id. Field values in the request body replace existing values. Returns an empty 204 response on success. Required: id.
delete_a_salesforce_custom_object_by_id
Delete a Salesforce CustomObject metadata record by id via the Tooling API. Returns an empty 204 response on success. Required: id.
Why Truto
Why use Truto’s MCP server for Salesforce
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 700+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Salesforce
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified CRM API
Accounts
The accounts represent a company in a CRM.
Associations
Contacts
The contacts represent an existing point of contact at a company in a CRM.
Engagement Types
The engagement types represent an interaction activity in a CRM.
Engagements
The engagements represent an interaction noted in a CRM.
Fields
The fields of entities in a CRM.
Leads
The leads represent a potential customer in a CRM.
Notes
The notes represent a note on another object in a CRM.
Opportunities
The opportunities represent an opportunity in a CRM.
Stages
The stages represent a stage of an opportunity in a CRM.
Tasks
The tasks represent a task in a CRM.
Users
The users represent a user in a CRM.
Unified User Directory API
Activities
Activities are the actions performed by users in the source application.
Licenses
Licenses represent concepts like user seats in apps that support them
Me
Organizations
Organizations are the top level entity in the source application. Users are associated with an organization.
Roles
The Role object represents a role of a User.
Users
The User object represents a User.
Utilization
Utilization object represents utilization reports.
Unified Ticketing API
Attachments
Attachments are the files associated with a ticket or a comment.
Comments
Comments represent the communication happening on a Ticket, both between a User and a Contact and the internal things like notes, private comments, etc. A Ticket can have one or more Comments.
Contacts
Contact represent the external people you are in contact with. These could be customers, leads, etc. Contacts can be associated with an Account if the underlying product supports it.
Fields
Fields represent the attributes defined for various entities in the underlying product. Depending on the underlying product, custom attributes can be defined by a User on various entities like Ticket, Contact, etc. is_user_defined attribute within Field can be used to differentiate between custom and system defined Fields.
Ticket Status
Ticket Status represents the completion level of the Ticket. Some products provide customizing the Ticket Status.
Tickets
Core resource which represents some work that needs to be carried out. Tickets are usually mapped to issues, tasks, work items, etc. depending on the underlying product.
Users
Users represent the people using the underlying ticketing system. They are usually called agents, team members, admins, etc.
Unified Search API
Search
Search endpoint for all the apps.
How It Works
From zero to integrated
Go live with Salesforce in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Salesforce account
Use Truto’s frontend SDK to connect your customer’s Salesforce account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Salesforce
Truto’s Proxy API is a 1-to-1 mapping of the Salesforce API. You call us, we call Salesforce, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Salesforce’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Salesforce on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication method does Truto use for Salesforce?
Truto handles Salesforce's OAuth 2.0 flow end-to-end, including token refresh. Your end users authenticate through a managed consent screen — you don't need to build or maintain any auth logic yourself.
How does Truto handle Salesforce's API rate limits?
Truto manages pagination and respects Salesforce's API rate limits automatically. It handles retries and backoff so your integration doesn't hit throttling errors, even when syncing large volumes of records across heavily-used Salesforce orgs.
Can I read and write to custom fields on Salesforce objects?
Yes. The Unified CRM API's Fields resource lets you discover all standard and custom fields on objects like Account, Contact, Lead, and Opportunity — including their data types. You can then read from and write to those fields, which is essential since nearly every Salesforce instance is heavily customized.
Which Truto Unified APIs support Salesforce?
Salesforce is supported across the Unified CRM API (Accounts, Contacts, Leads, Opportunities, Stages, Engagements, Tasks, Notes, Users, Fields, Associations, Engagement Types), the Unified User Directory API, the Unified Ticketing API, and the Unified Search API.
Can I search for existing records before creating new ones to avoid duplicates?
Yes. The Unified Search API's Search resource lets you query Salesforce for existing Contacts, Leads, or Accounts by email, name, or other identifiers before creating new records — critical for maintaining data quality in your users' CRM.
Does Truto support associating records — for example, linking an Engagement to an Opportunity?
Yes. The Associations resource in the Unified CRM API lets you create and read relationships between objects, such as linking a Note to a specific Opportunity or associating a Contact with an Account, mirroring Salesforce's native relationship model.
From the Blog
Salesforce integration guides
Deep dives, architecture guides, and practical tutorials for building Salesforce integrations.
Salesforce
Get Salesforce integrated into your app
Our team understands what it takes to make a Salesforce integration successful. A short, crisp 30 minute call with folks who understand the problem.