Skip to main content
Glama
advancedcommunities

Salesforce MCP Server

bulk_delete_records

DestructiveIdempotent

Soft-delete many records with the Bulk API 2.0 (moves them to the Recycle Bin). Provide exactly one of 'ids' (max 2000 Salesforce record Ids), 'csvPath' (a CSV file on the server's machine with an 'Id' column) or 'csvContent' (raw CSV text…

Instructions

Soft-delete many records with the Bulk API 2.0 (moves them to the Recycle Bin). Provide exactly one of 'ids' (max 2000 Salesforce record Ids), 'csvPath' (a CSV file on the server's machine with an 'Id' column) or 'csvContent' (raw CSV text with an 'Id' column, for files the server cannot read). If the client can show a confirmation prompt, the user is asked and declining blocks the delete. If it cannot, pass confirm: 'DELETE ' (for example 'DELETE Account') and the user's approval of this call in the client is the remaining gate. Returns the jobId, state, processed and failed counts. Use bulk_hard_delete_records to permanently delete.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.8.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true/idempotent=true/openWorld=true, but the description adds the crucial nuance that this is a recoverable soft-delete (Recycle Bin), the client confirmation workflow and the exact confirm token format ('DELETE <sobject>'), the destructive security caveat that any readable .csv can be uploaded to the org, and the return shape (jobId, state, processed, failed). That is substantive behavior beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph, front-loaded with purpose and the input-mode constraint, then confirmation behavior, then return values, then the sibling pointer. No filler sentences; each clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still reports what is returned (jobId, state, processed, failed counts) and how async completion is handled via the wait parameter and bulk_job_status. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds the mutual-exclusion rule across the three input modes, the 2000-id cap, sobject usage (run sobject_list first), and the confirm token semantics including the example 'DELETE Account'. It does not touch wait or targetOrg, though those are documented in the nested schema, so it compensates well but not exhaustively for the top-level coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (soft-delete), the resource (many records), the mechanism (Bulk API 2.0, moves to Recycle Bin), and explicitly names the sibling it is not (bulk_hard_delete_records for permanent deletion). An agent can distinguish it from bulk_hard_delete_records and bulk_job_abort without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing conditions: provide exactly one of ids/csvPath/csvContent, use csvPath for on-disk files vs csvContent for sandboxed clients the server cannot read, and use bulk_hard_delete_records for permanent deletion. The confirmation-gating branch is also spelled out with when confirm is required vs ignored.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.