0.8.2npm · @aaronsb/salesforce-cloud-mcp · current release
Observed 2026-08-31T20:02:32.415Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {},
"resources": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
analyzeRun analytics on any Salesforce object — group by categorical fields, aggregate numeric fields, and compute custom expressions. Uses field-type metadata for validation.Input schema{
"type": "object",
"properties": {
"object": {
"type": "string",
"description": "Salesforce object API name (e.g., Opportunity, Account, Lead)"
},
"filter": {
"type": "string",
"description": "SOQL WHERE clause (e.g., \"StageName = 'Closed Won' AND Amount > 100000\")"
},
"groupBy": {
"type": "string",
"description": "Field to group by (must be picklist, boolean, or similar categorical field)"
},
"compute": {
"type": "array",
"items": {
"type": "string"
},
"description": "Computed expressions (max 5). Format: name = expr. E.g., [\"win_rate = won / total * 100\"]"
},
"maxGroups": {
"type": "number",
"description": "Max groups to return (default: 20)"
}
},
"required": [
"object"
]
} | — | — · — | — |
analyze_conversationAnalyze conversation activity and engagement patterns for an opportunity. Extracts insights from Gong calls, emails, and other activities to provide engagement recommendations.Input schema{
"type": "object",
"properties": {
"opportunityId": {
"type": "string",
"description": "The ID of the Salesforce opportunity to analyze conversation activity for"
}
},
"required": [
"opportunityId"
]
} | — | — · — | — |
batchExecute multiple operations in a single call with result references. Use $N.field to reference prior results (e.g., $0.id for the ID from operation 0). Destructive operations require confirm: true.Input schema{
"type": "object",
"properties": {
"operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"tool": {
"type": "string",
"description": "Tool name to execute (e.g., create_record, update_record, execute_soql)"
},
"args": {
"type": "object",
"description": "Arguments for the tool. Use $N.field to reference results from earlier operations."
},
"confirm": {
"type": "boolean",
"description": "Required for delete operations. Set to true to confirm destructive action."
}
},
"required": [
"tool",
"args"
]
},
"description": "List of operations to execute sequentially (max 16)"
},
"onError": {
"type": "string",
"enum": [
"bail",
"continue"
],
"description": "Error handling: bail (default) stops on first failure, continue executes remaining"
},
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "Response detail level (default: summary)"
}
},
"required": [
"operations"
]
} | — | — · — | — |
create_recordCreate a new record in Salesforce. Supports both standard and custom fields in the data object.Input schema{
"type": "object",
"properties": {
"objectName": {
"type": "string",
"description": "API name of the Salesforce object"
},
"data": {
"type": "object",
"description": "Record data as key-value pairs. For custom fields, use the API name with __c suffix (e.g., { \"Name\": \"Test\", \"Custom_Field__c\": \"Value\" })"
}
},
"required": [
"objectName",
"data"
]
} | — | — · — | — |
delete_recordDelete a record from SalesforceInput schema{
"type": "object",
"properties": {
"objectName": {
"type": "string",
"description": "API name of the Salesforce object"
},
"recordId": {
"type": "string",
"description": "ID of the record to delete"
}
},
"required": [
"objectName",
"recordId"
]
} | — | — · — | — |
describe_objectGet an object's full metadata, including every standard and custom field when includeFields is true. Returns the complete schema — exhaustive but unranked, and large on customised objects. To find out which fields this org actually populates, read `salesforce://field-catalog/{objectName}` instead; it is ranked and far smaller.Input schema{
"type": "object",
"properties": {
"objectName": {
"type": "string",
"description": "API name of the Salesforce object"
},
"includeFields": {
"type": "boolean",
"description": "Whether to include field metadata (default: false). When true, returns all available fields including custom fields, their types, and relationships."
},
"pageSize": {
"type": "number",
"description": "Number of fields per page when includeFields is true (default: 50)"
},
"pageNumber": {
"type": "number",
"description": "Page number to retrieve when includeFields is true (default: 1)"
},
"intent": {
"type": "string",
"enum": [
"pipeline",
"engagement",
"forecasting",
"reporting",
"contact-mapping"
],
"description": "Business intent — filters fields to only those relevant for this use case."
}
},
"required": [
"objectName"
]
} | — | — · — | — |
download_fileDownload a file from Salesforce. Accepts a ContentVersionId (068...) or ContentDocumentId (069...). Saves to a sandboxed workspace directory (default: ~/.local/share/salesforce-cloud-mcp/workspace/, configurable via SF_WORKSPACE_DIR). Text files (CSV, JSON, XML, TXT, etc.) also return content inline. Binary files return the saved path.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "ContentVersionId (068...) or ContentDocumentId (069...). Find these by querying ContentDocumentLink: SELECT ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = '<recordId>'"
}
},
"required": [
"contentId"
]
} | — | — · — | — |
enrich_opportunityEnrich an opportunity with market intelligence, industry insights, and strategic recommendations based on similar deal patterns and best practices.Input schema{
"type": "object",
"properties": {
"opportunityId": {
"type": "string",
"description": "The ID of the Salesforce opportunity to enrich with intelligence"
},
"includeCompetitiveIntel": {
"type": "boolean",
"description": "Whether to include competitive intelligence analysis (default: false)"
},
"includeBestPractices": {
"type": "boolean",
"description": "Whether to include industry-specific best practices (default: true)"
}
},
"required": [
"opportunityId"
]
} | — | — · — | — |
execute_soqlExecute a SOQL query. Supports both standard and custom fields (custom fields end with __c in their API names). To see which fields this org actually populates on an object, read the `salesforce://field-catalog/{objectName}` resource — it is ranked, far smaller than a full schema, and works for any object. That catalog is a usage filter rather than a field list: standard fields remain queryable whether or not they appear in it. Use describe_object when you want an object's complete schema.Input schema{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "SOQL query to execute. For custom fields, use the API name (e.g., Project_Status__c)"
},
"pageSize": {
"type": "number",
"description": "Number of records per page (default: 25)"
},
"pageNumber": {
"type": "number",
"description": "Page number to retrieve (default: 1)"
},
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "Response detail level (default: summary)"
}
},
"required": [
"query"
]
} | — | — · — | — |
find_similar_opportunitiesFind opportunities similar to a reference opportunity or based on specific criteria. Includes pattern analysis and similarity scoring to identify market trends and success patterns.Input schema{
"type": "object",
"properties": {
"referenceOpportunityId": {
"type": "string",
"description": "Optional reference opportunity ID to find similar deals based on its characteristics"
},
"industry": {
"type": "string",
"description": "Filter by industry (e.g., \"Information Technology & Services\")"
},
"minAmount": {
"type": "number",
"description": "Minimum opportunity amount"
},
"maxAmount": {
"type": "number",
"description": "Maximum opportunity amount"
},
"stage": {
"type": "string",
"description": "Filter by opportunity stage (e.g., \"Closed Won\", \"Proposal\")"
},
"isWon": {
"type": "boolean",
"description": "Filter by won/lost status"
},
"closeDateStart": {
"type": "string",
"description": "Start date for close date range (YYYY-MM-DD)"
},
"closeDateEnd": {
"type": "string",
"description": "End date for close date range (YYYY-MM-DD)"
},
"includeAnalysis": {
"type": "boolean",
"description": "Whether to include pattern analysis and insights (default: true)"
},
"limit": {
"type": "number",
"description": "Maximum number of results to return (default: 50)"
}
}
} | — | — · — | — |
generate_business_caseGenerate a markdown business case report for an opportunity. Fetches opportunity details, contacts, conversation insights, and similar won deals to produce a complete report.Input schema{
"type": "object",
"properties": {
"opportunityId": {
"type": "string",
"description": "The ID of the Salesforce opportunity to generate a business case for"
},
"clientName": {
"type": "string",
"description": "Optional client name to override the account name in the report title"
}
},
"required": [
"opportunityId"
]
} | — | — · — | — |
get_opportunity_detailsGet detailed information about a Salesforce opportunity including all available fields (both standard and custom), related records, and metadataInput schema{
"type": "object",
"properties": {
"opportunityId": {
"type": "string",
"description": "The ID of the Salesforce opportunity to retrieve details for"
},
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "Response detail level (default: full)"
},
"intent": {
"type": "string",
"enum": [
"pipeline",
"engagement",
"forecasting",
"reporting",
"contact-mapping"
],
"description": "Business intent — selects relevant fields automatically. Omit for all fields."
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit field names to return. Overrides intent if both provided."
}
},
"required": [
"opportunityId"
]
} | — | — · — | — |
get_user_infoGet information about the current userInput schema{
"type": "object",
"properties": {}
} | — | — · — | — |
list_objectsList all available Salesforce objects, including both standard and custom objectsInput schema{
"type": "object",
"properties": {
"pageSize": {
"type": "number",
"description": "Number of objects per page (default: 25)"
},
"pageNumber": {
"type": "number",
"description": "Page number to retrieve (default: 1)"
}
}
} | — | — · — | — |
opportunity_insightsGenerate detailed insights and analytics from opportunity data including pipeline health, performance metrics, industry trends, and strategic recommendations.Input schema{
"type": "object",
"properties": {
"timeframe": {
"type": "string",
"description": "Time period for analysis",
"enum": [
"current_quarter",
"last_quarter",
"current_year",
"last_year",
"all_time"
]
},
"includeStageAnalysis": {
"type": "boolean",
"description": "Include stage distribution and conversion analysis (default: true)"
},
"includeOwnerPerformance": {
"type": "boolean",
"description": "Include individual owner performance metrics (default: true)"
},
"includeIndustryTrends": {
"type": "boolean",
"description": "Include industry-specific performance trends (default: true)"
},
"includePipelineHealth": {
"type": "boolean",
"description": "Include pipeline health and timing analysis (default: true)"
},
"includeConversionRates": {
"type": "boolean",
"description": "Include stage conversion rate analysis (default: true)"
},
"minAmount": {
"type": "number",
"description": "Minimum opportunity amount for analysis"
},
"maxAmount": {
"type": "number",
"description": "Maximum opportunity amount for analysis"
},
"industry": {
"type": "string",
"description": "Filter analysis to specific industry"
},
"owner": {
"type": "string",
"description": "Filter analysis to specific owner"
}
}
} | — | — · — | — |
search_fieldsFind the field(s) that carry a concept, when you know what you want to query but not the API name. Searches every scored field on the discovered objects — not just the promoted ones — across API names, labels, and help text, ranked by match strength. Searches the core objects by default; pass objectName to scope to one, which discovers it on demand. Set includeValues to get the value set for matched picklists, so you can write the WHERE clause without a second lookup. The match is lexical, not semantic: it finds fields whose name, label or help text contains the term, so a concept this org names differently will not surface, and an object that has not been discovered is not searched. Read `salesforce://field-catalog/{objectName}/all` to browse everything on an object.Input schema{
"type": "object",
"properties": {
"term": {
"type": "string",
"description": "What to look for, matched against field API names, labels, and help text (e.g. \"ai\", \"renewal date\", \"region\")"
},
"objectName": {
"type": "string",
"description": "Restrict the search to one object (e.g. Opportunity). Omit to search all discovered core objects."
},
"includeValues": {
"type": "boolean",
"description": "Include the active value set for matched picklist fields (default: false). Free — the values come from metadata already discovered."
},
"minPopulationPct": {
"type": "number",
"description": "Drop fields populated on fewer than this percent of records (0-100). Omit to include sparsely-populated fields, which is often where custom flags live."
},
"limit": {
"type": "number",
"description": "Maximum matches to return (default: 25, max: 100)"
}
},
"required": [
"term"
]
} | — | — · — | — |
search_opportunitiesSearch for Salesforce opportunities by name, account, and stage. Returns matching opportunities ordered by close date. Results include both standard and custom fields.Input schema{
"type": "object",
"properties": {
"namePattern": {
"type": "string",
"description": "Pattern to match in Opportunity Name. Example: \"Github\" will match \"Github Migration\" or \"My Github Project\"."
},
"accountNamePattern": {
"type": "string",
"description": "Pattern to match in Account Name. Example: \"Ford\" will match opportunities for \"Ford\" or \"Ford Motor Company\"."
},
"stage": {
"type": "string",
"description": "Exact match for opportunity stage. Common values: \"Proposal\", \"Qualification\", \"Negotiation\", \"Closed Won\", \"Closed Lost\"."
},
"pageSize": {
"type": "number",
"description": "Number of records per page (default: 25)"
},
"pageNumber": {
"type": "number",
"description": "Page number to retrieve (default: 1)"
},
"detail": {
"type": "string",
"enum": [
"summary",
"full"
],
"description": "Response detail level (default: summary)"
}
}
} | — | — · — | — |
update_recordUpdate an existing record in Salesforce. Supports updating both standard and custom fields.Input schema{
"type": "object",
"properties": {
"objectName": {
"type": "string",
"description": "API name of the Salesforce object"
},
"recordId": {
"type": "string",
"description": "ID of the record to update"
},
"data": {
"type": "object",
"description": "Record data to update as key-value pairs. For custom fields, use the API name with __c suffix (e.g., { \"Custom_Field__c\": \"New Value\" })"
}
},
"required": [
"objectName",
"recordId",
"data"
]
} | — | — · — | — |
Ranked fields for Account (discovery in progress)
{
"resource_key": "salesforce://field-catalog/Account",
"uri": "salesforce://field-catalog/Account",
"name": "Account Field Catalog",
"description": "Ranked fields for Account (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "ed009195a9a9b1afd77f921e183d89424be6101681a2ba0bd5ebe70e55cb89e9"
}All scored fields for Account, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/Account/all",
"uri": "salesforce://field-catalog/Account/all",
"name": "Account Field Catalog (full)",
"description": "All scored fields for Account, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "cb6045cffe1c66bcfb7df14a563a98b02c9090d155a1569ff4b770801a189957"
}Ranked fields for Contact (discovery in progress)
{
"resource_key": "salesforce://field-catalog/Contact",
"uri": "salesforce://field-catalog/Contact",
"name": "Contact Field Catalog",
"description": "Ranked fields for Contact (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "e213b56f7fe7b06404b0c7bab28a3e0362a847bcef93c47c048d7156af5bcfdb"
}All scored fields for Contact, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/Contact/all",
"uri": "salesforce://field-catalog/Contact/all",
"name": "Contact Field Catalog (full)",
"description": "All scored fields for Contact, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "d4aaffb06166a116c60e837d05380c226d7f1c32104d1f2aa457e374ffd59a3b"
}Ranked fields for ContentVersion (discovery in progress)
{
"resource_key": "salesforce://field-catalog/ContentVersion",
"uri": "salesforce://field-catalog/ContentVersion",
"name": "ContentVersion Field Catalog",
"description": "Ranked fields for ContentVersion (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "edd82c81d3ab69439434374786011da82fd2f0784e6193ed6c7d8e0edff35ea4"
}All scored fields for ContentVersion, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/ContentVersion/all",
"uri": "salesforce://field-catalog/ContentVersion/all",
"name": "ContentVersion Field Catalog (full)",
"description": "All scored fields for ContentVersion, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "49d58d0d6fa75708a0cd65a78b4774591855c8cbdad228299b47cd0b10a5ccf5"
}Ranked fields for Contract (discovery in progress)
{
"resource_key": "salesforce://field-catalog/Contract",
"uri": "salesforce://field-catalog/Contract",
"name": "Contract Field Catalog",
"description": "Ranked fields for Contract (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "a800c446f86f4a2f75f5f28b62e3619f52db3d59d805f71c923609f14614b50f"
}All scored fields for Contract, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/Contract/all",
"uri": "salesforce://field-catalog/Contract/all",
"name": "Contract Field Catalog (full)",
"description": "All scored fields for Contract, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "7f8a31557ee99551dd3d931a38899ea03cdce1c548957c59e5ff57b9bc730692"
}Discovery status: in progress — 0/6 objects
{
"resource_key": "salesforce://field-catalog/_stats",
"uri": "salesforce://field-catalog/_stats",
"name": "Field Discovery Stats",
"description": "Discovery status: in progress — 0/6 objects",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "ef35af7379a10b1b968c0e3364e87d02271efc23f466bad32a61e73fc957b243"
}Ranked fields for Lead (discovery in progress)
{
"resource_key": "salesforce://field-catalog/Lead",
"uri": "salesforce://field-catalog/Lead",
"name": "Lead Field Catalog",
"description": "Ranked fields for Lead (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "15c3f9c4be6323081000e138025f053220b455c8792049b252539e0f8e156657"
}All scored fields for Lead, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/Lead/all",
"uri": "salesforce://field-catalog/Lead/all",
"name": "Lead Field Catalog (full)",
"description": "All scored fields for Lead, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "ff5e65c04ac4472e828a3b837529a1e69b9cb161a479841fdc880855217d87d3"
}Ranked fields for Opportunity (discovery in progress)
{
"resource_key": "salesforce://field-catalog/Opportunity",
"uri": "salesforce://field-catalog/Opportunity",
"name": "Opportunity Field Catalog",
"description": "Ranked fields for Opportunity (discovery in progress)",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "1d3a4f259c945a1704af79bbedc78846a7541474637bf3450029c5460c450473"
}All scored fields for Opportunity, including non-promoted, with scoring rationale
{
"resource_key": "salesforce://field-catalog/Opportunity/all",
"uri": "salesforce://field-catalog/Opportunity/all",
"name": "Opportunity Field Catalog (full)",
"description": "All scored fields for Opportunity, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "cb134df4242cd2691c5df28679e0ad1165a6060e1185a792fc9e87b2a20bdc61"
}Fields this org actually populates on an object, ranked by observed usage and quality. Not an exhaustive field list — standard fields stay queryable whether or not they appear here.
{
"template_key": "salesforce://field-catalog/{objectName}",
"uri_template": "salesforce://field-catalog/{objectName}",
"name": "Field Catalog",
"description": "Fields this org actually populates on an object, ranked by observed usage and quality. Not an exhaustive field list — standard fields stay queryable whether or not they appear here.",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "bed187845c9e38fa49286d2f5a3bb438c910329819b0e830737c0c2b1a20988b"
}All scored fields for a Salesforce object, including non-promoted, with scoring rationale
{
"template_key": "salesforce://field-catalog/{objectName}/all",
"uri_template": "salesforce://field-catalog/{objectName}/all",
"name": "Field Catalog (full)",
"description": "All scored fields for a Salesforce object, including non-promoted, with scoring rationale",
"mime_type": "application/json",
"annotations": null,
"metadata_hash": "ad6fdf2275cba2f150b74c805192726cf190d2f5a5c6fece12cc8a31c64a2ed2"
}