Available tools
Once connected, these tools appear in your agent’s function menu. Every tool call runs as the Run As user, so its permissions decide what each tool can reach. See use integration tools in an agent for how to add and configure them.Required permissions
The Run As user always needs API Enabled; each tool then needs the matching object permission on the user’s profile or permission sets:FAQ
Do the integration tools require contact sync?
Do the integration tools require contact sync?
Can the tools reach custom objects?
Can the tools reach custom objects?
Contact.How do I write the Query Records SOQL query?
How do I write the Query Records SOQL query?
soql. It defaults to a fixed value you write when configuring the tool, and it can include dynamic variables that Retell resolves when the tool runs:{{contact_id}} comes from an earlier Search Contact call. If a variable in the query has no value when the tool runs, Retell skips the call rather than sending the placeholder to Salesforce, and the agent sees Skipped: soql is required, so make sure the lookup that sets the variable runs first.You can also switch the input to Description mode and describe what to fetch, and the agent composes the query at call time. A fixed query is the safer default: you can test it before the first call, while a query the agent composes can name a field that doesn’t exist or get the syntax wrong mid-conversation.What does Query Records return?
What does Query Records return?
totalSize, done, and a records array in which each record carries the fields you selected plus an attributes object with the object type and record URL. Only the first batch comes back: Salesforce returns at most 2,000 rows per query call, and Retell doesn’t fetch further pages, so done is false when more rows exist.Add a LIMIT clause and name the fields you need. A voice agent rarely needs more than a handful of rows, and the whole result counts toward the 30,000-character cap on integration tool responses. SELECT FIELDS(ALL) works, but Salesforce requires it to be bounded with LIMIT 200 or less, and it pulls every field into the agent’s context.The Output tab starts empty because the fields depend on your query. Run a test to see the real result and pick the fields to save as dynamic variables.What happens when a query fails?
What happens when a query fails?
MALFORMED_QUERY for a syntax error, or INVALID_FIELD for a field that doesn’t exist or that the Run As user can’t see. Prompt the agent on what to say when a lookup doesn’t come back.Should I use Query Records or Search Contact to identify the caller?
Should I use Query Records or Search Contact to identify the caller?
WHERE Phone = '{{user_number}}' finds a Contact only when the stored value matches the caller’s number character for character, while Search Contact uses Salesforce’s search index and matches across phone formats. Use Query Records for what the dedicated tools don’t cover: the caller’s open Cases, Opportunities in a given stage, or a custom object filtered by something other than its record Id.What fields can Create Contact set?
What fields can Create Contact set?
LastName) marked required. Fields default to Description mode, so the agent fills in what the caller gave. The response is the new record’s id and a success flag; map id to a dynamic variable and pass it to Create Task, Create Note, or Update Contact later in the conversation.How is Create Contact different from the Create new contacts in CRM sync setting?
How is Create Contact different from the Create new contacts in CRM sync setting?
Why doesn't Search Contact find a Contact the agent just created?
Why doesn't Search Contact find a Contact the agent just created?
id that Create Contact returns as a dynamic variable and pass it to the tools that need it, instead of searching for the record again.How long does a Salesforce tool call get before it times out?
How long does a Salesforce tool call get before it times out?

