{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"github_mcp-smn2gnt-mcp-salesforce","slug":"mcp-smn2gnt-mcp-salesforce","name":"MCP-Salesforce","type":"mcp","url":"https://github.com/smn2gnt/MCP-Salesforce","page_url":"https://unfragile.ai/mcp-smn2gnt-mcp-salesforce","categories":["mcp-servers"],"tags":["mcp","modelcontextprotocol","salesforce","server"],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_0","uri":"capability://tool.use.integration.soql.query.execution.with.llm.driven.schema.awareness","name":"soql query execution with llm-driven schema awareness","description":"Executes Salesforce Object Query Language (SOQL) queries through an MCP tool interface, enabling LLMs to construct and run SQL-like queries against Salesforce objects. The connector caches object metadata in the SalesforceClient to reduce API calls and provide schema context to the LLM, allowing the model to understand available fields and relationships before query construction. Queries are validated and executed via the Salesforce REST API, with results returned as structured JSON for LLM processing.","intents":["I want Claude to query my Salesforce database and return specific records matching criteria","I need to retrieve customer data from Salesforce based on dynamic conditions the LLM determines","I want to enable natural language queries that get translated to SOQL by the LLM"],"best_for":["Teams building AI agents that need read access to Salesforce data","Developers creating LLM-powered reporting and analytics on Salesforce records","Organizations automating data retrieval workflows through conversational interfaces"],"limitations":["SOQL syntax must be valid — LLM-generated queries may require validation/retry loops","Metadata caching is in-memory only — no persistence across server restarts","Query result size limited by Salesforce API response limits (typically 2000 records per query)","No support for complex joins beyond Salesforce relationship queries"],"requires":["Salesforce org with API access enabled","Valid OAuth2 credentials or session token for Salesforce","Python 3.9+","MCP client configured to communicate with the MCP server"],"input_types":["SOQL query string (text)","Object names and field references (text)"],"output_types":["JSON array of record objects","Query execution metadata (record count, execution time)"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_1","uri":"capability://search.retrieval.sosl.full.text.search.across.salesforce.objects","name":"sosl full-text search across salesforce objects","description":"Executes Salesforce Object Search Language (SOSL) queries to perform full-text search across multiple Salesforce objects simultaneously. The connector routes SOSL search requests through the MCP tool handler, which formats search parameters and sends them to the Salesforce REST API. Results are returned as structured JSON containing matching records grouped by object type, enabling LLMs to discover records through natural language search terms rather than structured queries.","intents":["I want to search across all Salesforce objects for records matching a keyword or phrase","I need the LLM to find customer records by name, email, or other searchable fields","I want to enable natural language search that returns results from multiple object types"],"best_for":["Building conversational search interfaces over Salesforce data","Enabling LLM-powered discovery of records across multiple object types","Creating AI assistants that need to find relevant Salesforce records by keyword"],"limitations":["SOSL searches are limited to fields marked as searchable in Salesforce","Full-text search may return false positives requiring LLM-based filtering","Search results limited by Salesforce API pagination (typically 2000 results)","No support for complex boolean operators beyond Salesforce SOSL syntax"],"requires":["Salesforce org with SOSL search enabled","Valid OAuth2 credentials for Salesforce API access","Python 3.9+","MCP client configured to communicate with the server"],"input_types":["Search query string (text)","Optional object type filters (text)"],"output_types":["JSON object with results grouped by Salesforce object type","Record metadata including ID, name, and matching fields"],"categories":["search-retrieval","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_10","uri":"capability://tool.use.integration.salesforce.api.request.formatting.and.response.parsing","name":"salesforce api request formatting and response parsing","description":"Formats HTTP requests to Salesforce REST API endpoints with proper headers, authentication tokens, and request bodies, then parses JSON responses into Python objects. The SalesforceClient handles URL construction, parameter encoding, and error response interpretation. This layer abstracts away HTTP details from the MCP tool handlers, providing a clean interface for Salesforce operations.","intents":["I want the MCP server to properly format Salesforce API requests with correct headers and authentication","I need to parse Salesforce API responses and extract relevant data","I want to handle Salesforce API errors and convert them to meaningful messages"],"best_for":["Building MCP servers that need to interact with Salesforce REST API","Abstracting HTTP details from tool handlers","Providing consistent error handling across all API calls"],"limitations":["Request formatting is specific to Salesforce REST API — not extensible to other APIs","Response parsing assumes JSON format — no support for other response types","Error handling is basic — Salesforce error codes are passed through without translation","No support for request retries or exponential backoff"],"requires":["Valid Salesforce API endpoints and authentication tokens","Python 3.9+ with requests library","MCP server running"],"input_types":["API endpoint path (text)","Request method (GET, POST, PATCH, DELETE)","Request parameters and body (structured data)"],"output_types":["Parsed JSON response (structured data)","HTTP status codes and error messages"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_11","uri":"capability://tool.use.integration.mcp.server.lifecycle.management.and.request.handling","name":"mcp server lifecycle management and request handling","description":"Implements the MCP Server component that manages the server lifecycle, including initialization, request routing, and shutdown. The server listens for MCP protocol messages from the client, routes them to appropriate handlers (list_tools, call_tool), and sends responses back. The server maintains the SalesforceClient instance and coordinates between the MCP protocol layer and Salesforce API operations.","intents":["I want to run an MCP server that handles requests from LLM clients","I need the server to properly initialize and manage the Salesforce connection","I want to route MCP protocol messages to the appropriate handlers"],"best_for":["Building MCP servers that integrate with Salesforce","Creating long-running services that handle multiple LLM client requests","Enabling LLM clients to discover and execute Salesforce tools"],"limitations":["Server is single-threaded — handles one request at a time","No built-in load balancing or horizontal scaling","Server lifecycle is tied to the process — no graceful shutdown handling","No support for multiple concurrent LLM client connections"],"requires":["Python 3.9+","MCP client configured to connect to the server","Valid Salesforce credentials for SalesforceClient initialization","Network connectivity between MCP client and server"],"input_types":["MCP protocol messages from client (JSON)"],"output_types":["MCP protocol responses (JSON)","Tool execution results"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_2","uri":"capability://data.processing.analysis.object.metadata.discovery.and.field.schema.retrieval","name":"object metadata discovery and field schema retrieval","description":"Retrieves and caches Salesforce object metadata including field definitions, relationships, and constraints through the SalesforceClient's metadata caching layer. The MCP tool handler exposes a 'get_object_fields' tool that queries the Salesforce Describe API to return field names, types, lengths, and required/updateable flags. Metadata is cached in-memory to reduce API calls when the LLM needs to understand object structures for query construction or validation.","intents":["I want the LLM to understand what fields are available on a Salesforce object before constructing queries","I need to discover the schema of custom objects in my Salesforce org","I want to validate that a field exists and is updateable before attempting an update operation"],"best_for":["LLM agents that need to dynamically discover Salesforce object schemas","Building adaptive workflows that adjust based on available fields","Enabling LLMs to provide field-level validation before data operations"],"limitations":["Metadata cache is in-memory only — does not persist across server restarts","Cache does not automatically refresh when Salesforce schema changes","Large orgs with many custom objects may experience slower initial metadata loading","Field metadata does not include picklist values or dependent field relationships"],"requires":["Salesforce org with Describe API access","Valid OAuth2 credentials for Salesforce","Python 3.9+","MCP client connection to the server"],"input_types":["Object name (text, e.g., 'Account', 'Contact')"],"output_types":["JSON object containing field definitions with types, lengths, and constraints","Metadata about relationships and required fields"],"categories":["data-processing-analysis","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_3","uri":"capability://data.processing.analysis.single.record.retrieval.by.id.with.field.selection","name":"single record retrieval by id with field selection","description":"Fetches individual Salesforce records by their ID through the 'get_record' MCP tool, which calls the Salesforce REST API with optional field filtering. The tool handler accepts a record ID and optional list of fields to retrieve, returning the record as a JSON object. This capability enables LLMs to fetch specific records for inspection, validation, or use in downstream operations without executing full queries.","intents":["I want to fetch a specific Salesforce record by its ID to inspect its current values","I need to retrieve only certain fields from a record to reduce payload size","I want the LLM to validate a record exists before attempting to update it"],"best_for":["LLM agents performing record-specific operations","Building workflows that need to fetch and inspect individual records","Reducing API payload by selecting only required fields"],"limitations":["Requires knowing the exact record ID — cannot fetch by field values","Field selection must use valid Salesforce field names","No support for fetching related records in a single call","Record must exist — returns error if ID is invalid"],"requires":["Valid Salesforce record ID (18-character or 15-character format)","Valid OAuth2 credentials for Salesforce","Python 3.9+","MCP client connection"],"input_types":["Record ID (text, 15 or 18 characters)","Optional field names array (text)"],"output_types":["JSON object representing the Salesforce record","Field values with their types"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_4","uri":"capability://data.processing.analysis.record.creation.with.field.validation.and.default.handling","name":"record creation with field validation and default handling","description":"Creates new Salesforce records through the 'create_record' MCP tool, which accepts an object type and field values as input. The tool handler sends a POST request to the Salesforce REST API with the provided field data, applying Salesforce's field validation rules and default values. The API returns the newly created record ID and any validation errors, enabling LLMs to create records with automatic constraint enforcement.","intents":["I want the LLM to create new Salesforce records based on user input or extracted data","I need to ensure new records comply with Salesforce field constraints and required fields","I want to capture the new record ID for use in subsequent operations"],"best_for":["LLM agents automating record creation workflows","Building conversational interfaces for data entry into Salesforce","Enabling AI-driven data ingestion with automatic validation"],"limitations":["LLM must provide all required fields — missing required fields cause API errors","Field values must match Salesforce data types and constraints","No support for creating related records in a single call","Validation errors from Salesforce are returned but may require LLM interpretation"],"requires":["Valid OAuth2 credentials with create permissions on the target object","Knowledge of required fields for the object type","Python 3.9+","MCP client connection"],"input_types":["Object type name (text, e.g., 'Account')","Field values as JSON object (structured data)"],"output_types":["Newly created record ID (text)","Validation errors if creation failed (text)"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_5","uri":"capability://data.processing.analysis.record.update.with.field.level.change.tracking","name":"record update with field-level change tracking","description":"Updates existing Salesforce records through the 'update_record' MCP tool, which accepts a record ID and a map of field names to new values. The tool handler sends a PATCH request to the Salesforce REST API, applying only the specified field changes while preserving other field values. Salesforce's field-level validation and update permissions are enforced, and the tool returns success/failure status with any validation errors.","intents":["I want the LLM to update specific fields on a Salesforce record","I need to modify records based on user input or AI-determined changes","I want to ensure only specified fields are changed, leaving others untouched"],"best_for":["LLM agents performing targeted record updates","Building workflows that modify specific fields without full record replacement","Enabling conversational interfaces for record modification"],"limitations":["Field values must match Salesforce data types and constraints","Update permissions are enforced by Salesforce — some fields may be read-only","No support for updating related records in a single call","Validation errors require LLM interpretation and retry logic"],"requires":["Valid record ID (15 or 18 characters)","Valid OAuth2 credentials with update permissions on the target object","Knowledge of updateable fields for the object type","Python 3.9+","MCP client connection"],"input_types":["Record ID (text)","Field updates as JSON object mapping field names to values (structured data)"],"output_types":["Success/failure status (boolean)","Validation errors if update failed (text)"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_6","uri":"capability://data.processing.analysis.record.deletion.with.id.based.targeting","name":"record deletion with id-based targeting","description":"Deletes Salesforce records through the 'delete_record' MCP tool, which accepts a record ID and sends a DELETE request to the Salesforce REST API. The tool handler validates the record ID format and enforces Salesforce's delete permissions, returning success/failure status. This capability enables LLMs to remove records as part of automated workflows or data cleanup operations.","intents":["I want the LLM to delete a Salesforce record based on user request or workflow logic","I need to remove duplicate or obsolete records from Salesforce","I want to enable conversational deletion with confirmation logic"],"best_for":["LLM agents performing record cleanup or deletion workflows","Building conversational interfaces with delete capabilities","Automating data removal based on business logic"],"limitations":["Deletion is permanent — no undo capability","Some records may be protected from deletion by Salesforce business rules","No support for cascade deletion of related records","Requires explicit delete permissions on the object type"],"requires":["Valid record ID (15 or 18 characters)","Valid OAuth2 credentials with delete permissions on the target object","Python 3.9+","MCP client connection"],"input_types":["Record ID (text)"],"output_types":["Success/failure status (boolean)","Error message if deletion failed (text)"],"categories":["data-processing-analysis","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_7","uri":"capability://tool.use.integration.mcp.tool.registration.and.schema.exposure","name":"mcp tool registration and schema exposure","description":"Registers all Salesforce operations (SOQL, SOSL, CRUD, metadata) as MCP tools with JSON schema definitions through the 'handle_list_tools' method in the MCP Server component. Each tool includes a schema describing required parameters, parameter types, and descriptions. The MCP server exposes these schemas to the LLM client, enabling the model to discover available operations and understand their signatures without hardcoding tool definitions.","intents":["I want the LLM to discover what Salesforce operations are available","I need the LLM to understand the parameters and types for each Salesforce tool","I want to dynamically expose Salesforce capabilities to the LLM without manual configuration"],"best_for":["Building LLM agents that need to discover available Salesforce operations","Creating flexible MCP servers that expose tools dynamically","Enabling LLMs to understand tool schemas without documentation"],"limitations":["Tool schemas are static — do not reflect dynamic Salesforce customizations","Schema descriptions are hardcoded in the server — require code changes to update","No support for conditional tool availability based on user permissions","Schema validation is performed by the MCP client, not the server"],"requires":["MCP client that supports tool discovery via handle_list_tools","Python 3.9+","MCP server running and connected to the client"],"input_types":["None — tool listing is initiated by the MCP client"],"output_types":["JSON array of tool definitions with schemas","Tool names, descriptions, and parameter specifications"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_8","uri":"capability://tool.use.integration.mcp.tool.execution.with.request.routing.and.error.handling","name":"mcp tool execution with request routing and error handling","description":"Routes and executes MCP tool calls through the 'handle_call_tool' method, which receives tool names and arguments from the LLM client and dispatches them to the appropriate handler (SOQL, SOSL, CRUD, metadata). The method validates arguments against tool schemas, executes the operation via SalesforceClient, and returns results or error messages in MCP-compliant format. Error handling includes Salesforce API errors, validation failures, and authentication issues.","intents":["I want the MCP server to execute Salesforce operations requested by the LLM","I need proper error handling and reporting when Salesforce operations fail","I want to route different tool types to their appropriate handlers"],"best_for":["MCP servers that need to execute tools requested by LLM clients","Building robust error handling for Salesforce API failures","Enabling LLMs to execute operations with automatic error recovery"],"limitations":["Error messages from Salesforce API are passed through with minimal translation","No automatic retry logic for transient failures","Tool execution is synchronous — long-running operations may timeout","No support for tool execution timeouts or cancellation"],"requires":["MCP client sending tool execution requests","Valid SalesforceClient instance with active authentication","Python 3.9+","MCP server running"],"input_types":["Tool name (text)","Tool arguments as JSON object (structured data)"],"output_types":["Tool execution result (varies by tool type)","Error message if execution failed (text)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"github_mcp-smn2gnt-mcp-salesforce__cap_9","uri":"capability://safety.moderation.salesforce.oauth2.authentication.with.credential.management","name":"salesforce oauth2 authentication with credential management","description":"Manages Salesforce authentication through OAuth2 credentials stored in environment variables or configuration files, with the SalesforceClient establishing secure connections using these credentials. The client validates credentials during initialization and maintains an active session for API requests. Authentication errors are caught and reported, enabling the MCP server to fail gracefully if credentials are invalid or expired.","intents":["I want to securely authenticate the MCP server with Salesforce using OAuth2","I need to manage Salesforce credentials without hardcoding them in the server","I want the server to validate authentication before attempting API calls"],"best_for":["Production deployments requiring secure credential management","Teams using environment-based configuration for secrets","Building MCP servers that need to authenticate with Salesforce"],"limitations":["Credentials must be provided via environment variables — no interactive login","No support for credential refresh or token rotation","Authentication errors are not automatically recovered","Credentials are stored in-memory — no persistence across server restarts"],"requires":["Salesforce OAuth2 credentials (client ID, client secret, refresh token or session token)","Environment variables configured with Salesforce credentials","Python 3.9+","Access to Salesforce org with API enabled"],"input_types":["OAuth2 credentials from environment variables (text)"],"output_types":["Authenticated session for Salesforce API requests","Authentication error messages if credentials are invalid"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":40,"verified":false,"data_access_risk":"high","permissions":["Salesforce org with API access enabled","Valid OAuth2 credentials or session token for Salesforce","Python 3.9+","MCP client configured to communicate with the MCP server","Salesforce org with SOSL search enabled","Valid OAuth2 credentials for Salesforce API access","MCP client configured to communicate with the server","Valid Salesforce API endpoints and authentication tokens","Python 3.9+ with requests library","MCP server running"],"failure_modes":["SOQL syntax must be valid — LLM-generated queries may require validation/retry loops","Metadata caching is in-memory only — no persistence across server restarts","Query result size limited by Salesforce API response limits (typically 2000 records per query)","No support for complex joins beyond Salesforce relationship queries","SOSL searches are limited to fields marked as searchable in Salesforce","Full-text search may return false positives requiring LLM-based filtering","Search results limited by Salesforce API pagination (typically 2000 results)","No support for complex boolean operators beyond Salesforce SOSL syntax","Request formatting is specific to Salesforce REST API — not extensible to other APIs","Response parsing assumes JSON format — no support for other response types","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.27817901582239274,"quality":0.34,"ecosystem":0.52,"match_graph":0.25,"freshness":0.9,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-05-24T12:16:22.065Z","last_scraped_at":"2026-04-22T08:08:39.254Z","last_commit":"2026-04-13T22:24:53Z"},"community":{"stars":174,"forks":52,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=mcp-smn2gnt-mcp-salesforce","compare_url":"https://unfragile.ai/compare?artifact=mcp-smn2gnt-mcp-salesforce"}},"signature":"ZC7SHFSzr46ujgSCDlcgm6rbhUw4xriPK/4sj30lK0j+nFqLVML0EFjfHZNDULlEmNt6r6/RaYxUEeo125RrBQ==","signedAt":"2026-06-15T23:01:31.480Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/mcp-smn2gnt-mcp-salesforce","artifact":"https://unfragile.ai/mcp-smn2gnt-mcp-salesforce","verify":"https://unfragile.ai/api/v1/verify?slug=mcp-smn2gnt-mcp-salesforce","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}