# Salesforce — how to use (mcp.ai)

Salesforce is a leading CRM platform integrating sales, service, marketing, and analytics to build customer relationships and drive business growth

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_salesforce?ms=1781542260000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `salesforce_account_creation_with_content_type_option`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/salesforce`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/salesforce/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/salesforce/account/creation/with/content/type/option` — Deprecated: creates a new salesforce account using a json post request, requiring 'name'; specific fields (e.g., custom, dunsnumber) may have org-level prerequisites.
  - body: { Id?: string, Fax?: string, Sic?: string, Name: string, Site?: string, Type?: string, Phone?: string, Jigsaw?: string, Rating?: string, SLA__c?: string, OwnerId?: string, SicDesc?: string, Website?: string, Industry?: string, ParentId?: string, PhotoUrl?: string, Active__c?: string, IsDeleted?: boolean, NaicsCode?: string, NaicsDesc?: string, Ownership?: string, DunsNumber?: string, Tradestyle?: string, BillingCity?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, YearStarted?: string, BillingState?: string, ShippingCity?: string, TickerSymbol?: string, AccountNumber?: string, AccountSource?: string, AnnualRevenue?: integer, BillingStreet?: string, ShippingState?: string, BillingCountry?: string, DandbCompanyId?: string, LastViewedDate?: string, MasterRecordId?: string, ShippingStreet?: string, SystemModstamp?: string, BillingLatitude?: integer, JigsawCompanyId?: string, ShippingCountry?: string, attributes__url?: string, BillingLongitude?: integer, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, OperatingHoursId?: string, ShippingLatitude?: integer, attributes__type?: string, BillingPostalCode?: string, NumberOfEmployees?: integer, ShippingLongitude?: integer, LastReferencedDate?: string, SLASerialNumber__c?: string, ShippingPostalCode?: string, CustomerPriority__c?: string, NumberofLocations__c?: integer, SLAExpirationDate__c?: string, UpsellOpportunity__c?: string, BillingGeocodeAccuracy?: string, ShippingGeocodeAccuracy?: string }
- `POST https://api.mcp.ai/api/salesforce/add/contact/to/campaign` — Adds a contact to a campaign by creating a campaignmember record, allowing you to track campaign engagement.
  - body: { status?: string, contact_id: string, campaign_id: string }
- `POST https://api.mcp.ai/api/salesforce/add/lead/to/campaign` — Adds a lead to a campaign by creating a campaignmember record, allowing you to track campaign engagement.
  - body: { status?: string, lead_id: string, campaign_id: string }
- `POST https://api.mcp.ai/api/salesforce/add/opportunity/line/item` — Adds a product (line item) to an opportunity. the product must exist in a pricebook entry that's associated with the opportunity's pricebook.
  - body: { discount?: number, quantity: number, unit_price?: number, description?: string, total_price?: number, service_date?: string, opportunity_id: string, pricebook_entry_id: string }
- `POST https://api.mcp.ai/api/salesforce/apply/lead/assignment/rules` — Applies configured lead assignment rules to a specific lead, automatically routing it to the appropriate owner based on your organization's rules.
  - body: { lead_id: string }
- `POST https://api.mcp.ai/api/salesforce/associate/contact/to/account` — Associates a contact with an account by updating the contact's accountid field.
  - body: { account_id: string, contact_id: string }
- `POST https://api.mcp.ai/api/salesforce/clone/opportunity/with/products` — Clones an opportunity and optionally its products (line items). creates a new opportunity with the same field values and products as the original.
  - body: { new_name?: string, close_date?: string, stage_name?: string, clone_products?: boolean, opportunity_id: string }
- `POST https://api.mcp.ai/api/salesforce/clone/record` — Creates a copy of an existing salesforce record by reading its data, removing system fields, and creating a new record. optionally apply field updates to the clone.
  - body: { record_id: string, object_type: string, field_updates?: object }
- `POST https://api.mcp.ai/api/salesforce/complete/task` — Marks a task as completed with optional completion notes. this is a convenience action that updates the task status to 'completed'.
  - body: { task_id: string, completion_notes?: string }
- `POST https://api.mcp.ai/api/salesforce/create/account` — Creates a new account in salesforce with the specified information.
  - body: { fax?: string, name: string, type?: string, phone?: string, website?: string, industry?: string, sic_desc?: string, parent_id?: string, description?: string, billing_city?: string, billing_state?: string, shipping_city?: string, account_source?: string, annual_revenue?: number, billing_street?: string, shipping_state?: string, billing_country?: string, shipping_street?: string, shipping_country?: string, billing_postal_code?: string, number_of_employees?: integer, shipping_postal_code?: string }
- `POST https://api.mcp.ai/api/salesforce/create/campaign` — Creates a new campaign in salesforce with the specified information.
  - body: { name: string, type?: string, status?: string, end_date?: string, is_active?: boolean, parent_id?: string, start_date?: string, actual_cost?: number, description?: string, number_sent?: number, budgeted_cost?: number, expected_revenue?: number, expected_response?: number }
- `POST https://api.mcp.ai/api/salesforce/create/campaign/record/via/post` — Deprecated: creates a new campaign record in salesforce; if 'parentid' is provided, it must be a valid id of an existing campaign record, and if 'ownerid' is provided, it must be a valid id of an acti
  - body: { Id?: string, Name: string, Type?: string, Status?: string, EndDate?: string, OwnerId?: string, IsActive?: boolean, ParentId?: string, IsDeleted?: boolean, StartDate?: string, ActualCost?: integer, NumberSent?: integer, CreatedById?: string, CreatedDate?: string, Description?: string, BudgetedCost?: integer, NumberOfLeads?: integer, LastViewedDate?: string, SystemModstamp?: string, ExpectedRevenue?: integer, attributes__url?: string, ExpectedResponse?: integer, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, NumberOfContacts?: integer, attributes__type?: string, NumberOfResponses?: integer, LastReferencedDate?: string, NumberOfOpportunities?: integer, AmountAllOpportunities?: integer, AmountWonOpportunities?: integer, NumberOfConvertedLeads?: integer, NumberOfWonOpportunities?: integer, CampaignMemberRecordTypeId?: string }
- `POST https://api.mcp.ai/api/salesforce/create/contact` — Creates a new contact in salesforce with the specified information.
  - body: { email?: string, phone?: string, title?: string, birthdate?: string, last_name: string, account_id?: string, department?: string, first_name?: string, description?: string, lead_source?: string, mailing_city?: string, mobile_phone?: string, mailing_state?: string, mailing_street?: string, mailing_country?: string, mailing_postal_code?: string }
- `POST https://api.mcp.ai/api/salesforce/create/lead` — Creates a new lead in salesforce with the specified information.
  - body: { city?: string, email?: string, phone?: string, state?: string, title?: string, rating?: string, status?: string, street?: string, company: string, country?: string, website?: string, industry?: string, last_name: string, first_name?: string, description?: string, lead_source?: string, postal_code?: string, annual_revenue?: number, number_of_employees?: integer }
- `POST https://api.mcp.ai/api/salesforce/create/lead/with/specified/content/type` — Deprecated: creates a new lead in salesforce, requiring `lastname` and `company` unless person accounts are enabled and `company` is null.
  - body: { City?: string, Email?: string, Phone?: string, State?: string, Title?: string, Jigsaw?: string, Rating?: string, Status?: string, Street?: string, Company: string, Country?: string, OwnerId?: string, Website?: string, Industry?: string, LastName: string, PhotoUrl?: string, FirstName?: string, IsDeleted?: boolean, LeadSource?: string, PostalCode?: string, Primary__c?: string, SICCode__c?: string, Salutation?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, IsConverted?: boolean, IndividualId?: string, AnnualRevenue?: integer, ConvertedDate?: string, DandbCompanyId?: string, LastViewedDate?: string, MasterRecordId?: string, SystemModstamp?: string, IsUnreadByOwner?: boolean, JigsawContactId?: string, attributes__url?: string, EmailBouncedDate?: string, IsPriorityRecord?: boolean, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string, CompanyDunsNumber?: string, NumberOfEmployees?: integer, ConvertedAccountId?: string, ConvertedContactId?: string, EmailBouncedReason?: string, LastReferencedDate?: string, ProductInterest__c?: string, CurrentGenerators__c?: string, NumberofLocations__c?: integer, ConvertedOpportunityId?: string }
- `POST https://api.mcp.ai/api/salesforce/create/new/contact/with/json/header` — Deprecated: creates a new contact in salesforce; 'lastname' is required, an existing 'accountid' must be used if provided, and any custom fields (ending with '  c') must be predefined.
  - body: { Id?: string, Fax?: string, Name?: string, Email?: string, Phone?: string, Title?: string, Jigsaw?: string, OwnerId?: string, LastName: string, Level__c?: string, PhotoUrl?: string, AccountId?: string, Birthdate?: string, FirstName?: string, HomePhone?: string, IsDeleted?: boolean, OtherCity?: string, Department?: string, LeadSource?: string, OtherPhone?: string, OtherState?: string, Salutation?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, MailingCity?: string, MobilePhone?: string, OtherStreet?: string, ReportsToId?: string, IndividualId?: string, Languages__c?: string, MailingState?: string, OtherCountry?: string, AssistantName?: string, ContactSource?: string, MailingStreet?: string, OtherLatitude?: integer, AssistantPhone?: string, IsEmailBounced?: boolean, LastViewedDate?: string, MailingCountry?: string, MasterRecordId?: string, OtherLongitude?: integer, SystemModstamp?: string, JigsawContactId?: string, MailingLatitude?: integer, OtherPostalCode?: string, attributes__url?: string, EmailBouncedDate?: string, IsPriorityRecord?: boolean, LastActivityDate?: string, LastCUUpdateDate?: string, LastModifiedById?: string, LastModifiedDate?: string, MailingLongitude?: integer, attributes__type?: string, LastCURequestDate?: string, MailingPostalCode?: string, EmailBouncedReason?: string, LastReferencedDate?: string, OtherGeocodeAccuracy?: string, MailingGeocodeAccuracy?: string }
- `POST https://api.mcp.ai/api/salesforce/create/note` — Creates a new note attached to a salesforce record with the specified title and content.
  - body: { body?: string, title: string, owner_id?: string, parent_id: string, is_private?: boolean }
- `POST https://api.mcp.ai/api/salesforce/create/note/record/with/content/type/header` — Deprecated: creates a new note record in salesforce, associated with an existing salesforce object via `parentid`, automatically including a `content-type: application/json` header.
  - body: { Id?: string, Body: string, Title: string, OwnerId?: string, ParentId: string, IsDeleted?: boolean, IsPrivate?: boolean, CreatedById?: string, CreatedDate?: string, SystemModstamp?: string, attributes__url?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string }
- `POST https://api.mcp.ai/api/salesforce/create/opportunity` — Creates a new opportunity in salesforce with the specified information.
  - body: { name: string, type?: string, amount?: number, next_step?: string, account_id?: string, close_date: string, contact_id?: string, stage_name: string, description?: string, lead_source?: string, probability?: number, pricebook2_id?: string }
- `POST https://api.mcp.ai/api/salesforce/create/opportunity/record` — Deprecated: creates a new opportunity record in salesforce; `name`, `stagename`, and `closedate` are mandatory, and ensure any referenced ids (e.g., `accountid`, `campaignid`) are valid and correspond
  - body: { Id?: string, Name: string, Type?: string, IsWon?: boolean, Amount?: integer, Fiscal?: string, OwnerId?: string, IsClosed?: boolean, NextStep?: string, AccountId?: string, CloseDate: string, ContactId?: string, IsDeleted?: boolean, IsPrivate?: boolean, PushCount?: integer, StageName: string, CampaignId?: string, FiscalYear?: integer, LeadSource?: string, CreatedById?: string, CreatedDate?: string, Description?: string, Probability?: integer, Pricebook2Id?: string, FiscalQuarter?: integer, HasOverdueTask?: boolean, LastViewedDate?: string, OrderNumber__c?: string, SystemModstamp?: string, ExpectedRevenue?: integer, HasOpenActivity?: boolean, attributes__url?: string, ForecastCategory?: string, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string, TrackingNumber__c?: string, LastReferencedDate?: string, MainCompetitors__c?: string, LastStageChangeDate?: string, CurrentGenerators__c?: string, ForecastCategoryName?: string, HasOpportunityLineItem?: boolean, TotalOpportunityQuantity?: integer, LastAmountChangedHistoryId?: string, DeliveryInstallationStatus__c?: string, LastCloseDateChangedHistoryId?: string }
- `POST https://api.mcp.ai/api/salesforce/create/task` — Creates a new task in salesforce to track activities, to-dos, and follow-ups related to contacts, leads, or other records.
  - body: { status?: string, who_id?: string, subject: string, what_id?: string, owner_id?: string, priority?: string, description?: string, activity_date?: string, is_reminder_set?: boolean, reminder_date_time?: string }
- `POST https://api.mcp.ai/api/salesforce/delete/a/lead/object/by/its/id` — Deprecated: permanently deletes an existing lead object from salesforce using its unique id.
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/account` — Permanently deletes an account from salesforce. this action cannot be undone.
  - body: { account_id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/campaign` — Permanently deletes a campaign from salesforce. this action cannot be undone.
  - body: { campaign_id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/contact` — Permanently deletes a contact from salesforce. this action cannot be undone.
  - body: { contact_id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/lead` — Permanently deletes a lead from salesforce. this action cannot be undone.
  - body: { lead_id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/note` — Permanently deletes a note from salesforce. this action cannot be undone.
  - body: { note_id: string }
- `POST https://api.mcp.ai/api/salesforce/delete/opportunity` — Permanently deletes an opportunity from salesforce. this action cannot be undone.
  - body: { opportunity_id: string }
- `POST https://api.mcp.ai/api/salesforce/execute/soql/query` — Deprecated: executes the provided soql query against salesforce; the query must begin with 'select'.
  - body: { soql_query: string }
- `POST https://api.mcp.ai/api/salesforce/fetch/account/by/id/with/query` — Deprecated: use this action to retrieve a salesforce account by its unique id, which must be a valid and existing salesforce account id; you can optionally specify a comma-delimited list of fields to 
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/fetch/modified/or/unmodified/sobjects` — Deprecated: fetches sobjects from `/sobjects` based on caller-set 'if-modified-since' (returns objects modified after a date, or 304 status if none) or 'if-unmodified-since' (returns objects if unmodi
  - body: { If-Modified-Since?: string, If-Unmodified-Since?: string }
- `POST https://api.mcp.ai/api/salesforce/get/account` — Retrieves a specific account by id from salesforce, returning all available fields.
  - body: { account_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/campaign` — Retrieves a specific campaign by id from salesforce, returning all available fields.
  - body: { campaign_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/contact` — Retrieves a specific contact by id from salesforce, returning all available fields.
  - body: { contact_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/dashboard` — Gets detailed metadata for a specific dashboard including its components, layout, and filters.
  - body: { dashboard_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/lead` — Retrieves a specific lead by id from salesforce, returning all available fields.
  - body: { lead_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/note` — Retrieves a specific note by id from salesforce, returning all available fields.
  - body: { note_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/note/by/id/with/fields` — Deprecated: retrieves a salesforce note object by its id, optionally specifying which fields to return; the note id must exist.
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/get/opportunity` — Retrieves a specific opportunity by id from salesforce, returning all available fields.
  - body: { opportunity_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/report` — Gets detailed metadata for a specific report including its structure, columns, filters, and groupings.
  - body: { report_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/report/instance` — Gets the results of a report instance created by running a report. check status to see if report has completed.
  - body: { report_id: string, instance_id: string }
- `POST https://api.mcp.ai/api/salesforce/get/user/info` — Retrieves information about the current user or a specific user in salesforce.
  - body: { user_id?: string, include_permissions?: boolean }
- `POST https://api.mcp.ai/api/salesforce/list/accounts` — Lists accounts from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/campaigns` — Lists campaigns from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/contacts` — Lists contacts from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/dashboards` — Lists all dashboards available in salesforce with basic metadata including name, id, and urls.
- `POST https://api.mcp.ai/api/salesforce/list/email/templates` — Lists available email templates in salesforce with filtering and search capabilities.
  - body: { limit?: integer, order_by?: string, folder_name?: string, search_term?: string, include_body?: boolean, template_type?: string, is_active_only?: boolean, order_direction?: string }
- `POST https://api.mcp.ai/api/salesforce/list/leads` — Lists leads from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/notes` — Lists notes from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/opportunities` — Lists opportunities from salesforce using soql query, allowing flexible filtering, sorting, and field selection.
  - body: { query?: string }
- `POST https://api.mcp.ai/api/salesforce/list/reports` — Lists all reports available in salesforce with basic metadata including name, id, and urls.
- `POST https://api.mcp.ai/api/salesforce/log/call` — Logs a completed phone call as a task in salesforce with call-specific details like duration, type, and disposition.
  - body: { who_id?: string, subject?: string, what_id?: string, comments?: string, call_date?: string, call_type?: string, call_disposition?: string, call_duration_seconds?: integer }
- `POST https://api.mcp.ai/api/salesforce/log/email/activity` — Creates an emailmessage record to log email activity in salesforce, associating it with related records.
  - body: { status?: string, subject: string, html_body?: string, parent_id?: string, text_body?: string, cc_address?: string, to_address: string, bcc_address?: string, is_incoming?: boolean, from_address: string, message_date?: string, related_to_id: string, is_client_managed?: boolean, is_externally_visible?: boolean }
- `POST https://api.mcp.ai/api/salesforce/mass/transfer/ownership` — Transfers ownership of multiple records to a new owner in a single operation using salesforce's composite api for better performance.
  - body: { record_ids: string[], object_type: string, new_owner_id: string, send_notification_email?: boolean }
- `POST https://api.mcp.ai/api/salesforce/query/contacts/by/name` — Deprecated: finds salesforce contact records by name using a case-insensitive search.
  - body: { limit?: integer, fields?: string, contact_name: string }
- `POST https://api.mcp.ai/api/salesforce/query/report` — Deprecated: executes a salesforce report synchronously by its `id` and `reporttype`, optionally with dynamic ad-hoc adjustments like filters or groupings, and returns its data without modifying the sa
  - body: { id: string, name?: string, chart?: object[], scope?: string, sortBy?: object[], buckets?: object[], topRows?: object, currency?: string, division?: string, folderId?: string, aggregates?: string[], reportType: object, crossFilters?: object[], reportFormat: string, detailColumns?: string[], developerName?: string, groupingsDown?: object[], hasDetailRows?: boolean, reportFilters?: object[], showSubtotals?: boolean, hasRecordCount?: boolean, showGrandTotal?: boolean, groupingsAcross?: object[], standardFilters?: object[], standardDateFilter?: object, customDetailFormula?: object[], presentationOptions?: object, reportBooleanFilter?: string, customSummaryFormula?: object[], historicalSnapshotDates?: string[], userOrHierarchyFilterId?: string, allowedInCustomDetailFormula?: boolean }
- `POST https://api.mcp.ai/api/salesforce/remove/a/specific/contact/by/id` — Deprecated: permanently deletes a specific contact from salesforce using its unique id, which must correspond to an existing record.
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/remove/account/by/unique/identifier` — Deprecated: deletes an existing salesforce account using its unique id, returning an empty response on success (http 204).
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/remove/campaign/object/by/id` — Deprecated: permanently deletes a specific campaign sobject in salesforce using its unique id.
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/remove/from/campaign` — Removes a lead or contact from a campaign by deleting the campaignmember record. provide either the member id (lead/contact id) or the specific campaign member id.
  - body: { member_id?: string, campaign_id: string, campaign_member_id?: string }
- `POST https://api.mcp.ai/api/salesforce/remove/note/object/by/id` — Deprecated: permanently deletes an existing salesforce note object identified by its unique id.
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/remove/opportunity/by/id` — Deprecated: permanently deletes an existing salesforce opportunity by its id; if the opportunity does not exist, a 'not found' (404) error occurs.
  - body: { id: string }
- `POST https://api.mcp.ai/api/salesforce/retrieve/account/data/and/error/responses` — Deprecated: retrieves comprehensive metadata for the salesforce account sobject, detailing its properties, recent records, and related resource urls.
- `POST https://api.mcp.ai/api/salesforce/retrieve/campaign/data/with/error/handling` — Deprecated: retrieves comprehensive information and metadata for the salesforce campaign sobject, provided it is enabled and accessible in the organization, and features robust error handling.
- `POST https://api.mcp.ai/api/salesforce/retrieve/contact/info/with/standard/responses` — Deprecated: retrieves comprehensive metadata (e.g., fields, data types, picklist values) for the salesforce contact sobject; this action does not retrieve individual contact records.
- `POST https://api.mcp.ai/api/salesforce/retrieve/lead/by/id` — Deprecated: retrieves details for a salesforce lead by its id; the specified lead id must exist in salesforce.
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/retrieve/lead/data/with/various/responses` — Deprecated: retrieves lead sobject data from salesforce, such as recently viewed leads or general lead object information.
- `POST https://api.mcp.ai/api/salesforce/retrieve/note/object/information` — Deprecated: retrieves comprehensive metadata for the salesforce 'note' sobject, if it is enabled and accessible, to understand its structure and capabilities.
- `POST https://api.mcp.ai/api/salesforce/retrieve/opportunities/data` — Deprecated: retrieves all available opportunity records, representing potential revenue-generating deals, from salesforce.
- `POST https://api.mcp.ai/api/salesforce/retrieve/opportunity/by/id/with/optional/fields` — Deprecated: retrieves a salesforce opportunity by its id; the opportunity id must exist.
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/retrieve/specific/campaign/object/details` — Deprecated: retrieves details for a specific salesforce campaign object by its id, optionally limiting to specified fields; the campaign object must exist.
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/retrieve/specific/contact/by/id` — Deprecated: retrieves a salesforce contact by its unique id; the id must correspond to an existing contact record in salesforce.
  - body: { id: string, fields?: string }
- `POST https://api.mcp.ai/api/salesforce/run/report` — Runs a report and returns the results. creates a report instance that can be checked for completion.
  - body: { report_id: string }
- `POST https://api.mcp.ai/api/salesforce/run/soql/query` — Executes a soql query against salesforce data. returns records matching the query with pagination support.
  - body: { query: string }
- `POST https://api.mcp.ai/api/salesforce/search/accounts` — Search for salesforce accounts using multiple criteria like name, industry, type, location, or contact information.
  - body: { name?: string, type?: string, limit?: integer, phone?: string, fields?: string, website?: string, industry?: string, billing_city?: string, billing_state?: string, billing_country?: string }
- `POST https://api.mcp.ai/api/salesforce/search/campaigns` — Search for salesforce campaigns using multiple criteria like name, type, status, date range, or active status.
  - body: { name?: string, type?: string, limit?: integer, fields?: string, status?: string, is_active?: boolean, start_date_to?: string, start_date_from?: string }
- `POST https://api.mcp.ai/api/salesforce/search/contacts` — Search for salesforce contacts using multiple criteria like name, email, phone, account, or title.
  - body: { name?: string, email?: string, limit?: integer, phone?: string, title?: string, fields?: string, account_name?: string }
- `POST https://api.mcp.ai/api/salesforce/search/leads` — Search for salesforce leads using multiple criteria like name, email, phone, company, title, status, or lead source.
  - body: { name?: string, email?: string, limit?: integer, phone?: string, title?: string, fields?: string, status?: string, company?: string, lead_source?: string }
- `POST https://api.mcp.ai/api/salesforce/search/notes` — Search for salesforce notes using multiple criteria like title, body content, parent record, owner, or creation date.
  - body: { body?: string, limit?: integer, title?: string, fields?: string, is_private?: boolean, owner_name?: string, parent_name?: string, created_date_to?: string, created_date_from?: string }
- `POST https://api.mcp.ai/api/salesforce/search/opportunities` — Search for salesforce opportunities using multiple criteria like name, account, stage, amount, close date, or status.
  - body: { name?: string, limit?: integer, fields?: string, is_won?: boolean, is_closed?: boolean, amount_max?: number, amount_min?: number, stage_name?: string, lead_source?: string, account_name?: string, close_date_to?: string, close_date_from?: string }
- `POST https://api.mcp.ai/api/salesforce/search/tasks` — Search for salesforce tasks using multiple criteria like subject, status, priority, assigned user, related records, or dates.
  - body: { limit?: integer, fields?: string, status?: string, subject?: string, priority?: string, is_closed?: boolean, account_name?: string, contact_name?: string, activity_date_to?: string, assigned_to_name?: string, activity_date_from?: string }
- `POST https://api.mcp.ai/api/salesforce/send/email` — Sends an email through salesforce with options for recipients, attachments, and activity logging.
  - body: { body: string, is_html?: boolean, subject: string, log_email?: boolean, sender_type?: string, cc_addresses?: string, recipient_id?: string, to_addresses: string, bcc_addresses?: string, attachment_ids?: string, sender_address?: string, related_record_id?: string }
- `POST https://api.mcp.ai/api/salesforce/send/email/from/template` — Sends an email using a predefined salesforce email template with merge field support.
  - body: { log_email?: boolean, sender_type?: string, template_id: string, cc_addresses?: string, recipient_id: string, bcc_addresses?: string, attachment_ids?: string, sender_address?: string, related_record_id?: string, add_threading_tokens?: boolean, additional_to_addresses?: string }
- `POST https://api.mcp.ai/api/salesforce/send/mass/email` — Sends bulk emails to multiple recipients, either using a template or custom content. processes in batches for better performance.
  - body: { body?: string, is_html?: boolean, subject?: string, batch_size?: integer, log_emails?: boolean, sender_type?: string, template_id?: string, recipient_ids: string[], sender_address?: string }
- `POST https://api.mcp.ai/api/salesforce/update/account` — Updates an existing account in salesforce with the specified changes. only provided fields will be updated.
  - body: { fax?: string, name?: string, type?: string, phone?: string, website?: string, industry?: string, sic_desc?: string, parent_id?: string, account_id: string, description?: string, billing_city?: string, billing_state?: string, shipping_city?: string, account_source?: string, annual_revenue?: number, billing_street?: string, shipping_state?: string, billing_country?: string, shipping_street?: string, shipping_country?: string, billing_postal_code?: string, number_of_employees?: integer, shipping_postal_code?: string }
- `POST https://api.mcp.ai/api/salesforce/update/account/object/by/id` — Deprecated: updates specified fields of an existing salesforce account object identified by its unique id; field names are case-sensitive and read-only fields are ignored.
  - body: { Id?: string, id: string, Fax?: string, Sic?: string, Name?: string, Site?: string, Type?: string, Phone?: string, Jigsaw?: string, Rating?: string, SLA__c?: string, OwnerId?: string, SicDesc?: string, Website?: string, Industry?: string, ParentId?: string, PhotoUrl?: string, Active__c?: string, IsDeleted?: boolean, NaicsCode?: string, NaicsDesc?: string, Ownership?: string, DunsNumber?: string, Tradestyle?: string, BillingCity?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, YearStarted?: string, BillingState?: string, ShippingCity?: string, TickerSymbol?: string, AccountNumber?: string, AccountSource?: string, AnnualRevenue?: integer, BillingStreet?: string, ShippingState?: string, BillingCountry?: string, DandbCompanyId?: string, LastViewedDate?: string, MasterRecordId?: string, ShippingStreet?: string, SystemModstamp?: string, BillingLatitude?: integer, JigsawCompanyId?: string, ShippingCountry?: string, attributes__url?: string, BillingLongitude?: integer, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, OperatingHoursId?: string, ShippingLatitude?: integer, attributes__type?: string, BillingPostalCode?: string, NumberOfEmployees?: integer, ShippingLongitude?: integer, LastReferencedDate?: string, SLASerialNumber__c?: string, ShippingPostalCode?: string, CustomerPriority__c?: string, NumberofLocations__c?: integer, SLAExpirationDate__c?: string, UpsellOpportunity__c?: string, BillingGeocodeAccuracy?: string, ShippingGeocodeAccuracy?: string }
- `POST https://api.mcp.ai/api/salesforce/update/campaign` — Updates an existing campaign in salesforce with the specified changes. only provided fields will be updated.
  - body: { name?: string, type?: string, status?: string, end_date?: string, is_active?: boolean, parent_id?: string, start_date?: string, actual_cost?: number, campaign_id: string, description?: string, number_sent?: number, budgeted_cost?: number, expected_revenue?: number, expected_response?: number }
- `POST https://api.mcp.ai/api/salesforce/update/campaign/by/id/with/json` — Deprecated: updates specific fields of an existing campaign in salesforce, identified by its unique `id`, which must already exist.
  - body: { Id?: string, id: string, Name?: string, Type?: string, Status?: string, EndDate?: string, OwnerId?: string, IsActive?: boolean, ParentId?: string, IsDeleted?: boolean, StartDate?: string, ActualCost?: integer, NumberSent?: integer, CreatedById?: string, CreatedDate?: string, Description?: string, BudgetedCost?: integer, NumberOfLeads?: integer, LastViewedDate?: string, SystemModstamp?: string, ExpectedRevenue?: integer, attributes__url?: string, ExpectedResponse?: integer, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, NumberOfContacts?: integer, attributes__type?: string, NumberOfResponses?: integer, LastReferencedDate?: string, NumberOfOpportunities?: integer, AmountAllOpportunities?: integer, AmountWonOpportunities?: integer, NumberOfConvertedLeads?: integer, NumberOfWonOpportunities?: integer, CampaignMemberRecordTypeId?: string }
- `POST https://api.mcp.ai/api/salesforce/update/contact` — Updates an existing contact in salesforce with the specified changes. only provided fields will be updated.
  - body: { email?: string, phone?: string, title?: string, birthdate?: string, last_name?: string, account_id?: string, contact_id: string, department?: string, first_name?: string, description?: string, mailing_city?: string, mobile_phone?: string, mailing_state?: string, mailing_street?: string, mailing_country?: string, mailing_postal_code?: string }
- `POST https://api.mcp.ai/api/salesforce/update/contact/by/id` — Deprecated: updates specified fields of an existing salesforce contact by its id; at least one field must be provided for modification.
  - body: { Id?: string, id: string, Fax?: string, Name?: string, Email?: string, Phone?: string, Title?: string, Jigsaw?: string, OwnerId?: string, LastName?: string, Level__c?: string, PhotoUrl?: string, AccountId?: string, Birthdate?: string, FirstName?: string, HomePhone?: string, IsDeleted?: boolean, OtherCity?: string, Department?: string, LeadSource?: string, OtherPhone?: string, OtherState?: string, Salutation?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, MailingCity?: string, MobilePhone?: string, OtherStreet?: string, ReportsToId?: string, IndividualId?: string, Languages__c?: string, MailingState?: string, OtherCountry?: string, AssistantName?: string, ContactSource?: string, MailingStreet?: string, OtherLatitude?: integer, AssistantPhone?: string, IsEmailBounced?: boolean, LastViewedDate?: string, MailingCountry?: string, MasterRecordId?: string, OtherLongitude?: integer, SystemModstamp?: string, JigsawContactId?: string, MailingLatitude?: integer, OtherPostalCode?: string, attributes__url?: string, EmailBouncedDate?: string, IsPriorityRecord?: boolean, LastActivityDate?: string, LastCUUpdateDate?: string, LastModifiedById?: string, LastModifiedDate?: string, MailingLongitude?: integer, attributes__type?: string, LastCURequestDate?: string, MailingPostalCode?: string, EmailBouncedReason?: string, LastReferencedDate?: string, OtherGeocodeAccuracy?: string, MailingGeocodeAccuracy?: string }
- `POST https://api.mcp.ai/api/salesforce/update/lead` — Updates an existing lead in salesforce with the specified changes. only provided fields will be updated.
  - body: { city?: string, email?: string, phone?: string, state?: string, title?: string, rating?: string, status?: string, street?: string, company?: string, country?: string, lead_id: string, website?: string, industry?: string, last_name?: string, first_name?: string, description?: string, lead_source?: string, postal_code?: string, annual_revenue?: number, number_of_employees?: integer }
- `POST https://api.mcp.ai/api/salesforce/update/lead/by/id/with/json/payload` — Deprecated: updates specified fields of an existing lead in salesforce via its unique id (path parameter), returning http 204 on success or error details on failure; request body must contain at least
  - body: { Id?: string, id: string, Fax?: string, City?: string, Name?: string, Email?: string, Phone?: string, State?: string, Title?: string, Jigsaw?: string, Rating?: string, Status?: string, Street?: string, Company?: string, Country?: string, OwnerId?: string, Website?: string, Industry?: string, LastName?: string, Latitude?: number, PhotoUrl?: string, FirstName?: string, IsDeleted?: boolean, Longitude?: number, LeadSource?: string, PostalCode?: string, Primary__c?: string, SICCode__c?: string, Salutation?: string, CleanStatus?: string, CreatedById?: string, CreatedDate?: string, Description?: string, IsConverted?: boolean, MobilePhone?: string, IndividualId?: string, AnnualRevenue?: number, ConvertedDate?: string, DandbCompanyId?: string, LastViewedDate?: string, MasterRecordId?: string, SystemModstamp?: string, GeocodeAccuracy?: string, IsUnreadByOwner?: boolean, JigsawContactId?: string, attributes__url?: string, EmailBouncedDate?: string, IsPriorityRecord?: boolean, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string, CompanyDunsNumber?: string, NumberOfEmployees?: integer, ConvertedAccountId?: string, ConvertedContactId?: string, EmailBouncedReason?: string, LastReferencedDate?: string, ProductInterest__c?: string, CurrentGenerators__c?: string, NumberofLocations__c?: integer, ConvertedOpportunityId?: string }
- `POST https://api.mcp.ai/api/salesforce/update/note` — Updates an existing note in salesforce with the specified changes. only provided fields will be updated.
  - body: { body?: string, title?: string, note_id: string, owner_id?: string, is_private?: boolean }
- `POST https://api.mcp.ai/api/salesforce/update/opportunity` — Updates an existing opportunity in salesforce with the specified changes. only provided fields will be updated.
  - body: { name?: string, type?: string, amount?: number, next_step?: string, account_id?: string, close_date?: string, contact_id?: string, stage_name?: string, description?: string, lead_source?: string, probability?: number, opportunity_id: string }
- `POST https://api.mcp.ai/api/salesforce/update/opportunity/by/id` — Deprecated: updates specified fields of an existing salesforce opportunity by its id; the opportunity must exist, and some fields (like name, stagename, closedate) may have specific salesforce validat
  - body: { Id?: string, id: string, Name?: string, Type?: string, IsWon?: boolean, Amount?: integer, Fiscal?: string, OwnerId?: string, IsClosed?: boolean, NextStep?: string, AccountId?: string, CloseDate?: string, ContactId?: string, IsDeleted?: boolean, IsPrivate?: boolean, PushCount?: integer, StageName?: string, CampaignId?: string, FiscalYear?: integer, LeadSource?: string, CreatedById?: string, CreatedDate?: string, Description?: string, Probability?: integer, Pricebook2Id?: string, FiscalQuarter?: integer, HasOverdueTask?: boolean, LastViewedDate?: string, OrderNumber__c?: string, SystemModstamp?: string, ExpectedRevenue?: integer, HasOpenActivity?: boolean, attributes__url?: string, ForecastCategory?: string, LastActivityDate?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string, TrackingNumber__c?: string, LastReferencedDate?: string, MainCompetitors__c?: string, LastStageChangeDate?: string, CurrentGenerators__c?: string, ForecastCategoryName?: string, HasOpportunityLineItem?: boolean, TotalOpportunityQuantity?: integer, LastAmountChangedHistoryId?: string, DeliveryInstallationStatus__c?: string, LastCloseDateChangedHistoryId?: string }
- `POST https://api.mcp.ai/api/salesforce/update/specific/note/by/id` — Deprecated: use `update specific note by id` instead. updates specified fields of an existing salesforce note sobject identified by its id; the note must already exist.
  - body: { Id?: string, id: string, Body?: string, Title?: string, OwnerId?: string, ParentId?: string, IsDeleted?: boolean, IsPrivate?: boolean, CreatedById?: string, CreatedDate?: string, SystemModstamp?: string, attributes__url?: string, LastModifiedById?: string, LastModifiedDate?: string, attributes__type?: string }
- `POST https://api.mcp.ai/api/salesforce/update/task` — Updates an existing task in salesforce with new information. only provided fields will be updated.
  - body: { status?: string, who_id?: string, subject?: string, task_id: string, what_id?: string, priority?: string, description?: string, activity_date?: string, is_reminder_set?: boolean, reminder_date_time?: string }

## More
- Page: https://mcp.ai/salesforce
- Agent spec (llms.txt): https://mcp.ai/salesforce/llms.txt
- Postman collection: https://mcp.ai/salesforce/postman.json
