Salesforce
CRM for sales and service. Manage accounts, contacts, leads, opportunities, and cases, log activity, and query with SOQL.
| Property | Value |
|---|---|
| Slug | salesforce |
| Definition version | 0.1.0 |
| Base URL | https://your-instance.my.salesforce.com |
| Auth schemes | oauth2 |
| Action tools | 40 |
| By class | 17 read, 17 write, 6 destructive |
| Triggers | 0 |
| Provider rate limit | not declared, so outbound calls are unpaced |
Measured routing accuracy
60 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 40 cases written by hand and 20 cases from the paraphrase pass. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.
| Measure | Cases | Share |
|---|---|---|
| top-1 | 28/60 | 46.7% |
| top-8 | 51/60 | 85.0% |
The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.
Authentication
Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.
oauth2
| Property | Value |
|---|---|
| Authorization URL | https://login.salesforce.com/services/oauth2/authorize |
| Token URL | https://login.salesforce.com/services/oauth2/token |
| Default scopes | api, refresh_token |
| Refresh tokens | yes, the refresh daemon renews ahead of expiry |
Tools
40 action tools. The catalog-wide slug is salesforce.<tool>, which is what search_tools returns and call_tool takes.
salesforce.create_account
Create a new Salesforce account: a company or organization record in the CRM, distinct from an individual contact or a lead. Use when the user wants to add a business to Salesforce, not a person. Requires a name; industry, phone, website, and billing address are optional.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Account.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
AnnualRevenue | number | no | Account's annual revenue. |
BillingCity | string | no | Billing address city. |
BillingCountry | string | no | Billing address country. |
BillingState | string | no | Billing address state or province. |
Description | string | no | Free-text notes about the account. |
Industry | string | no | Industry, e.g. "Technology", "Healthcare". |
Name | string | yes | Account name. |
Phone | string | no | Account's main phone number. |
Website | string | no | Account's website, e.g. "https://acme.com". |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "add a new company to salesforce", "register a business in the crm", "put this organization into salesforce", "log a new client's company", "set up a fresh account record".
salesforce.get_account
Get one Salesforce account's full record by id: name, industry, phone, website, billing address, and revenue. Use when the user names a specific company already in Salesforce. For finding an account by name use search_accounts instead.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/Account/{{params.account_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
account_id | string | yes | Salesforce account record id (starts with "001"). |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
AnnualRevenue | number | |
BillingCity | string | |
BillingCountry | string | |
BillingState | string | |
CreatedDate | string (date-time) | |
Id | string | |
Industry | string | |
LastModifiedDate | string (date-time) | |
Name | string | |
OwnerId | string | |
Phone | string | |
Website | string |
Also retrieved by: "pull up this company's salesforce record", "show me what we have on this account", "look up an organization's details in the crm", "check a business's file in salesforce".
salesforce.update_account
Update fields on an existing Salesforce account: name, industry, phone, website, billing address, or revenue. Use when the user wants to edit or correct a company's record, not create a new one.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Account/{{params.account_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
AnnualRevenue | number | no | Account's annual revenue. |
BillingCity | string | no | Billing address city. |
BillingState | string | no | Billing address state or province. |
Industry | string | no | Industry, e.g. "Technology", "Healthcare". |
Name | string | no | Account name. |
Phone | string | no | Account's main phone number. |
Website | string | no | Account's website. |
account_id | string | yes | Salesforce account record id to edit. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "fix the industry on this company in salesforce", "change an account's phone number", "edit a business's billing address on file", "correct info on a company record".
salesforce.delete_account
Permanently delete a Salesforce account record. Use when the user wants to remove, purge, or erase a company from Salesforce entirely. This also deletes or orphans the account's related contacts and opportunities depending on the org's cascade settings. Irreversible once the recycle bin retention period passes.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/Account/{{params.account_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
account_id | string | yes | Salesforce account record id to delete. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "wipe this company from salesforce for good", "purge an account entirely", "get rid of an organization's record permanently", "erase a business from the crm".
salesforce.search_accounts
Search Salesforce accounts by name. Use when the user describes a company rather than naming a known account id, for example finding an organization before creating a contact or opportunity under it. Returns up to 25 matches via a SOQL name search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Free text to match against the account name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].Id | string | |
records[].Industry | string | |
records[].Name | string | |
records[].Phone | string | |
records[].Website | string | |
totalSize | integer |
Also retrieved by: "find a business by its name in salesforce", "look up a company account", "hunt down which organization this is", "who do we have on file matching this company name".
salesforce.create_contact
Create a new Salesforce contact: a person associated with an account, distinct from a lead that has not yet become a customer. Use when the user wants to add a person to Salesforce who already belongs to a known company. Requires a last name; email, phone, title, and the parent account are optional.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Contact.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
AccountId | string | no | Salesforce account id this contact belongs to. Find one with search_accounts. |
Department | string | no | Department the contact works in. |
Email | string | no | Contact's email address. |
FirstName | string | no | Contact's first name. |
LastName | string | yes | Contact's last name. |
Phone | string | no | Contact's phone number. |
Title | string | no | Contact's job title. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "add a new person to salesforce", "register someone tied to an existing account", "put this person's details into the crm", "log a new point of contact for a client".
salesforce.get_contact
Get one Salesforce contact's full record by id: name, email, phone, title, department, and the account they belong to. Use when the user names a specific person already in Salesforce.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/Contact/{{params.contact_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
contact_id | string | yes | Salesforce contact record id (starts with "003"). |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
AccountId | string | |
CreatedDate | string (date-time) | |
Department | string | |
Email | string | |
FirstName | string | |
Id | string | |
LastName | string | |
Phone | string | |
Title | string |
Also retrieved by: "pull up someone's salesforce profile", "look up this person in the crm", "show me what we have on this contact", "check somebody's file in salesforce".
salesforce.update_contact
Update fields on an existing Salesforce contact: name, email, phone, title, or department. Use when the user wants to edit or correct a person's record, not create a new one.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Contact/{{params.contact_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Email | string | no | Contact's email address. |
FirstName | string | no | Contact's first name. |
LastName | string | no | Contact's last name. |
Phone | string | no | Contact's phone number. |
Title | string | no | Contact's job title. |
contact_id | string | yes | Salesforce contact record id to edit. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "fix this person's phone number in salesforce", "change someone's job title on file", "edit a contact's email address", "correct details on a person's record".
salesforce.delete_contact
Permanently delete a Salesforce contact record. Use when the user wants to remove, purge, or erase a person from Salesforce entirely. This does not delete the account the contact belonged to. Irreversible once the recycle bin retention period passes.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/Contact/{{params.contact_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
contact_id | string | yes | Salesforce contact record id to delete. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "wipe this person from salesforce for good", "purge someone's contact record entirely", "get rid of this person permanently", "erase a contact from the crm".
salesforce.search_contacts
Search Salesforce contacts by name or email. Use when the user describes a person rather than naming a known contact id. Returns up to 25 matches via a SOQL name and email search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Free text to match against the contact's name or email. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].AccountId | string | |
records[].Email | string | |
records[].FirstName | string | |
records[].Id | string | |
records[].LastName | string | |
totalSize | integer |
Also retrieved by: "find someone by email in salesforce", "look up a contact by name", "who do we have on file matching this person", "hunt down a contact's record".
salesforce.create_lead
Create a new Salesforce lead: a person or company that has not yet been qualified as a customer, distinct from a contact already tied to an account. Use when the user wants to add a prospect from a form fill, a trade show, or a cold inbound inquiry. Requires a last name and a company name.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Lead.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Company | string | yes | Company the lead works for. |
Email | string | no | Lead's email address. |
FirstName | string | no | Lead's first name. |
LastName | string | yes | Lead's last name. |
LeadSource | string | no | Where the lead came from, e.g. "Web", "Trade Show", "Referral". |
Phone | string | no | Lead's phone number. |
Status | string | no | Lead status, e.g. "Open - Not Contacted", "Working", "Qualified". |
Title | string | no | Lead's job title. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "add a new prospect to salesforce", "register someone who filled out a form", "log a cold inquiry as a lead", "put a trade show contact into the pipeline".
salesforce.get_lead
Get one Salesforce lead's full record by id: name, company, email, phone, status, and source. Use when the user names a specific prospect already in Salesforce.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/Lead/{{params.lead_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
lead_id | string | yes | Salesforce lead record id (starts with "00Q"). |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
Company | string | |
Email | string | |
FirstName | string | |
Id | string | |
IsConverted | boolean | |
LastName | string | |
LeadSource | string | |
Phone | string | |
Status | string |
Also retrieved by: "pull up this prospect's salesforce record", "show me what we know about this lead", "look up a lead's details in the crm".
salesforce.update_lead
Update fields on an existing Salesforce lead: name, company, email, phone, status, or source. Use when the user wants to move a prospect through qualification, for example marking it "Working" after a first call, without converting it yet.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Lead/{{params.lead_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Company | string | no | Company the lead works for. |
Email | string | no | Lead's email address. |
LeadSource | string | no | Where the lead came from. |
Phone | string | no | Lead's phone number. |
Status | string | no | Lead status, e.g. "Working", "Qualified", "Unqualified". |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
lead_id | string | yes | Salesforce lead record id to edit. |
Also retrieved by: "mark this prospect as working", "change a lead's status in salesforce", "edit a prospect's contact details", "move a lead further along qualification".
salesforce.delete_lead
Permanently delete a Salesforce lead record. Use when the user wants to remove, purge, or erase a prospect from Salesforce entirely, for example a spam or duplicate submission. For a lead that already became a customer use convert_lead instead of deleting it. Irreversible once the recycle bin retention period passes.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/Lead/{{params.lead_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
lead_id | string | yes | Salesforce lead record id to delete. |
Also retrieved by: "wipe this prospect from salesforce for good", "purge a spam lead entirely", "get rid of a duplicate submission", "erase a lead permanently".
salesforce.convert_lead
Convert a qualified Salesforce lead into an account, a contact, and optionally an opportunity. Use when the user says a prospect is ready to become a customer or has signed. Irreversible: the lead record becomes permanently converted and stops appearing as an open lead.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/actions/standard/convertLead.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
converted_status | string | no | Lead status to record on conversion, e.g. "Closed - Converted". |
do_not_create_opportunity | boolean | no | True to skip creating an opportunity from this lead. Defaults to false, which creates one. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
lead_id | string | yes | Salesforce lead record id to convert. |
Also retrieved by: "turn this prospect into a customer", "promote a qualified lead to an account and contact", "this prospect signed, make it official in salesforce", "graduate a lead into a real opportunity".
salesforce.search_leads
Search Salesforce leads by name or company. Use when the user describes a prospect rather than naming a known lead id. Returns up to 25 matches via a SOQL name and company search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Free text to match against the lead's name or company. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].Company | string | |
records[].FirstName | string | |
records[].Id | string | |
records[].LastName | string | |
records[].Status | string | |
totalSize | integer |
Also retrieved by: "find a prospect by company name", "look up a lead in the pipeline", "hunt down a specific inquiry".
salesforce.create_opportunity
Create a new Salesforce opportunity: a deal or sale moving through a pipeline toward a close date. Use when the user wants to open, start, or log a sale, not a support case or a marketing lead. Requires a name, a pipeline stage, and an expected close date.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Opportunity.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
AccountId | string | no | Salesforce account id this opportunity belongs to. |
Amount | number | no | Deal value. |
CloseDate | string (date) | yes | Expected close date, YYYY-MM-DD. |
Description | string | no | Free-text notes about the opportunity. |
Name | string | yes | Opportunity's name, e.g. "Acme Corp - Annual Renewal". |
StageName | string | yes | Pipeline stage, e.g. "Prospecting", "Negotiation/Review", "Closed Won". |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "open a new deal in salesforce", "start tracking a potential sale", "log a piece of revenue in the pipeline", "kick off a new opportunity for this account".
salesforce.get_opportunity
Get one Salesforce opportunity's full record by id: name, stage, amount, close date, and the account it belongs to. Use when the user names a specific deal or sale.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/Opportunity/{{params.opportunity_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
opportunity_id | string | yes | Salesforce opportunity record id (starts with "006"). |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
AccountId | string | |
Amount | number | |
CloseDate | string (date) | |
Id | string | |
IsClosed | boolean | |
IsWon | boolean | |
Name | string | |
Probability | number | |
StageName | string |
Also retrieved by: "check the status of this deal", "pull up details on a sale in progress", "show me where this opportunity stands".
salesforce.update_opportunity
Update fields on an existing Salesforce opportunity: name, stage, amount, or close date. Use when the user wants to advance, reprice, or reschedule a deal, for example moving it to the next pipeline stage or marking it Closed Won.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Opportunity/{{params.opportunity_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Amount | number | no | Deal value. |
CloseDate | string (date) | no | Expected or actual close date, YYYY-MM-DD. |
Name | string | no | Opportunity's name. |
StageName | string | no | Pipeline stage to move the opportunity to. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
opportunity_id | string | yes | Salesforce opportunity record id to edit. |
Also retrieved by: "move this deal to the next stage", "reprice a sale in the pipeline", "push back the close date on this opportunity", "mark this deal as won".
salesforce.delete_opportunity
Permanently delete a Salesforce opportunity record. Use when the user wants to remove a deal from the pipeline entirely, rather than mark it Closed Lost. Irreversible once the recycle bin retention period passes.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/Opportunity/{{params.opportunity_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
opportunity_id | string | yes | Salesforce opportunity record id to delete. |
Also retrieved by: "scrap this deal for good", "remove a sale from the pipeline entirely", "wipe this opportunity from salesforce".
salesforce.search_opportunities
Search Salesforce opportunities by name. Use when the user describes a deal rather than naming a known opportunity id. Returns up to 25 matches via a SOQL name search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Free text to match against the opportunity name. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].Amount | number | |
records[].Id | string | |
records[].Name | string | |
records[].StageName | string | |
totalSize | integer |
Also retrieved by: "find a deal by name", "look up a sale in the pipeline", "hunt down a specific opportunity".
salesforce.create_case
Create a new Salesforce case: a customer service or support issue tracked against an account or contact. Use when the user wants to open, file, or log a customer support problem in Salesforce, not an engineering bug in Jira or Linear. Requires a subject.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Case.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
AccountId | string | no | Salesforce account id this case is filed against. |
ContactId | string | no | Salesforce contact id who reported the issue. |
Description | string | no | Case body describing the issue. |
Origin | string | no | Where the case came from, e.g. "Email", "Phone", "Web". |
Priority | string | no | Priority, e.g. "Low", "Medium", "High". |
Status | string | no | Case status, e.g. "New", "Working", "Closed". |
Subject | string | yes | One-line case subject. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "open a customer support case in salesforce", "file a service issue for a client", "log a complaint from a customer", "start a help desk case in the crm".
salesforce.get_case
Get one Salesforce case's full record by id: subject, description, status, priority, and the account or contact it's filed against. Use when the user names a specific support case.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/Case/{{params.case_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
case_id | string | yes | Salesforce case record id (starts with "500"). |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
AccountId | string | |
CaseNumber | string | |
ContactId | string | |
Description | string | |
Id | string | |
Origin | string | |
Priority | string | |
Status | string | |
Subject | string |
Also retrieved by: "pull up a customer's support case", "check the status of a service issue", "show me what this complaint says".
salesforce.update_case
Update fields on an existing Salesforce case: subject, description, status, or priority. Use when the user wants to move a support case forward, escalate it, or close it out.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Case/{{params.case_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Description | string | no | Case body describing the issue. |
Priority | string | no | Priority, e.g. "Low", "Medium", "High". |
Status | string | no | Case status, e.g. "Working", "Escalated", "Closed". |
Subject | string | no | One-line case subject. |
case_id | string | yes | Salesforce case record id to edit. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "move a support case to the next stage", "change the priority on a service issue", "escalate a customer complaint", "close out a support case".
salesforce.delete_case
Permanently delete a Salesforce case record. Use when the user wants to remove a support case from Salesforce entirely, for example a duplicate or a test case, rather than close it. Irreversible once the recycle bin retention period passes.
Class destructive (held by the mutation gate until the call's own arguments carry "confirm": true). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/Case/{{params.case_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
case_id | string | yes | Salesforce case record id to delete. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "remove a support case from salesforce for good", "purge a duplicate service issue", "wipe a test case entirely".
salesforce.search_cases
Search Salesforce cases by subject. Use when the user describes a customer issue rather than naming a known case number or id. Returns up to 25 matches via a SOQL subject search.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Free text to match against the case subject. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].CaseNumber | string | |
records[].Id | string | |
records[].Priority | string | |
records[].Status | string | |
records[].Subject | string | |
totalSize | integer |
Also retrieved by: "find a support case by subject", "look up a service issue", "hunt down a customer complaint".
salesforce.create_task
Create a Salesforce task: a to-do reminder for a sales or service rep, optionally linked to a record such as a contact, lead, or opportunity. Use when the user wants a follow-up reminder in Salesforce, distinct from a Jira ticket or a Linear issue. Requires a subject.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Task.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
ActivityDate | string (date) | no | Due date, YYYY-MM-DD. |
Description | string | no | Longer task detail or instructions. |
Priority | string | no | Priority, e.g. "Low", "Normal", "High". |
Subject | string | yes | One-line task title. |
WhatId | string | no | Salesforce account, opportunity, or case id this task relates to. |
WhoId | string | no | Salesforce contact or lead id this task is about. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "set a follow-up reminder in salesforce", "schedule a to-do on this account", "remind me to check back on a lead", "put a reminder on my plate for this deal".
salesforce.update_task
Update a Salesforce task's subject, due date, priority, or status. Use when the user wants to reschedule a follow-up or mark it done.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls PATCH /services/data/v59.0/sobjects/Task/{{params.task_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
ActivityDate | string (date) | no | Due date, YYYY-MM-DD. |
Priority | string | no | Priority, e.g. "Low", "Normal", "High". |
Status | string | no | Task status, e.g. "Not Started", "In Progress", "Completed". |
Subject | string | no | One-line task title. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
task_id | string | yes | Salesforce task record id to edit. |
Also retrieved by: "mark a follow-up as done", "push back a reminder's due date", "reschedule a rep's to-do".
salesforce.list_tasks
List open Salesforce tasks, most recently created first. Use for browsing a rep's outstanding to-dos rather than looking for one specific task. Returns up to 25 tasks via SOQL.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].ActivityDate | string (date) | |
records[].Id | string | |
records[].Priority | string | |
records[].Status | string | |
records[].Subject | string | |
totalSize | integer |
Also retrieved by: "show me what's on my plate today in salesforce", "what follow-ups are still open", "browse my outstanding reminders".
salesforce.create_event
Create a Salesforce calendar event: a scheduled meeting or call tied to a start and end time, optionally linked to a contact, lead, or account. Use when the user wants to book time on the calendar, not log that a call already happened (use log_call in a phone system toolkit for that). Requires a subject, start time, and end time.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Event.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Description | string | no | Meeting agenda or notes. |
EndDateTime | string (date-time) | yes | Event end time, RFC 3339. |
Location | string | no | Meeting location or video call link. |
StartDateTime | string (date-time) | yes | Event start time, RFC 3339. |
Subject | string | yes | One-line event title. |
WhatId | string | no | Salesforce account or opportunity id this event relates to. |
WhoId | string | no | Salesforce contact or lead id this event is with. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "book a meeting on the salesforce calendar", "schedule a call with this contact", "set up time with a prospect", "put a meeting on the calendar tied to this deal".
salesforce.list_events
List upcoming Salesforce calendar events, soonest first. Use for browsing what's scheduled rather than looking for one specific meeting. Returns up to 25 events via SOQL.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].EndDateTime | string (date-time) | |
records[].Id | string | |
records[].Location | string | |
records[].StartDateTime | string (date-time) | |
records[].Subject | string | |
totalSize | integer |
Also retrieved by: "what's on my calendar this week", "show me upcoming meetings in salesforce", "browse scheduled calls".
salesforce.create_note
Log a note attached to a Salesforce record: free-text commentary on an account, contact, lead, opportunity, or case. Use when the user wants to jot down context in Salesforce, not send a message. Requires a title and the record to attach it to.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/Note.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
Body | string | no | The note's text. |
ParentId | string | yes | Id of the account, contact, lead, opportunity, or case this note attaches to. |
Title | string | yes | One-line note title. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "jot down some context on this account", "leave a comment on a crm record", "save some background on this lead", "write down what happened on a call".
salesforce.attach_file
Upload a file and attach it to a Salesforce record: a contract, a screenshot, or any document tied to an account, contact, opportunity, or case. Use when the user wants to add a file to a record in Salesforce, not send it as an email attachment. Content is base64-encoded.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/ContentVersion.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
PathOnClient | string | yes | File name with extension, e.g. "contract.pdf". |
Title | string | yes | File title as it appears in Salesforce. |
VersionData | string | yes | File content, base64-encoded. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
record_id | string | yes | Id of the account, contact, opportunity, or case to attach the file to. |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "upload a contract to this record", "attach a document to this account", "add a file to this opportunity in salesforce", "drop a screenshot onto this case".
salesforce.add_contact_to_campaign
Add a Salesforce contact or lead to a marketing campaign as a campaign member. Use when the user wants to build an audience or enroll someone in a campaign, not add them to Salesforce itself.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /services/data/v59.0/sobjects/CampaignMember.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
CampaignId | string | yes | Salesforce campaign id to enroll into. |
ContactId | string | no | Salesforce contact id to add. Provide this or LeadId, not both. |
LeadId | string | no | Salesforce lead id to add. Provide this or ContactId, not both. |
Status | string | no | Campaign member status, e.g. "Sent", "Responded". |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
errors | array of string | |
id | string | |
success | boolean |
Also retrieved by: "enroll a contact in a marketing campaign", "add this lead to a campaign audience", "put someone into an email blast list".
salesforce.remove_contact_from_campaign
Remove a Salesforce contact or lead from a campaign by campaign member id, without deleting the contact, lead, or campaign itself. Use when the user wants to unenroll someone from a campaign audience.
Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls DELETE /services/data/v59.0/sobjects/CampaignMember/{{params.campaign_member_id}}.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_member_id | string | yes | Salesforce campaign member id to remove, from list_campaign_members. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Also retrieved by: "take someone off a campaign", "unenroll a contact from a marketing list", "drop a lead from a campaign audience".
salesforce.list_campaign_members
List the contacts and leads enrolled in a Salesforce campaign. Use when the user asks who is in a campaign, or before removing a member by id. Returns up to 200 members via SOQL.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
campaign_id | string | yes | Salesforce campaign id to list members of. |
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
records[].ContactId | string | |
records[].Id | string | |
records[].LeadId | string | |
records[].Status | string | |
totalSize | integer |
Also retrieved by: "who's enrolled in this campaign", "show everyone signed up for this marketing push", "browse a campaign's audience".
salesforce.run_soql_query
Run a raw SOQL query against Salesforce and return the matching records. Use for a request that names specific fields, filters, or sort order the per-object search tools don't cover, or that spans a relationship between objects. Requires SOQL syntax knowledge; prefer search_accounts, search_contacts, search_leads, search_opportunities, or search_cases for a plain-language lookup.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/query.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
query | string | yes | Full SOQL query, e.g. "SELECT Id, Name FROM Account WHERE Industry = 'Technology'". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
done | boolean | |
records | array of object | |
totalSize | integer |
Also retrieved by: "run a custom query against salesforce", "pull records with a specific filter", "write a soql query for this".
salesforce.search_records
Run a raw SOSL search across multiple Salesforce object types at once, for example finding a name that could be an account, a contact, or a lead without knowing which. Use when the user's search spans object types; for a search scoped to one kind of record use search_accounts, search_contacts, search_leads, search_opportunities, or search_cases instead. Requires SOSL syntax knowledge.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/search.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
sosl | string | yes | Full SOSL search, e.g. "FIND {Acme} IN ALL FIELDS RETURNING Account(Id, Name), Contact(Id, Name, Email)". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
searchRecords | array of object |
Also retrieved by: "search across every object for this name", "find this person or company anywhere in salesforce", "do a global search across accounts and contacts".
salesforce.describe_object
Get the field and relationship schema for a Salesforce object: which fields exist, their types, and whether they're required or picklist. Use when the user asks what fields an object has, or before building a SOQL query or a create call against a custom object this toolkit doesn't model by name.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/data/v59.0/sobjects/{{params.object_name}}/describe.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
object_name | string | yes | API name of the object, e.g. "Account", "Case", "My_Custom_Object__c". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
fields | array of object | |
fields[].label | string | |
fields[].name | string | |
fields[].nillable | boolean | |
fields[].picklistValues | array of object | |
fields[].picklistValues[].label | string | |
fields[].picklistValues[].value | string | |
fields[].type | string | |
label | string | |
name | string |
Also retrieved by: "what fields does this salesforce object have", "show me the schema for this object", "list the picklist values on this field".
salesforce.get_current_user
Get the identity of the Salesforce user this connection is authenticated as: name, email, user id, and organization id. Use when the user asks who they're logged in as, or which Salesforce org a connection points at, before running a query or making a change.
Class read (reads only). No scopes beyond the connection's defaults. Calls GET /services/oauth2/userinfo.
Arguments:
| Argument | Type | Required | Notes |
|---|---|---|---|
instance | string | yes | Salesforce instance hostname (My Domain) for the connected org, e.g. "acmecorp.my.salesforce.com". |
Result fields (the payload is trimmed to these before it reaches the model):
| Field | Type | Notes |
|---|---|---|
email | string | |
name | string | |
organization_id | string | |
preferred_username | string | |
user_id | string |
Also retrieved by: "who am i logged in as in salesforce", "what org is this connection pointed at", "show my salesforce user id".