salesforce_search_objects
Search for Salesforce standard and custom objects using a name pattern to streamline object identification. Examples: 'Account' retrieves Account, AccountHistory; 'Order' finds WorkOrder, ServiceOrder__c, and more.
Instructions
Search for Salesforce standard and custom objects by name pattern. Examples: 'Account' will find Account, AccountHistory; 'Order' will find WorkOrder, ServiceOrder__c etc.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| searchPattern | Yes | Search pattern to find objects (e.g., 'Account Coverage' will find objects like 'AccountCoverage__c') |
Implementation Reference
- src/tools/search.ts:19-59 (handler)The main handler function that performs the Salesforce object search: retrieves all objects via describeGlobal(), filters by search pattern in name or label (case-insensitive, multi-term AND), formats results with custom indicator.export async function handleSearchObjects(conn: any, searchPattern: string) { // Get list of all objects const describeGlobal = await conn.describeGlobal(); // Process search pattern to create a more flexible search const searchTerms = searchPattern.toLowerCase().split(' ').filter(term => term.length > 0); // Filter objects based on search pattern const matchingObjects = describeGlobal.sobjects.filter((obj: SalesforceObject) => { const objectName = obj.name.toLowerCase(); const objectLabel = obj.label.toLowerCase(); // Check if all search terms are present in either the API name or label return searchTerms.every(term => objectName.includes(term) || objectLabel.includes(term) ); }); if (matchingObjects.length === 0) { return { content: [{ type: "text", text: `No Salesforce objects found matching "${searchPattern}".` }], isError: false, }; } // Format the output const formattedResults = matchingObjects.map((obj: SalesforceObject) => `${obj.name}${obj.custom ? ' (Custom)' : ''}\n Label: ${obj.label}` ).join('\n\n'); return { content: [{ type: "text", text: `Found ${matchingObjects.length} matching objects:\n\n${formattedResults}` }], isError: false, }; }
- src/tools/search.ts:4-17 (schema)Tool schema definition with name, description, and input schema requiring 'searchPattern' string.export const SEARCH_OBJECTS: Tool = { name: "salesforce_search_objects", description: "Search for Salesforce standard and custom objects by name pattern. Examples: 'Account' will find Account, AccountHistory; 'Order' will find WorkOrder, ServiceOrder__c etc.", inputSchema: { type: "object", properties: { searchPattern: { type: "string", description: "Search pattern to find objects (e.g., 'Account Coverage' will find objects like 'AccountCoverage__c')" } }, required: ["searchPattern"] } };
- src/index.ts:36-47 (registration)Registers the SEARCH_OBJECTS tool in the ListToolsRequest handler.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ SEARCH_OBJECTS, DESCRIBE_OBJECT, QUERY_RECORDS, DML_RECORDS, MANAGE_OBJECT, MANAGE_FIELD, SEARCH_ALL, UPLOAD_REPORT_XML // Add new tool to the list ], }));
- src/index.ts:57-61 (registration)Dispatches calls to 'salesforce_search_objects' by validating args and invoking the handler.case "salesforce_search_objects": { const { searchPattern } = args as { searchPattern: string }; if (!searchPattern) throw new Error('searchPattern is required'); return await handleSearchObjects(conn, searchPattern); }
- src/index.ts:12-12 (registration)Imports the tool schema and handler function from search.ts.import { SEARCH_OBJECTS, handleSearchObjects } from "./tools/search.js";