Skip to main content
Glama

Connect Salesforce

salesforce_connect

Connect the company's own Salesforce org, which stays the source of truth: the agent queries, reads and changes its records. The company makes a connected app with the OAuth client credentials flow switched on and a run-as user whose profile limits what the agent may touch, and gives the org's My Domain and the app's consumer key. Called without secret, it answers with a link for the owner, who types the consumer secret on a Conecto page, so it never passes through the chat (from_a_terminal does the same from a terminal); account.credential_added says when it is connected. The keys are checked before anything is kept. On accounts with an owner, changing an existing record waits for the owner's approval by default. Free. Free.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "my_domain": "<my_domain>",
      "client_id": "<client_id>"
    },
    "name": "salesforce_connect"
  }
}

Input Schema

NameRequiredDescriptionDefault
secretNoThe connected app's consumer secret. Never shown again. Leave it out to get the link instead.
client_idYes
my_domainYesLike hansen-voss.my.salesforce.com.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / secret / description
      Previous value: -"The connected app's consumer secret. Never shown again."New value: +"The connected app's consumer secret. Never shown again. Leave it out to get the link instead."
    • changedInput schema / required
      Previous value: -[
      -  "my_domain",
      -  "client_id",
      -  "secret"
      -]New value: +[
      +  "my_domain",
      +  "client_id"
      +]
  2. First observed

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations: describes the two invocation modes (secret omitted returns an owner link vs. secret supplied directly), that the secret never passes through chat, that keys are validated before storage, the default owner-approval gate for changing existing records, and the account.credential_added completion signal. This is exactly the behavioral context annotations cannot express.

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

Conciseness3/5

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

The core purpose and secret-handling flow are front-loaded, but the text is dense and includes a duplicated 'Free. Free.' trailer that wastes space. Some sentences (approval workflow, key validation) are valuable but the structure reads as an info dump rather than tightly ordered guidance.

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

Completeness4/5

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

No output schema exists, yet the description covers the two return paths (link for the owner, or connection confirmed via account.credential_added) and the approval-gated mutation behavior. Adequate for a connection tool, with only minor gaps around the direct-secret response.

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?

Schema coverage is 67%, and the description compensates by explaining the pivotal secret behavior (leave it out to get a link) and the My Domain format implicitly. client_id remains undocumented in both places, which keeps it from a 5, but the description adds real meaning over the schema for the parameters that matter most.

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 (connect) and a precisely scoped resource (the company's own Salesforce org) and immediately clarifies what the connection enables (agent queries/reads/changes records). It is unambiguously distinct from salesforce_query/get/create/update siblings, which all depend on this connection existing.

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

Usage Guidelines4/5

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

Provides the prerequisite context needed to invoke it (a connected app with OAuth client-credentials flow, a run-as user, My Domain, consumer key) and names the from_a_terminal alternative for the terminal path. It does not explicitly state when-not to use it versus those siblings, keeping it just below a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources