{"name":"io.github.semwalajay83-sem/salesforce-metadata-mcp","slug":"semwalajay83-sem-salesforce-metadata-mcp","title":null,"description":"The only Salesforce MCP with Agentforce, OmniStudio & DevOps Center tools — 228 total.","url":"https://mcp.market/server/semwalajay83-sem-salesforce-metadata-mcp","rating":null,"grade":"B","score":80,"certified":false,"status":"active","category":"sales","tags":["sales"],"presence":{"score":31,"stars":2,"forks":0,"downloads_week":204,"last_push_at":"2026-09-09T11:23:19.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/semwalajay83-sem/salesforce-metadata-mcp","website":null,"version":"3.0.0","remotes":[],"packages":[{"registryType":"npm","identifier":"salesforce-metadata-mcp","version":"3.0.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Salesforce org URL, e.g. https://yourorg.my.salesforce.com","isRequired":true,"name":"SF_INSTANCE_URL"},{"description":"Salesforce access token (or use SF_ALIAS / JWT variables instead)","isSecret":true,"name":"SF_ACCESS_TOKEN"},{"description":"Salesforce CLI org alias (alternative to SF_ACCESS_TOKEN)","name":"SF_ALIAS"},{"description":"Toolsets to load at startup: 'all', 'none', or a comma-separated list. Default: core,metadata. All 228 tools stay available via sf_find_tool / sf_load_toolset.","name":"SF_TOOLSETS"},{"description":"Refuse destructive tools on production orgs: 'destructive' (default), 'strict', or 'off'. Metadata creation is never affected.","name":"SF_PRODUCTION_GUARD"}]}],"tools":[{"name":"hello_world","description":"A sample tool that returns a greeting","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_add_to_change_set","description":"Adds one or more metadata components to an existing Outbound Change Set by change set name. Supports all metadata types: CustomObject, CustomField, ApexClass, ApexTrigger, Flow, ValidationRule, PermissionSet, etc. Use after creating a change set to add the metadata you want to deploy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_assign_layout_to_record_type","description":"Assigns an existing page layout to a specific record type on an object by updating the Profile metadata. Controls which page layout users see when viewing records of a given record type. objectName: the API name of the object recordTypeName: developer name of the record type layoutName: full name of the page layout, e.g. 'Account Layout' profileNames: optional list of profile names to update (defa","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_assign_queue_member","description":"Adds a user to an existing Queue (GroupMember SObject) by username and queue DeveloperName. The queue must already exist (create via sf_create_queue). Users in queues can be assigned records and receive queue notification emails.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_assign_territory_to_user","description":"Assigns a user to an Enterprise Territory Management territory via the UserTerritory2Association SObject. Users assigned to a territory get visibility into accounts in that territory. username or userId: identify the user territoryName: DeveloperName of the Territory2 to assign roleInTerritory: optional role — 'Salesperson', 'Manager', or 'BusinessUser'","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_bulk_delete_records","description":"Deletes multiple records by ID asynchronously using Salesforce Bulk API 2.0. Returns a job ID to track status. Use with caution — deleted records go to the Recycle Bin. objectApiName: Salesforce object API name ids: array of Salesforce record IDs to delete","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_bulk_import_records","description":"Bulk imports records using the Salesforce Bulk API 2.0. Supports insert, upsert, update, and delete operations on large datasets (thousands to millions of records). Provide CSV data with a header row. For upsert, set externalIdField to the field used for matching. Polls until the job completes and returns success/failure counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_bulk_insert_records","description":"Inserts multiple records of the same object type asynchronously using Salesforce Bulk API 2.0. More efficient than individual REST calls for large volumes. Returns a job ID to track status. objectApiName: Salesforce object API name records: array of record objects with field:value pairs externalIdField: if provided, performs an upsert on this external ID field instead of insert","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_bulk_update_records","description":"Updates multiple records of the same object type asynchronously using Salesforce Bulk API 2.0. Each record must include its Salesforce Id field. Returns a job ID to track status. objectApiName: Salesforce object API name records: array of records — each must include 'Id' plus fields to update","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_check_code_coverage","description":"Retrieves Apex code coverage statistics from the org using the Tooling API. Shows which classes meet or fail the 75% coverage threshold required for deployment. Use after running Apex tests to assess coverage. className: optional filter to show only classes matching this name minCoverage: optional threshold — only return classes below this coverage percentage","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_check_deploy_status","description":"Checks the status of an in-progress or recently completed metadata deployment by async job ID. Returns the status (Pending, InProgress, Succeeded, Failed, Canceled), component successes, failures, and test results. Use with the deploy ID returned from sf_deploy_metadata.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_checkout_devops_work_item","description":"Checks out a DevOps Center work item, moving it to 'In Progress' status. This signals that a developer is actively working on the changes for this work item. workItemId: DevOps Center work item ID to check out","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_commit_devops_work_item","description":"Commits changes for a DevOps Center work item by creating a commit record associated with the work item. Records the commit message for audit tracking. workItemId: DevOps Center work item ID message: commit message describing the changes","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_create_agent","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_agent_action","description":"Creates an Agentforce Action (GenAiFunction) — step 2 of the agent setup sequence. Call this once per capability (once per flow, once per Apex class). IMPORTANT by type: For Flow — the flow must already exist as an Active AutoLaunchedFlow (use sf_create_flow with flowType='AutoLaunchedFlow' and status='Active' first). For ApexClass — the class must already exist AND have @InvocableMethod (use sf_c","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_agent_planner","description":"Creates a GenAiPlanner that connects an Agentforce Agent (Bot) to its Topics — STEP 4 (FINAL) of the agent setup sequence. Without this step the agent cannot route ANY request regardless of how many topics and actions were created. Also known as: linking topics to agent, connecting topics, finishing agent setup, wiring topics, registering topics. CRITICAL: topicNames must be the COMPLETE list of a","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_agent_topic","description":"Creates a Topic (GenAiPlugin) for an Agentforce Agent — step 3 of the agent setup sequence. Call this AFTER all actions have been created with sf_create_agent_action. CRITICAL: pass ALL action API names in the 'actions' array — omitting it creates a topic with no executable actions and the agent silently does nothing. agentName is informational only (not written to XML) — the actual agent→topic wi","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_apex_class","description":"Creates and deploys an Apex class to the Salesforce org using the Metadata API. Accepts the full Apex source code including the class declaration. Use for any type of Apex class: service classes, controllers, batch classes, schedulable classes, queueable classes, test utilities, etc. IMPORTANT — If this class will be used as an Agentforce agent action: it MUST contain a public static method annota","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_apex_email_service","description":"Creates an Apex Email Service that processes inbound emails via an Apex class implementing Messaging.InboundEmailHandler. Useful for creating support cases from emails, parsing email content, or triggering workflows from inbound messages. The Apex class must exist before creating the service.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_apex_test_class","description":"Creates and deploys an Apex Test Class (annotated with @isTest). Provide the full test class source code. Optionally run the tests immediately after deployment. Test classes are required for Salesforce deployments to production (minimum 75% code coverage). Use for unit testing Apex classes, triggers, and business logic.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_apex_trigger","description":"Creates and deploys an Apex Trigger on any Salesforce object. Specify the trigger events (before insert, after update, etc.) and the trigger body code. The trigger declaration (trigger Name on Object (events)) is auto-generated — just provide the code that goes inside the trigger body. Deployed via Metadata API SOAP deploy.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_assignment_rule","description":"Creates an Assignment Rule for Leads or Cases. Assignment rules automatically route new records to the appropriate owner (user or queue) based on matching criteria. Only one rule can be active at a time per object. Rule entries are evaluated top-to-bottom and the first match wins.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_aura_app","description":"Generates an Aura Application bundle scaffold. Returns the .app file content with the specified access level, optional parent app extension (e.g. force:slds for SLDS styling), included components, and body content. Aura Apps are standalone Lightning applications accessible via /c/AppName.app URL.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_aura_component","description":"Generates an Aura (Lightning Component Framework) component scaffold. Returns the complete bundle file contents: .cmp markup, JavaScript controller, CSS stylesheet, design resource, and metadata XML. Specify interfaces the component implements (e.g. force:appHostable for App Builder), attributes with types and defaults, and an optional Apex controller. Use sf_create_lwc for new development — Aura ","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_aura_event","description":"Generates an Aura Event scaffold (.evt file content). Supports COMPONENT events (propagate up the component hierarchy) and APPLICATION events (broadcast to all subscribed components). Define event attributes with names and types. Components fire events with component.getEvent() and APPLICATION events with $A.get().","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_auto_response_rule","description":"Creates an Auto-Response Rule for Web-to-Lead or Web-to-Case. When a lead or case is created via a web form, this rule automatically sends a confirmation email using the specified template. Rule entries define which template to use based on criteria.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_custom_button","description":"Creates a custom button or link on a Salesforce object via the Metadata API (WebLink). Supports list buttons, detail page buttons, and mass action buttons. Content can be a URL, JavaScript, or a Visualforce page reference. Specify how the target opens (sidebar, new window, replace current page, etc.).","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_custom_tab","description":"Creates a Custom Web Tab (URL-based tab) that opens an external URL or web page within the Salesforce UI. Different from sf_create_tab which creates object-based tabs. Use when you need a navigation item that points to an external website, an internal Visualforce page by URL, or a custom web app. fullName: API name for the tab (no spaces, e.g. 'My_Web_Tab') label: display label shown in the tab ba","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_data_category","description":"Creates a Data Category Group with categories for classifying Salesforce Knowledge articles, solutions, or cases. Data categories enable hierarchical content classification and visibility controls. fullName: data category group API name label: display label objectUsage: object type to categorize (e.g. 'KnowledgeArticle') categories: top-level categories with optional sub-categories","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_devops_pull_request","description":"Creates a pull request record for a DevOps Center work item. Pull requests represent code review requests before merging changes to a target branch or pipeline stage. workItemId: DevOps Center work item ID title: pull request title description: optional pull request description","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_duplicate_rule","description":"Creates a Duplicate Rule that uses Matching Rules to detect potential duplicates when records are saved. Can block duplicates, allow with a warning, or allow silently. Works for Leads, Contacts, Accounts, and custom objects. Requires existing Matching Rules.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_email_alert","description":"Creates a Workflow Email Alert action that can be triggered by Flows, Approval Processes, or Workflow Rules. Specify the email template to use and recipients (owner, creator, users, roles, or custom email addresses). Use when you need to send notification emails as part of automation.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_entitlement_process","description":"Creates an Entitlement Process (SLA policy) that defines the time-based steps and milestones required to resolve cases. Entitlement processes automate service level agreement (SLA) enforcement. fullName: entitlement process API name name: display name businessHoursName: optional business hours to apply entryStartDateField: field that starts the SLA clock milestones: array of milestone definitions ","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_escalation_rule","description":"Creates an Escalation Rule for Cases. Escalation rules automatically escalate cases that haven't been closed within a specified time, reassigning them to other users or queues and optionally sending notifications. Based on business hours and a configurable start date (creation time or last modification).","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_external_id_field","description":"Creates a custom field with externalId=true on a Salesforce object. External ID fields can be used for upsert operations and integration matching. The field is also automatically marked as unique. objectName: object API name fullName: field API name ending in __c label: display label type: field type (Text, Number, Email, or AutoNumber) length: max length for Text fields","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_field_set","description":"Creates a field set on a Salesforce object via the Metadata API. Field sets are named groupings of fields used in dynamic forms, Apex code, and LWC. Specify the displayed fields (in the field set) and optionally additional available fields that users can add.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_field_update","description":"Creates a standalone Workflow Field Update action that sets a field to a formula, literal value, or null when triggered. Can be associated with Workflow Rules, Approval Process steps, or used independently. objectName: object the field update applies to fullName: developer name of the field update name: display name field: field API name to update operation: Formula, Literal, LiteralBlank, or Null","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_forecast_hierarchy","description":"Configures a Collaborative Forecasting hierarchy entry by assigning a user as a forecast manager for another user. Forecast managers can view and adjust forecasts for their reports. managerUsername: username of the forecast manager reporteeUsername: username of the user being managed forecastingType: the forecasting type DeveloperName (e.g. 'OpportunityRevenue')","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_global_action","description":"Creates a global quick action accessible from the global navigation bar in Salesforce. Supports Create, LogACall, SendEmail, and Canvas action types. Global actions are not tied to a specific object and appear in the global quick actions menu.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_letterhead","description":"Creates a Letterhead that provides a consistent visual wrapper for HTML email templates. Letterheads define header, body, and footer colors and can be referenced by email templates to ensure brand consistency across automated emails. fullName: letterhead API name name: display name backgroundColor: page background color hex, e.g. '#FFFFFF' bodyColor: body area background color hex headerColor: hea","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_matching_rule","description":"Creates a Matching Rule used by Duplicate Rules to detect potential duplicate records. Define which fields to match on and which matching algorithm to use (Exact, FirstName, LastName, Company, Email, Phone, etc.). Must be created before creating a Duplicate Rule that references it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_milestone","description":"Creates a Milestone Type that can be referenced in Entitlement Processes to define SLA checkpoints. Milestones represent required steps (e.g., 'First Response', 'Resolution') with time-based targets. fullName: milestone type API name name: display name description: optional description recurrenceType: how the milestone repeats — recursIndependently, recursChained, or noRecurrence","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_notification_type","description":"Creates a Custom Notification Type for sending in-app and mobile push notifications. Custom notification types can be triggered from Flows, Apex, or Process Builder. Users receive notifications in the Salesforce Bell icon (desktop) and on the Salesforce mobile app. fullName: notification type API name masterLabel: display label customNotifTypeName: developer name for the notification type descript","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_outbound_change_set","description":"Creates an Outbound Change Set in the org — a container for metadata components that can be deployed to connected orgs (sandbox → production). Optionally adds specified components immediately. Returns the change set ID and a link to view it in Setup. Use this before deploying to production when using the change set deployment model.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_outbound_message","description":"Creates a Workflow Outbound Message that sends a SOAP XML payload to an external endpoint when triggered by a Workflow Rule or Approval Process. Use for real-time integration with external systems that need to be notified of record changes. objectName: object the message is for fullName: developer name for the outbound message name: display name endpointUrl: external SOAP endpoint URL fields: fiel","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_package","description":"Creates a second-generation managed or unlocked package using the SF CLI. Packages bundle metadata for distribution. Managed packages support namespacing and AppExchange listing; unlocked packages support source-tracking without namespacing. name: package name packageType: Managed or Unlocked path: source path for the package, e.g. 'force-app' description: optional description noNamespace: create ","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_package_version","description":"Creates a new version of an existing second-generation package. Each version captures the current state of the package source. Package versions can be promoted and installed in target orgs. packageId: Package ID (0Ho...) or package alias installationKey: optional key to protect the version codeVersion: version number, e.g. '1.0.0.NEXT' wait: minutes to wait for version creation to complete","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_platform_event","description":"Creates a Platform Event object (ending in __e) for event-driven architecture. Platform Events enable real-time publish/subscribe communication between systems. Publishers fire events and subscribers (Flows, Apex triggers, external systems) react to them. PublishAfterCommit waits for DML to commit; PublishImmediately fires right away.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_platform_event_trigger","description":"Creates an Apex trigger that fires when a Platform Event message is received (after insert). Use to process incoming platform events with Apex logic — e.g., creating records, sending notifications, or calling external APIs when an event is published. triggerName: Apex trigger name eventApiName: Platform event API name, e.g. 'MyEvent__e' body: Apex code body for the trigger apiVersion: Salesforce A","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_price_book","description":"Creates a Pricebook2 record and optionally adds products with pricing via PricebookEntry records. Price books define the prices for your products. Each org has one standard price book; additional custom price books can be used for different customer segments or regions. name: price book name isActive: whether the price book is active isStandard: true only for the standard price book currencyIsoCod","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_product","description":"Creates a Salesforce Product2 record. Products represent items or services that can be added to Opportunities and Quotes via Opportunity Line Items. Use with sf_create_price_book to set pricing. name: product name productCode: optional SKU or product code description: optional description isActive: whether the product is available for use (default: true) family: product family/category, e.g. 'Hard","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_public_group","description":"Creates a Public Group (Group SObject with Type=Regular) for sharing rules, email distribution, or queue membership. Public groups can include users, roles, and other groups. Use as a sharing target in sf_create_sharing_rule.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_quick_action","description":"Creates an object-specific quick action on a Salesforce object via the Metadata API. Supports Create, Update, LogACall, and SendEmail action types. Optionally specify a target object (for Create type) and the fields to include in the action layout.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_record","description":"Creates a single SObject record via the Salesforce REST API. Provide the object API name and a fields object with field API names and values. For bulk creation (100+ records), use sf_bulk_import_records instead.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_scheduled_flow","description":"Creates a Schedule-Triggered Flow that runs automatically on a recurring schedule (e.g., daily, weekly) against a batch of matching records. Use for nightly batch processing, periodic data updates, or scheduled notifications. fullName: Flow API name label: Flow display label objectApiName: object whose records to process scheduledPaths: array defining when the flow runs (offsetNumber, offsetUnit, ","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_scheduled_job","description":"Schedules an Apex class that implements the Schedulable interface to run on a cron schedule. Use for batch processing, nightly data cleanup, report generation, or any periodic automation. The Apex class must already exist in the org. Example cron: '0 0 2 * * ?' = daily at 2 AM.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_scratch_org","description":"Creates a Salesforce scratch org using the SF CLI. Scratch orgs are temporary, configurable environments for development and testing. Requires a Dev Hub org to be authorized. definitionFile: path to project-scratch-def.json (optional, defaults to CLI default) alias: alias for the scratch org duration: number of days before expiry (1–30) devHubAlias: Dev Hub org alias","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_search_layout","description":"Creates or updates a SearchLayout for a Salesforce object, defining which fields appear in search results, lookup dialogs, and lookup filter fields. Use to customize what columns users see when they search for records or open a lookup dialog. objectName: the API name of the object, e.g. 'Account' or 'Invoice__c' searchResultsAdditionalFields: field API names to show as columns in global search res","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_territory","description":"Creates a Territory in Enterprise Territory Management (ETM). Territories define logical sales regions or account groupings. Requires ETM to be enabled in the org. territoryName: API name (DeveloperName) of the territory label: display name territoryType: DeveloperName of the Territory2Type (e.g. 'Geographic', 'Named_Account') parentTerritoryName: optional parent territory DeveloperName for hierar","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_user","description":"Creates a new Salesforce user via the REST API. Requires username (must be unique and email-like), lastName, email, and profileName. The profile must already exist. Optionally assign a role by roleApiName (DeveloperName of the UserRole). The user will receive a welcome email unless email confirmations are suppressed in org settings.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_user_role_hierarchy","description":"Creates a new UserRole in the Salesforce Role Hierarchy. Roles control record visibility — users in higher roles can see records owned by users in lower roles (depending on OWD). Optionally set a parentRoleName to place this role beneath an existing role. roleName: API name for the role (no spaces, used as DeveloperName) label: display name shown in Setup parentRoleName: API name of the parent rol","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_create_workflow_rule","description":"Creates a Workflow Rule (legacy automation) that evaluates criteria and triggers actions. Use for simple automations that don't require the power of Flows. Supports formula or criteria-based evaluation. Workflow rules can trigger field updates, email alerts, outbound messages, and tasks. objectName: object the rule applies to fullName: rule developer name triggerType: when to evaluate (onCreateOnl","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_delete_metadata","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_delete_record","description":"Deletes a single SObject record by record ID via the Salesforce REST API. The deletion is permanent and cannot be undone (the record goes to the Recycle Bin for objects that support it, from where it can be undeleted within 15 days). Provide the object API name and the 15 or 18 character record ID. For bulk deletions (100+ records), use sf_bulk_import_records with operation='delete'.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_delete_scratch_org","description":"Deletes a Salesforce scratch org by alias. This permanently removes the org and all its data. Use when finished with development or testing to free up scratch org allocations. alias: alias of the scratch org to delete noPrompt: skip the confirmation prompt (default: true)","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_deploy_metadata","description":"Deploys a set of metadata components directly to the org using the Metadata API SOAP deploy operation. Builds a package.xml and deployment zip in memory. Supports validate-only (checkOnly:true) for pre-deployment validation without making changes. Specify runTests to execute test classes during deployment (required for production). Polls until complete or timeout.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_describe_object","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_detect_devops_merge_conflict","description":"Checks a DevOps Center work item for merge conflicts. Returns the work item details and any associated merge conflict records. Use before promoting a work item to identify conflicts that need resolution. workItemId: DevOps Center work item ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_devops_create_work_item","description":"Creates a work item in Salesforce DevOps Center. Work items represent units of work (features, bug fixes, etc.) that move through pipeline stages from development to production. name: work item name/title description: optional description pipelineStageId: optional pipeline stage ID to assign to assignedToId: optional user ID to assign the work item to","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_devops_promote_work_item","description":"Promotes a DevOps Center work item to the next pipeline stage. Moving work items through the pipeline represents the progression of changes from development environments toward production. workItemId: the DevOps Center work item record ID","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_execute_anonymous_apex","description":"Executes anonymous Apex code in the Salesforce org using the Tooling API executeAnonymous endpoint. Returns compile errors, runtime exceptions, and debug log output. Use for one-off data fixes, testing Apex snippets, creating test data, running utilities, or debugging. Code runs in the context of the authenticated user.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_export_records","description":"Exports Salesforce records as CSV data using a SOQL query. Useful for data extraction, backup, or analysis. soql: the SOQL query to run (SELECT fields FROM Object WHERE ...) includeHeader: include column headers in the CSV output (default: true) maxRecords: maximum records to export (default: 50000 — use Bulk API for larger datasets) Returns the CSV content as a string. For very large exports (>50","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_freeze_user","description":"Freezes or unfreezes a Salesforce user account. A frozen user cannot log in but the license is retained (unlike deactivation). Useful for temporarily blocking access without losing data ownership. username or userId: identify the user freeze: true to freeze, false to unfreeze","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_apex_class","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_apex_trigger","description":"Reads Apex triggers via the Tooling API. Three modes: triggerName: exact name — returns the full trigger body, the object it fires on, its active status, and which events (before/after insert/update/delete/undelete) it is registered for. namePattern: a glob — lists matching triggers (* = any characters, ? = one character), e.g. 'Account*'. objectName: lists every trigger on that object, e.g. 'Acco","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_event_logs","description":"Queries EventLogFile for detailed activity logs. Event logs capture granular org activity for security monitoring and performance analysis. Common eventType values: - Login — login attempts and results - API — SOAP/REST API calls - Report — report executions - Flow — Flow runs and executions - ApexExecution — Apex code executions - LightningPageView — Lightning page views - RestApi — REST API requ","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_field_history","description":"Queries the {Object}History object to retrieve a field-level change history for a specific record. Shows what changed, when, the old and new values, and who made the change. Returns records with: date, field, oldValue, newValue, changedBy objectApiName: the SObject with history tracking enabled, e.g. 'Account', 'Opportunity', 'Case' recordId: the specific record to retrieve history for Note: Field","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_login_history","description":"Queries LoginHistory to see user login activity — who logged in, from where, and whether they succeeded. Returns records with: loginTime, username, sourceIp, browser, platform, status, loginType status values: 'Success', 'Failed', 'No Password', 'Blocked', 'No Cookie' loginType values: 'Application', 'API', 'SAML', 'OAuth', 'LightningLogin', 'Chatter' Useful for: - Security monitoring (failed logi","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_metadata_dependencies","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_record","description":"Retrieves a single Salesforce record by its 15 or 18 character record ID. Returns all or specified fields. objectApiName: the SObject API name (e.g. 'Account', 'Opportunity') recordId: the 15 or 18 character Salesforce record ID fields: optional list of field API names to return (omit for all fields)","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_get_setup_audit_trail","description":"Queries the SetupAuditTrail object to see who made what configuration changes to the org, and when. Covers the last 6 months of setup activity. Returns records with: date, username, section, action, display (human-readable description) section filter examples: 'Custom Fields', 'Profiles', 'Flows', 'Apex Classes', 'Permission Sets', 'Connected Apps', 'Users' Useful for: - Security audits (who chang","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_install_package","description":"Installs a package version into a target org using the SF CLI. Supports both managed and unlocked packages. Requires the package version ID (04t...) or an alias. packageId: package version ID (04t...) or alias targetOrg: target org alias (defaults to SF_ALIAS env var) installationKey: installation key if the package version is protected wait: minutes to wait for installation to complete","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_list_devops_projects","description":"Lists all DevOps Center projects in the org. Returns project names, IDs, and associated pipeline information. Use to discover project IDs needed for other DevOps Center operations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_list_devops_work_items","description":"Lists DevOps Center work items, optionally filtered by project or pipeline stage. Use to get an overview of work in progress. projectId: optional filter by DevOps Center project ID stageId: optional filter by pipeline stage ID limit: maximum records to return (default: 20)","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_list_objects","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_query_records","description":"Executes a SOQL query against the org and returns matching records. Provide the full SOQL string in the query param. Use for reading data, checking existing records before creating, or verifying changes. Supports aggregate queries — GROUP BY with COUNT(), SUM(), AVG(), MAX(), MIN(), e.g.: 'SELECT StageName, COUNT(Id), SUM(Amount) FROM Opportunity GROUP BY StageName' Aggregate results come back as ","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_reset_user_password","description":"Resets a Salesforce user's password by username or user ID. Sends a password-reset email to the user's email address. Use when a user is locked out or needs to set a new password. username or userId: identify the user (at least one required) sendEmail: set false to reset without sending an email (default: true)","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_resolve_devops_merge_conflict","description":"Marks a merge conflict in DevOps Center as resolved with a specified resolution strategy. Use after manually resolving conflicts in the source control system. conflictId: merge conflict record ID resolution: resolution strategy — 'ours' (keep our changes), 'theirs' (accept incoming), or 'manual' (already resolved)","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_retrieve_metadata","description":"Retrieves metadata components from the org and returns their actual file contents. Use this to read existing configuration before making changes, to back up metadata, or to check what is really deployed rather than what you think is deployed. Waits for the async retrieve to finish and unpacks the resulting zip, returning each file's path and source. Large files are truncated. Accepts 'components' ","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_run_apex_tests","description":"Runs one or more Apex test classes and returns pass/fail results with any error messages. Uses the Salesforce Tooling API runTestsAsynchronous endpoint and polls for results. Use after deploying Apex code to verify test coverage, or to run regression tests before a release.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_run_code_scanner","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_scan_apex_antipatterns","description":"Scans Apex classes in the org for common anti-patterns using the Tooling API. Detects SOQL/DML in loops, hardcoded Salesforce IDs, and debug statements left in production code. Use before deploying to catch performance and quality issues early. classNames: optional list of class names to scan (omits test classes with __Test suffix) maxClasses: maximum classes to scan (default 20, max 200)","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_search_records","description":"Searches across multiple Salesforce objects using SOSL (Salesforce Object Search Language). SOSL uses the search index and is faster than SOQL for cross-object text searches. searchTerm: the text to search for objects: array of objects to search with optional fields list, e.g. [{ objectName: 'Account', fields: ['Id', 'Name'] }, { objectName: 'Contact', fields: ['Id', 'Name', 'Email'] }] searchGrou","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_send_email","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_uninstall_package","description":"Uninstalls a second-generation package from a target org using the SF CLI. Removes all metadata delivered by the package. Use before reinstalling a broken package, or to clean up a package no longer needed. packageId: package version ID (04t...) or alias to uninstall targetOrg: target org alias (defaults to SF_ALIAS env var) wait: minutes to wait for uninstall to complete","write_action":false,"price_micros":0,"input_schema":null},{"name":"sf_update_custom_field","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_update_custom_object","description":"Updates object-level properties of an existing CUSTOM object (label, plural label, description, feature toggles, sharing model, deployment status). Only the properties you pass are changed. Fields, validation rules, record types and list views are never included in the payload, so they cannot be affected by this call. Changes are classified by risk. SAFE changes (labels, description, feature toggl","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_update_record","description":"Updates an existing SObject record by record ID via the Salesforce REST API. Provide the object API name, the 15 or 18 character record ID, and the fields to update. Only provided fields are changed — omitted fields retain their current values.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_update_user","description":"Updates an existing Salesforce user's properties via the REST API. Look up the user by username and update fields like firstName, lastName, email, title, department, phone, or isActive (to deactivate/reactivate). Only fields you provide are updated.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sf_upsert_record","description":"Creates or updates a Salesforce record using an External ID field for matching. If a record with the given external ID value exists, it is updated; otherwise a new record is created. objectApiName: the SObject API name (e.g. 'Account', 'Contact') externalIdField: the External ID field API name used for matching (e.g. 'Legacy_Id__c') externalIdValue: the value to match on fields: the field values t","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":80,"grade":"B","scanned_at":"2026-09-20T20:09:18.686Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:09:18.561Z","components":{"code":{"score":25,"max":25,"notes":["91 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 11 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"salesforce-metadata-mcp","version":"3.0.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-09-02T07:36:19.816Z","repositoryUrl":"git+https://github.com/semwalajay83-sem/salesforce-metadata-mcp.git","weeklyDownloads":204}],"repo":{"found":true,"owner":"semwalajay83-sem","repo":"salesforce-metadata-mcp","archived":false,"pushedAt":"2026-09-09T11:23:19Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/290015216?v=4","ownerCreatedAt":"2026-06-02T11:53:11Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":0,"downloadsWeek":204,"license":"MIT","lastPushAt":"2026-09-09T11:23:19.000Z","score":31}}}},"grade_history":[],"reviews":[]}