Update to Salesforce
Snapshot Oct 9, 2026 · 06:04 UTC · version 0.1.9
Collection source: skill API.
Instructions updated for salesforce
Instruction wording changed from “get_record_v2” to “get_record_details”. 7 additional added or edited lines are in the evidence.
Observed in instructions or declared skills. Runtime behavior has not been tested.
Skill instructions
get_record_v2 - get_records_v2 - create_record_v2 - update_record_v2 - Use `get_record_v2` for one record's fields; pass the requested field API names in `fieldNames`, or leave it empty only when no object-specific field-mapping re...
get_record_details - create_record - update_record - Use `get_record_details` for UI-oriented record displays and pass both `Compact` and `Full` layout types. - Omit empty optional parameters on `get_record_details`; `optionalFields`...
Compare saved observations
Download comparison JSONFull technical diff · 1 changed fields
changed /skill_md_contents
"---\nname: salesforce\ndescription: Safely work with Salesforce Agentforce Sales through the third-party MCP app. Use when the user asks to find, query, read, summarize, create, update, plan, assign Agentforce Lead Nurturing, inspect Salesforce objects or fields, or resolve record IDs before acting. Prefer metadata discovery over guessing, use SOQL deliberately, and write only when the user explicitly requests a Salesforce change.\nallowed-tools:\n - get_record_id_by_name\n - get_activity_history_v2\n - get_record_v2\n - get_records_v2\n - create_record_v2\n - update_record_v2\n - soql_query\n - query_calendar_events_v2\n - create_account_plan\n - get_account_plan_v2\n - query_agent_type\n - assign_target_to_sdr\n - summarize_conversation_transcript\n - get_user_info_v2\n - describe_global\n - describe_sobject\n---\n\n# Salesforce Agentforce Sales\n\nUse this as the top-level workflow for the Salesforce plugin. The Salesforce app is `salesforce` in `.app.json` and is bound to Agentforce Sales MCP app id `asdk_app_697d413990c88191a2bf4799604f8f6c`; tool access is resolved from the installed plugin connector in the user's workspace.\n\nIf Salesforce tools are not available, use the connector setup and auth recovery rules in `../../references/provider-api-rules.md` before asking the user to connect Agentforce Sales themselves. Do not satisfy Salesforce data requests from unrelated sales, support, or warehouse tools unless the user explicitly asks for that fallback.\n\nRead `../../references/provider-api-rules.md` for non-trivial metadata, relationship, high-volume, write, UI-context, account plan, call summary, or Agentforce assignment tasks.\n\n## Focused Workflows\n\n- Use [salesforce-account-brief](../salesforce-account-brief/SKILL.md) for account intelligence, meeting prep, buying committee, recent activity, cases, and opportunity-context briefs.\n- Use [salesforce-pipeline-review](../salesforce-pipeline-review/SKILL.md) for pipeline summaries, forecast review, stale deal hygiene, close-date risk, and owner or segment rollups.\n- Use [salesforce-writeback](../salesforce-writeback/SKILL.md) for explicit creates, updates, account plan creation, opportunity next-step changes, and Agentforce Lead Nurturing assignment.\n- Use [salesforce-automation](../salesforce-automation/SKILL.md) for account plans, calendar reads, call transcript summaries, and Agentforce-specific actions.\n- Use [salesforce-querying](../salesforce-querying/SKILL.md) when the hard part is SOQL construction, field filtering, record lookup, UI-aware reads, or query recovery.\n\n## Core Rules\n\n- Prefer discovery over guessing. Use `describe_global` for object matching and `describe_sobject` for field matching before non-obvious queries or writes.\n- Include `Id` in `soql_query` `SELECT` clauses whenever records may be shown or updated.\n- Use user-facing labels in final answers when known, and API names only when needed for precision or follow-up.\n- Keep result sets narrow. Select only fields needed for the task and add a reasonable `LIMIT` unless the user asked for a complete export.\n- Use `get_user_info_v2` for requests involving \"my\", \"me\", or the current Salesforce owner.\n- Use `get_record_id_by_name` when the user gives a name and the next step needs a Salesforce id.\n- Use `get_record_v2` for one record's fields; pass the requested field API names in `fieldNames`, or leave it empty only when no object-specific field-mapping resource exists, to get the default Full View.\n- Use `get_records_v2` only when the user wants a collection shown as an interactive table, never for a single named record. Verify filterable/sortable fields with `describe_sobject` first; `filterCriteria` and `sortBy` are JSON-encoded array strings. The widget is the answer; do not repeat its rows in prose.\n- Do not use aggregate or grouped SOQL through this connector. Fetch bounded ordinary records with `Id` and summarize locally instead.\n- Write only when the user explicitly asks to create, update, create an account plan, or assign a target to an Agentforce Lead Nurturing agent.\n- After any write, inspect the response and verify with returned fields, `get_record_v2`, or a narrow `soql_query` before summarizing the result.\n- Do not promise SOSL, query continuation, Bulk API, Composite API, Data 360, Tableau Analytics, Prompt Builder, upsert, delete, or custom Salesforce automation support unless those capabilities are exposed by the installed app.\n\n## Record Disambiguation\n\n- Prefer exact name or id matches before broad text matching when locating records.\n- Treat broad `LIKE '%...%'` filters as candidate discovery, not proof of the canonical record.\n- Account names can match regions, subsidiaries, brands, domains, and email-like records. Do not silently pick the first result when multiple plausible records remain.\n- Use available business context such as country, website, industry, owner, active opportunities, recent tasks, or the user's wording to disambiguate.\n- If one additional targeted filter will not clearly disambiguate the result, present the candidate records to the user before taking write actions or using the record as the basis for a deal summary.\n\n## Query And Search Routing\n\nUse `soql_query` for structured reads and filters on SOQL-filterable fields. Do not use aggregate or grouped SOQL such as `COUNT()` or `GROUP BY`; the connector expects clickable record rows. Use `INCLUDES` or `EXCLUDES` only on fields described as `multipicklist`, and do not filter on readable-but-not-filterable fields such as long text, history `OldValue` or `NewValue`, and priority/activity flags. This Agentforce Sales MCP surface does not expose SOSL; if a request requires cross-object keyword search, ask for a narrower object, field, or exact identifier instead of inventing another search tool.\n\n## Write Safety\n\n- Confirm object API name, record id, and field API names before writes.\n- For `update_record_v2`, send only changed fields in `recordData`.\n- For `create_record_v2`, send only intended create fields in `recordData`.\n- Never pass the older `fields` or `fieldsToUpdate` parameters to `create_record_v2` or `update_record_v2`; both take `recordData`.\n- Do not probe writes to discover validation rules. If Salesforce returns `FIELD_CUSTOM_VALIDATION_EXCEPTION`, surface the exact message and ask for the missing business input or corrected value.\n- Use `create_account_plan` for account plan creation instead of generic record creation.\n- Before `assign_target_to_sdr`, call `query_agent_type`, show available agents, and ask which Agentforce Lead Nurturing agent to use.\n- Stop if the user asks to delete or upsert; those operations are outside this MCP app.\n\n## Output\n\nWhen `get_activity_history_v2` or `query_calendar_events_v2` fulfills a standalone show or view request in a widget-capable conversation, rely on the rendered UI as the complete response. Do not add commentary, confirmation, summary, analysis, or repeat the rendered records.\n\nFor an explicit summary or analysis request, a composite workflow such as an account brief or pipeline review, or a Codex, non-widget, or background workflow, use the returned activity or calendar data to produce the requested textual or structured result. Include only relevant evidence rather than repeating the complete record list unless requested.\n\nReturn concise, business-facing results for other Salesforce requests. Include clickable Salesforce record links when `Id` is available:\n\n- Known object and id: `https://<your-domain>.lightning.force.com/lightning/r/<ObjectApiName>/<Id>/view`\n- Only id known: `https://<your-domain>.lightning.force.com/<Id>`\n"
"---\nname: salesforce\ndescription: Safely work with Salesforce Agentforce Sales through the third-party MCP app. Use when the user asks to find, query, read, summarize, create, update, plan, assign Agentforce Lead Nurturing, inspect Salesforce objects or fields, or resolve record IDs before acting. Prefer metadata discovery over guessing, use SOQL deliberately, and write only when the user explicitly requests a Salesforce change.\nallowed-tools:\n - get_record_id_by_name\n - get_activity_history_v2\n - get_record_details\n - create_record\n - update_record\n - soql_query\n - query_calendar_events_v2\n - create_account_plan\n - get_account_plan_v2\n - query_agent_type\n - assign_target_to_sdr\n - summarize_conversation_transcript\n - get_user_info_v2\n - describe_global\n - describe_sobject\n---\n\n# Salesforce Agentforce Sales\n\nUse this as the top-level workflow for the Salesforce plugin. The Salesforce app is `salesforce` in `.app.json` and is bound to Agentforce Sales MCP app id `asdk_app_697d413990c88191a2bf4799604f8f6c`; tool access is resolved from the installed plugin connector in the user's workspace.\n\nIf Salesforce tools are not available, use the connector setup and auth recovery rules in `../../references/provider-api-rules.md` before asking the user to connect Agentforce Sales themselves. Do not satisfy Salesforce data requests from unrelated sales, support, or warehouse tools unless the user explicitly asks for that fallback.\n\nRead `../../references/provider-api-rules.md` for non-trivial metadata, relationship, high-volume, write, UI-context, account plan, call summary, or Agentforce assignment tasks.\n\n## Focused Workflows\n\n- Use [salesforce-account-brief](../salesforce-account-brief/SKILL.md) for account intelligence, meeting prep, buying committee, recent activity, cases, and opportunity-context briefs.\n- Use [salesforce-pipeline-review](../salesforce-pipeline-review/SKILL.md) for pipeline summaries, forecast review, stale deal hygiene, close-date risk, and owner or segment rollups.\n- Use [salesforce-writeback](../salesforce-writeback/SKILL.md) for explicit creates, updates, account plan creation, opportunity next-step changes, and Agentforce Lead Nurturing assignment.\n- Use [salesforce-automation](../salesforce-automation/SKILL.md) for account plans, calendar reads, call transcript summaries, and Agentforce-specific actions.\n- Use [salesforce-querying](../salesforce-querying/SKILL.md) when the hard part is SOQL construction, field filtering, record lookup, UI-aware reads, or query recovery.\n\n## Core Rules\n\n- Prefer discovery over guessing. Use `describe_global` for object matching and `describe_sobject` for field matching before non-obvious queries or writes.\n- Include `Id` in `soql_query` `SELECT` clauses whenever records may be shown or updated.\n- Use user-facing labels in final answers when known, and API names only when needed for precision or follow-up.\n- Keep result sets narrow. Select only fields needed for the task and add a reasonable `LIMIT` unless the user asked for a complete export.\n- Use `get_user_info_v2` for requests involving \"my\", \"me\", or the current Salesforce owner.\n- Use `get_record_id_by_name` when the user gives a name and the next step needs a Salesforce id.\n- Use `get_record_details` for UI-oriented record displays and pass both `Compact` and `Full` layout types.\n- Omit empty optional parameters on `get_record_details`; `optionalFields` values must be non-empty, fully qualified names such as `Account.Name`.\n- Do not use aggregate or grouped SOQL through this connector. Fetch bounded ordinary records with `Id` and summarize locally instead.\n- Write only when the user explicitly asks to create, update, create an account plan, or assign a target to an Agentforce Lead Nurturing agent.\n- After any write, inspect the response and verify with returned fields, `get_record_details`, or a narrow `soql_query` before summarizing the result.\n- Do not promise SOSL, query continuation, Bulk API, Composite API, Data 360, Tableau Analytics, Prompt Builder, upsert, delete, or custom Salesforce automation support unless those capabilities are exposed by the installed app.\n\n## Record Disambiguation\n\n- Prefer exact name or id matches before broad text matching when locating records.\n- Treat broad `LIKE '%...%'` filters as candidate discovery, not proof of the canonical record.\n- Account names can match regions, subsidiaries, brands, domains, and email-like records. Do not silently pick the first result when multiple plausible records remain.\n- Use available business context such as country, website, industry, owner, active opportunities, recent tasks, or the user's wording to disambiguate.\n- If one additional targeted filter will not clearly disambiguate the result, present the candidate records to the user before taking write actions or using the record as the basis for a deal summary.\n\n## Query And Search Routing\n\nUse `soql_query` for structured reads and filters on SOQL-filterable fields. Do not use aggregate or grouped SOQL such as `COUNT()` or `GROUP BY`; the connector expects clickable record rows. Use `INCLUDES` or `EXCLUDES` only on fields described as `multipicklist`, and do not filter on readable-but-not-filterable fields such as long text, history `OldValue` or `NewValue`, and priority/activity flags. This Agentforce Sales MCP surface does not expose SOSL; if a request requires cross-object keyword search, ask for a narrower object, field, or exact identifier instead of inventing another search tool.\n\n## Write Safety\n\n- Confirm object API name, record id, and field API names before writes.\n- For `update_record`, send only changed fields in `fields`.\n- For `create_record`, send only intended create fields.\n- Do not probe writes to discover validation rules. If Salesforce returns `FIELD_CUSTOM_VALIDATION_EXCEPTION`, surface the exact message and ask for the missing business input or corrected value.\n- Use `create_account_plan` for account plan creation instead of generic record creation.\n- Before `assign_target_to_sdr`, call `query_agent_type`, show available agents, and ask which Agentforce Lead Nurturing agent to use.\n- Stop if the user asks to delete or upsert; those operations are outside this MCP app.\n\n## Output\n\nWhen `get_activity_history_v2` or `query_calendar_events_v2` fulfills a standalone show or view request in a widget-capable conversation, rely on the rendered UI as the complete response. Do not add commentary, confirmation, summary, analysis, or repeat the rendered records.\n\nFor an explicit summary or analysis request, a composite workflow such as an account brief or pipeline review, or a Codex, non-widget, or background workflow, use the returned activity or calendar data to produce the requested textual or structured result. Include only relevant evidence rather than repeating the complete record list unless requested.\n\nReturn concise, business-facing results for other Salesforce requests. Include clickable Salesforce record links when `Id` is available:\n\n- Known object and id: `https://<your-domain>.lightning.force.com/lightning/r/<ObjectApiName>/<Id>/view`\n- Only id known: `https://<your-domain>.lightning.force.com/<Id>`\n"
SKILL.md line diff
--- before +++ after @@ -4,10 +4,9 @@ allowed-tools: - get_record_id_by_name - get_activity_history_v2 - - get_record_v2 - - get_records_v2 - - create_record_v2 - - update_record_v2 + - get_record_details + - create_record + - update_record - soql_query - query_calendar_events_v2 - create_account_plan @@ -44,11 +43,11 @@ - Keep result sets narrow. Select only fields needed for the task and add a reasonable `LIMIT` unless the user asked for a complete export. - Use `get_user_info_v2` for requests involving "my", "me", or the current Salesforce owner. - Use `get_record_id_by_name` when the user gives a name and the next step needs a Salesforce id. -- Use `get_record_v2` for one record's fields; pass the requested field API names in `fieldNames`, or leave it empty only when no object-specific field-mapping resource exists, to get the default Full View. -- Use `get_records_v2` only when the user wants a collection shown as an interactive table, never for a single named record. Verify filterable/sortable fields with `describe_sobject` first; `filterCriteria` and `sortBy` are JSON-encoded array strings. The widget is the answer; do not repeat its rows in prose. +- Use `get_record_details` for UI-oriented record displays and pass both `Compact` and `Full` layout types. +- Omit empty optional parameters on `get_record_details`; `optionalFields` values must be non-empty, fully qualified names such as `Account.Name`. - Do not use aggregate or grouped SOQL through this connector. Fetch bounded ordinary records with `Id` and summarize locally instead. - Write only when the user explicitly asks to create, update, create an account plan, or assign a target to an Agentforce Lead Nurturing agent. -- After any write, inspect the response and verify with returned fields, `get_record_v2`, or a narrow `soql_query` before summarizing the result. +- After any write, inspect the response and verify with returned fields, `get_record_details`, or a narrow `soql_query` before summarizing the result. - Do not promise SOSL, query continuation, Bulk API, Composite API, Data 360, Tableau Analytics, Prompt Builder, upsert, delete, or custom Salesforce automation support unless those capabilities are exposed by the installed app. ## Record Disambiguation @@ -66,9 +65,8 @@ ## Write Safety - Confirm object API name, record id, and field API names before writes. -- For `update_record_v2`, send only changed fields in `recordData`. -- For `create_record_v2`, send only intended create fields in `recordData`. -- Never pass the older `fields` or `fieldsToUpdate` parameters to `create_record_v2` or `update_record_v2`; both take `recordData`. +- For `update_record`, send only changed fields in `fields`. +- For `create_record`, send only intended create fields. - Do not probe writes to discover validation rules. If Salesforce returns `FIELD_CUSTOM_VALIDATION_EXCEPTION`, surface the exact message and ask for the missing business input or corrected value. - Use `create_account_plan` for account plan creation instead of generic record creation. - Before `assign_target_to_sdr`, call `query_agent_type`, show available agents, and ask which Agentforce Lead Nurturing agent to use.
Full snapshot data
{
"description": "Safely work with Salesforce Agentforce Sales through the third-party MCP app. Use when the user asks to find, query, read, summarize, create, update, plan, assign Agentforce Lead Nurturing, inspect Salesforce objects or fields, or resolve record IDs before acting. Prefer metadata discovery over guessing, use SOQL deliberately, and write only when the user explicitly requests a Salesforce change.",
"included_files": [],
"name": "salesforce",
"skill_md_contents": "---\nname: salesforce\ndescription: Safely work with Salesforce Agentforce Sales through the third-party MCP app. Use when the user asks to find, query, read, summarize, create, update, plan, assign Agentforce Lead Nurturing, inspect Salesforce objects or fields, or resolve record IDs before acting. Prefer metadata discovery over guessing, use SOQL deliberately, and write only when the user explicitly requests a Salesforce change.\nallowed-tools:\n - get_record_id_by_name\n - get_activity_history_v2\n - get_record_details\n - create_record\n - update_record\n - soql_query\n - query_calendar_events_v2\n - create_account_plan\n - get_account_plan_v2\n - query_agent_type\n - assign_target_to_sdr\n - summarize_conversation_transcript\n - get_user_info_v2\n - describe_global\n - describe_sobject\n---\n\n# Salesforce Agentforce Sales\n\nUse this as the top-level workflow for the Salesforce plugin. The Salesforce app is `salesforce` in `.app.json` and is bound to Agentforce Sales MCP app id `asdk_app_697d413990c88191a2bf4799604f8f6c`; tool access is resolved from the installed plugin connector in the user's workspace.\n\nIf Salesforce tools are not available, use the connector setup and auth recovery rules in `../../references/provider-api-rules.md` before asking the user to connect Agentforce Sales themselves. Do not satisfy Salesforce data requests from unrelated sales, support, or warehouse tools unless the user explicitly asks for that fallback.\n\nRead `../../references/provider-api-rules.md` for non-trivial metadata, relationship, high-volume, write, UI-context, account plan, call summary, or Agentforce assignment tasks.\n\n## Focused Workflows\n\n- Use [salesforce-account-brief](../salesforce-account-brief/SKILL.md) for account intelligence, meeting prep, buying committee, recent activity, cases, and opportunity-context briefs.\n- Use [salesforce-pipeline-review](../salesforce-pipeline-review/SKILL.md) for pipeline summaries, forecast review, stale deal hygiene, close-date risk, and owner or segment rollups.\n- Use [salesforce-writeback](../salesforce-writeback/SKILL.md) for explicit creates, updates, account plan creation, opportunity next-step changes, and Agentforce Lead Nurturing assignment.\n- Use [salesforce-automation](../salesforce-automation/SKILL.md) for account plans, calendar reads, call transcript summaries, and Agentforce-specific actions.\n- Use [salesforce-querying](../salesforce-querying/SKILL.md) when the hard part is SOQL construction, field filtering, record lookup, UI-aware reads, or query recovery.\n\n## Core Rules\n\n- Prefer discovery over guessing. Use `describe_global` for object matching and `describe_sobject` for field matching before non-obvious queries or writes.\n- Include `Id` in `soql_query` `SELECT` clauses whenever records may be shown or updated.\n- Use user-facing labels in final answers when known, and API names only when needed for precision or follow-up.\n- Keep result sets narrow. Select only fields needed for the task and add a reasonable `LIMIT` unless the user asked for a complete export.\n- Use `get_user_info_v2` for requests involving \"my\", \"me\", or the current Salesforce owner.\n- Use `get_record_id_by_name` when the user gives a name and the next step needs a Salesforce id.\n- Use `get_record_details` for UI-oriented record displays and pass both `Compact` and `Full` layout types.\n- Omit empty optional parameters on `get_record_details`; `optionalFields` values must be non-empty, fully qualified names such as `Account.Name`.\n- Do not use aggregate or grouped SOQL through this connector. Fetch bounded ordinary records with `Id` and summarize locally instead.\n- Write only when the user explicitly asks to create, update, create an account plan, or assign a target to an Agentforce Lead Nurturing agent.\n- After any write, inspect the response and verify with returned fields, `get_record_details`, or a narrow `soql_query` before summarizing the result.\n- Do not promise SOSL, query continuation, Bulk API, Composite API, Data 360, Tableau Analytics, Prompt Builder, upsert, delete, or custom Salesforce automation support unless those capabilities are exposed by the installed app.\n\n## Record Disambiguation\n\n- Prefer exact name or id matches before broad text matching when locating records.\n- Treat broad `LIKE '%...%'` filters as candidate discovery, not proof of the canonical record.\n- Account names can match regions, subsidiaries, brands, domains, and email-like records. Do not silently pick the first result when multiple plausible records remain.\n- Use available business context such as country, website, industry, owner, active opportunities, recent tasks, or the user's wording to disambiguate.\n- If one additional targeted filter will not clearly disambiguate the result, present the candidate records to the user before taking write actions or using the record as the basis for a deal summary.\n\n## Query And Search Routing\n\nUse `soql_query` for structured reads and filters on SOQL-filterable fields. Do not use aggregate or grouped SOQL such as `COUNT()` or `GROUP BY`; the connector expects clickable record rows. Use `INCLUDES` or `EXCLUDES` only on fields described as `multipicklist`, and do not filter on readable-but-not-filterable fields such as long text, history `OldValue` or `NewValue`, and priority/activity flags. This Agentforce Sales MCP surface does not expose SOSL; if a request requires cross-object keyword search, ask for a narrower object, field, or exact identifier instead of inventing another search tool.\n\n## Write Safety\n\n- Confirm object API name, record id, and field API names before writes.\n- For `update_record`, send only changed fields in `fields`.\n- For `create_record`, send only intended create fields.\n- Do not probe writes to discover validation rules. If Salesforce returns `FIELD_CUSTOM_VALIDATION_EXCEPTION`, surface the exact message and ask for the missing business input or corrected value.\n- Use `create_account_plan` for account plan creation instead of generic record creation.\n- Before `assign_target_to_sdr`, call `query_agent_type`, show available agents, and ask which Agentforce Lead Nurturing agent to use.\n- Stop if the user asks to delete or upsert; those operations are outside this MCP app.\n\n## Output\n\nWhen `get_activity_history_v2` or `query_calendar_events_v2` fulfills a standalone show or view request in a widget-capable conversation, rely on the rendered UI as the complete response. Do not add commentary, confirmation, summary, analysis, or repeat the rendered records.\n\nFor an explicit summary or analysis request, a composite workflow such as an account brief or pipeline review, or a Codex, non-widget, or background workflow, use the returned activity or calendar data to produce the requested textual or structured result. Include only relevant evidence rather than repeating the complete record list unless requested.\n\nReturn concise, business-facing results for other Salesforce requests. Include clickable Salesforce record links when `Id` is available:\n\n- Known object and id: `https://<your-domain>.lightning.force.com/lightning/r/<ObjectApiName>/<Id>/view`\n- Only id known: `https://<your-domain>.lightning.force.com/<Id>`\n"
}SHA-256 of public snapshot: 1d6068fbbaf9e7960738b793d499c238feed1a5aa3a397418ef21b795bf654e9