<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet title="XSL_formatting" type="text/xsl" href="https://developer.salesforce.com/blogs/wp-content/themes/dfctheme/includes/feed_styles.xsl" ?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:rawvoice="https://blubrry.com/developer/rawvoice-rss/"
xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:dscblog="https://developer.salesforce.com/blog/dscblog/"
>


<channel>
	<title>Salesforce Developers Blog</title>
	<atom:link href="https://developer.salesforce.com/blogs/feed" rel="self" type="application/rss+xml" />
	<link>https://developer.salesforce.com/blogs</link>
	<description>Elevating developer skills and connecting with the Salesforce Developers community</description>
	<lastBuildDate>Wed, 29 Jul 2026 23:22:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel="hub" href="https://pubsubhubbub.appspot.com/" />
	<itunes:author>Salesforce Developers Blog</itunes:author>
	<itunes:explicit>false</itunes:explicit>
	<itunes:image href="https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/itunes_default.jpg" />
	<itunes:owner>
		<itunes:name>Salesforce Developers Blog</itunes:name>
	</itunes:owner>
	<podcast:medium>podcast</podcast:medium>
	<image>
		<title>Salesforce Developers Blog</title>
		<url>https://developer.salesforce.com/blogs/wp-content/plugins/powerpress/rss_default.jpg</url>
		<link>https://developer.salesforce.com/blogs</link>
	</image>
	<podcast:podping usesPodping="true" />
<site xmlns="com-wordpress:feed-additions:1">244780846</site>	<item>
		<title>Build Smarter with Metadata API Context Skills</title>
		<link>https://developer.salesforce.com/blogs/2026/07/build-smarter-with-metadata-api-context-skills</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/build-smarter-with-metadata-api-context-skills#respond</comments>
		<pubDate>Thu, 30 Jul 2026 15:00:12 +0000</pubDate>
		<dc:creator><![CDATA[Neha Ahlawat]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Flow]]></category>
		<category><![CDATA[Deployment Errors]]></category>
		<category><![CDATA[Developer Workflow]]></category>
		<category><![CDATA[Flow Metadata]]></category>
		<category><![CDATA[Metadata API]]></category>
		<category><![CDATA[Salesforce Skills]]></category>
		<category><![CDATA[Token Optimization]]></category>
		<category><![CDATA[XML Structures]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206793</guid>
		<description><![CDATA[<p>Ground your AI assistant with Metadata API context. Learn how the Metadata API Context Skill helps generate valid Salesforce metadata and reduce deployment errors.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-smarter-with-metadata-api-context-skills">Build Smarter with Metadata API Context Skills</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Without deep Salesforce metadata context, AI tools hallucinate and can generate invalid XML that turns promised speed gains into hours of tedious deployment debugging. In this post, you’ll learn how to ground your AI agent by embedding the new </span><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-metadata-api-context-get"><span style="font-weight: 400">Metadata API Context Skill</span></a><span style="font-weight: 400"> directly into your development workflow with a section-specific consumption model optimized for token efficiency, allowing you to deploy safely and without errors on the first try — without ever leaving your IDE.</span></p>
<h2><b>The expertise problem</b></h2>
<p>Imagine that you are using an AI coding agent to accelerate app development, or maybe you&#8217;re deep in the zone writing the configuration yourself. You prompt your agent to scaffold a new feature. But because general LLMs lack precise, version-specific knowledge of the massive Salesforce ecosystem, the agent hallucinates. It generates a complex metadata XML file based on its best understanding of Salesforce metadata and mixes up <code>sharingModel</code> with <code>sharingType</code>, guessing whether <code>deploymentStatus</code> is required, or fabricating non-existent values for <code>visibility</code>.</p>
<p><span style="font-weight: 400">Suddenly, the AI advantage evaporates. You are stuck digging through a massive amount of documentation to correct its hallucinations, hunting for valid XML examples in legacy projects, or trial-and-erroring your way through failed deployment logs. An AI agent without deep, platform-specific context can quickly become a high-speed hallucination engine, and you&#8217;re the one stuck cleaning up the deployment errors.</span></p>
<p><span style="font-weight: 400">What if your AI assistant could instantly access complete, authoritative documentation for hundreds of Salesforce metadata types right within your development workflow? That&#8217;s exactly what the Metadata API Context Skill delivers.</span></p>
<h2><b>Introducing the Metadata API Context Skill</b></h2>
<p><a href="https://developer.salesforce.com/docs/platform/agentforcevibes/guide/afv-skills.html"><u>Salesforce Skills</u></a> are specialized AI capabilities that ground Agentforce Vibes and other third-party AI development tools with deep, domain-specific knowledge. Available as <code>sf-skills</code><span> (see </span><a href="https://github.com/forcedotcom/sf-skills/blob/main/README.md"><u>docs</u></a><span>),</span><span> these open-source skills are pre-loaded in Agentforce Vibes, but can be installed in any third-party AI tool. Think of them as expert consultants embedded directly into your IDE. While general AI models have broad knowledge, they often lack the precision and depth needed for complex enterprise platforms like Salesforce.</span></p>
<p>The Metadata API Context<b> </b>Skill,<span> </span><code>platform-metadata-api-context-get</code><span>, (see</span><code> </code><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-metadata-api-context-get"><u>docs</u></a><span>)</span><code> </code>transforms how developers work with Salesforce metadata by providing instant access to comprehensive metadata type documentation, including field definitions, XML structures, WSDL schemas, and real-world examples.</p>
<p><a href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_intro.htm"><u>Salesforce Metadata API</u></a> is massive, which includes hundreds of <a href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_types_list.htm"><u>metadata types</u></a> ranging from familiar types like <code>CustomObject</code> and <code>ApexClass</code> to specialized types like <code>AIApplicationConfig</code> and <code>ExplainabilityActionDefinition</code>. Each type has a distinct set of strict field definitions, XML structures, namespace requirements, naming conventions, SFDX locations, and complex relationships.</p>
<p><span style="font-weight: 400">Manually searching the </span><a href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/file_based.htm"><span style="font-weight: 400">Metadata API Developer Guide</span></a><span style="font-weight: 400"> for these types can break a developer’s flow and kill productivity for both humans and agents, as finding accurate examples and identifying required fields often involves trial-and-error through failed deployments.</span></p>
<h2><b>Real-world use case: Building a record-triggered flow</b></h2>
<p><span style="font-weight: 400">Flow metadata is one of the most complex structures in the Salesforce Metadata API. With 40+ node types, nested XML hierarchies, and intricate connector logic, even experienced developers typically build flows in the UI and reverse-engineer the generated XML, sacrificing version control clarity and code review capability. Using a real use case, let’s understand how the Metadata API Context Skill can elevate AI-based development for successful deployments in first-attempt. </span></p>
<p>Let&#8217;s build a case-escalation flow that automatically escalates high-priority support cases and generates email alerts for it. Before you begin implementation, you want to understand the structure of Flow metadata, particularly its fields. The structured JSON resource returned as a response is divided into distinct segments like field definitions and XML structures: the <code>fields</code> segment for precise parameter definitions, the <code>description</code> section to grasp core functionality, <code>declarative_metadata_sample_definition</code> for ready-to-deploy XML patterns, and so on. Most developer workflows utilize one or more sections at a time. This sectional approach to data retrieval effectively reduces token overhead by 60-80% for every file processed.</p>
<p><span style="font-weight: 400">You can ask your AI assistant:</span></p>
<p><span style="font-weight: 400">&#8220;</span><i><span style="font-weight: 400">Show me the fields section for Flow metadata. I need a record-triggered flow on the Case object.</span></i><span style="font-weight: 400">&#8221; </span></p>
<p><span style="font-weight: 400">The skill loads just the fields section for Flow metadata, showing you all available fields with their types and descriptions. </span></p>
<p><span style="font-weight: 400">Furthermore, you can leverage it to help build a decision logic for the flow with a sample prompt like this:</span></p>
<p><span style="font-weight: 400">&#8220;</span><i><span style="font-weight: 400">Generate the decision node for a record-triggered flow </span></i><i><span style="font-weight: 400">that evaluates whether the case qualifies for escalation (Priority = High/Critical, unassigned for 2+ hours, Enterprise/Strategic account tier). If it is a high priority case, it assigns qualifying cases to an Escalation Specialist queue.</span></i><span style="font-weight: 400">&#8220;</span></p>
<p>The skill instantly loads the <span>declarative_metadata_sample_definition</span><span> section, providing a complete, valid example with the proper XML declaration and namespace.</span></p>
<pre class="wp-block-code language-xml">&lt;decisions&gt;
    &lt;name&gt;DecisionEscalationCriteria&lt;/name&gt;
    &lt;label&gt;Evaluate Escalation Criteria&lt;/label&gt;
    &lt;locationX&gt;176&lt;/locationX&gt;
    &lt;locationY&gt;350&lt;/locationY&gt;
    &lt;defaultConnector&gt;
        &lt;targetReference&gt;SendOwnerReminder&lt;/targetReference&gt;
    &lt;/defaultConnector&gt;
    &lt;rules&gt;
        &lt;name&gt;QualifiesForEscalation&lt;/name&gt;
        &lt;conditionLogic&gt;1 AND 2 AND 3 AND 4&lt;/conditionLogic&gt;
        &lt;conditions&gt;
            &lt;leftValueReference&gt;$Record.Priority&lt;/leftValueReference&gt;
            &lt;operator&gt;In&lt;/operator&gt;
            &lt;rightValue&gt;
                &lt;stringValue&gt;High&lt;/stringValue&gt;
            &lt;/rightValue&gt;
            &lt;rightValue&gt;
                &lt;stringValue&gt;Critical&lt;/stringValue&gt;
            &lt;/rightValue&gt;
        &lt;/conditions&gt;
        &lt;conditions&gt;
            &lt;leftValueReference&gt;$Record.OwnerId&lt;/leftValueReference&gt;
            &lt;operator&gt;IsNull&lt;/operator&gt;
        &lt;/conditions&gt;
        &lt;!-- Additional conditions for case age and account tier --&gt;
        &lt;connector&gt;
            &lt;targetReference&gt;AssignToQueue&lt;/targetReference&gt;
        &lt;/connector&gt;
    &lt;/rules&gt;
&lt;/decisions&gt;</pre>
<p><span style="font-weight: 400">Lastly, you can ask your agent to create email alerts as well for the same flow by using the following prompt:</span></p>
<p><span style="font-weight: 400">“</span><i><span style="font-weight: 400">Add a flow section to generate email alerts using the Action Call node.</span></i><span style="font-weight: 400">”</span></p>
<p><span style="font-weight: 400">Your AI assistant can now help you create the complete metadata file with confidence, </span><span style="font-weight: 400">with proper trigger configuration, decision logic, record updates, task creation, and email alerts.</span></p>
<p><span style="font-weight: 400">These capabilities extend far beyond generating metadata from scratch. They also help you analyze and refactor existing configurations and streamline how you audit and modify legacy metadata. Imagine pulling an unfamiliar flow from your Git repository. Instead of wasting time deploying it to a sandbox to view it in Flow Builder, you can ask your AI agent directly from your IDE to explain how it works, help you modify it, and finalize changes before you ever push a deployment.</span></p>
<h2><b>This skill gives your agent the edge it needs</b></h2>
<p>The Metadata API Context Skill provides on-demand, structured access to complete metadata type documentation without leaving your development environment. Here&#8217;s what makes it powerful:</p>
<ul>
<li><b>Comprehensive coverage</b>: Every metadata type is documented with field definitions, description, XML examples, WSDL segments for validation, file information and documentation for nested complex types.</li>
<li><b>Intelligent token optimization</b>: One of the skill&#8217;s most innovative features is its section-specific consumption model. The skill is designed to load only the specific sections you need,<span> which</span><span> makes it highly efficient even when working with multiple metadata types in a single conversation.</span></li>
<li><b>Smart disambiguation</b>: Using contextual keywords, the skill intelligently distinguishes between different API contexts. For example, <code>ApexClass</code> exists in Metadata API (for deployment), Enterprise API (for querying), and Tooling API (for debugging). The skill can accurately determine exactly which one you need.</li>
</ul>
<p><span style="font-weight: 400">This skill represents a shift in how we think about developer tools. Instead of treating documentation as a separate resource one context-switches to, it becomes grounded knowledge available exactly when and where a developer needs it. For teams, this translates directly to faster onboarding, fewer deployment errors, and more consistent metadata patterns across your codebase.</span></p>
<h2><b>Best practices and performance tips</b></h2>
<p><span style="font-weight: 400">To get the most from this skill and keep token consumption low:</span></p>
<ul>
<li style="font-weight: 400"><b>Be specific: </b><span style="font-weight: 400">Ask for the &#8220;fields” section or &#8220;example structure&#8221; rather than generic queries.</span></li>
<li style="font-weight: 400"><b>Load only what you need:</b><span style="font-weight: 400"> Request specific sections (e.g., </span><i><span style="font-weight: 400">&#8220;Load fields and description from Flow&#8221;</span></i><span style="font-weight: 400">) to optimize token usage. Avoid broad prompts like </span><i><span style="font-weight: 400">&#8220;Load Salesforce Metadata Types documentation&#8221;</span></i><span style="font-weight: 400"> as it causes unnecessary token overhead.</span></li>
<li style="font-weight: 400"><b>Reference the index:</b><span style="font-weight: 400"> If you&#8217;re not sure of the exact metadata type name, ask for a list of metadata types available in the </span><a href="https://github.com/forcedotcom/sf-skills/blob/main/skills/platform-metadata-api-context-get/references/metadata_index_table.md"><span style="font-weight: 400">metadata index</span></a><span style="font-weight: 400">.</span></li>
</ul>
<h2><b>Start building smarter today</b></h2>
<p>The<code> platform-metadata-api-context-get</code><code> </code>skill is available now as an open-source resource for the Salesforce Developer community in the <a href="https://github.com/forcedotcom/sf-skills/blob/main/README.md"><u>Salesforce Skills</u></a> repository. Whether you&#8217;re building custom objects, deploying complex automations, or maintaining enterprise-scale applications, this skill can transform your development workflow.</p>
<p><span style="font-weight: 400">These skills are pre-loaded in Agentforce Vibes and can be installed in any third-party AI tool.</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Ensure the skill directory is in your third-party AI tool’s skills path</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">The skill auto-loads when you work with metadata-related queries</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">No additional configuration is required</span></li>
</ul>
<p><span style="font-weight: 400">Stop context-switching. Stop guessing at field names. Stop trial-and-error deployments. And start building with confidence, backed by comprehensive metadata documentation right at your fingertips.</span></p>
<p><span style="font-weight: 400">Have questions or feedback about Salesforce Skills? Join the conversation in the </span><a href="https://trailhead.salesforce.com/trailblazer-community/groups/0F93A000000DJbJSAW?tab=discussion&amp;sort=LAST_MODIFIED_DATE_DESC"><span style="font-weight: 400">Salesforce Developer Community</span></a><span style="font-weight: 400"> or contribute to the </span><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills"><span style="font-weight: 400">open-source project on GitHub</span></a><span style="font-weight: 400">.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Get started:</span><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills/platform-metadata-api-context-get"> <span style="font-weight: 400">Metadata API Context Get Skill on GitHub</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Explore more Salesforce Skills:</span><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills"> <span style="font-weight: 400">Salesforce Skills Repository</span></a></li>
</ul>
<h2><b>About the author</b></h2>
<p><b>Neha Ahlawat </b><span style="font-weight: 400">is a Product Management Director at Salesforce focused on Metadata API and its frameworks, source tracking, and metadata coverage.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-smarter-with-metadata-api-context-skills">Build Smarter with Metadata API Context Skills</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/build-smarter-with-metadata-api-context-skills/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206793</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260729160506/Generic-A-6-e1785366322450.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260729160506/Generic-A-6-e1785366322450.png?w=1000" medium="image" />
	</item>
		<item>
		<title>エージェント型AI時代におけるSalesforce開発者の未来</title>
		<link>https://developer.salesforce.com/blogs/2026/07/future-salesforce-developer-agentic-ai-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/future-salesforce-developer-agentic-ai-jp#respond</comments>
		<pubDate>Wed, 29 Jul 2026 06:58:33 +0000</pubDate>
		<dc:creator><![CDATA[René Winkelmeyer]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Agentforce Vibes]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Professional Development]]></category>
		<category><![CDATA[Trust, Security, and Accessibility]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[developer tooling]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206782</guid>
		<description><![CDATA[<p>AI&#12399;Salesforce&#38283;&#30330;&#32773;&#12395;&#21462;&#12387;&#12390;&#20195;&#12431;&#12427;&#12398;&#12363;&#65311;&#27491;&#30906;&#12395;&#12399;&#12381;&#12358;&#12391;&#12399;&#12354;&#12426;&#12414;&#12379;&#12435;&#12290;&#12471;&#12473;&#12486;&#12512;&#35373;&#35336;&#12289;&#21697;&#36074;&#12289;&#12463;&#12525;&#12473;&#12471;&#12473;&#12486;&#12512;&#24605;&#32771;&#12434;&#20013;&#24515;&#12395;&#12289;&#12381;&#12398;&#24441;&#21106;&#12364;&#12393;&#12398;&#12424;&#12358;&#12395;&#20877;&#23450;&#32681;&#12373;&#12428;&#12388;&#12388;&#12354;&#12427;&#12363;&#12434;&#35299;&#35500;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/future-salesforce-developer-agentic-ai-jp">エージェント型AI時代におけるSalesforce開発者の未来</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<blockquote><p>※本記事は2026年3月10日に米国で公開された <a href="https://developer.salesforce.com/blogs/2026/03/future-salesforce-developer-agentic-ai">The Future of the Salesforce Developer in the Agentic AI Era</a>の抄訳です。本記事の正式言語は英語であり、その内容および解釈については英語が優先されます。</p></blockquote>
<p><b>この記事のポイント</b></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">AIは、Salesforce開発者の役割に取って代わるものではない。AIの登場によって、開発者の役割は</span><b>システム設計</b><span style="font-weight: 400">、</span><b>品質エンジニアリング</b><span style="font-weight: 400">、</span><b>システム横断的な思考</b><span style="font-weight: 400">という、より価値の高い3つの能力を発揮することに変わりつつある。</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">AIを活用した開発ツールを導入すると、開発スピードはすぐには上がらず、最初はむしろ遅くなる。AI投資の意義は、単にツールを追加することではなく、ワークフローを再設計することにある。</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Salesforce開発の多くは、既存の環境に手を入れるブラウンフィールド開発で、意思決定の大半が文書化されていない、複雑なSalesforce組織を引き継ぐことになる。AIだけで、こうした組織固有の背景に対応することはできない。</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">2026年以降、Salesforce開発者のキャリアで評価される能力は、コードを速く書けることではなく、プラットフォームに関する深い知識と幅広いアーキテクチャーに関する判断力を兼ね備えていること。</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">勤め先がAIツールを導入しているかどうかにかかわらず、現在、最も重要であるスキルは、今日から身に付けていくことができる。</span></li>
</ul>
<p><span style="font-weight: 400">AI活用による開発を取り入れると、初めのうちはかえってスピードが鈍ることがあります。</span></p>
<p><span style="font-weight: 400">これは、ツールに問題があるからでも、取り組み方が間違っているからでもありません。AIツールを導入したSalesforce開発チームに共通して見られるのが、</span><a href="https://www.weforum.org/stories/2025/12/ai-paradoxes-in-2026"><span style="font-weight: 400">J字型のカーブ</span></a><span style="font-weight: 400">（英語）です。AIを効果的に利用するには、タスクそのもの、つまりワークフロー、チームのプロセス、ソフトウェアの開発方法を見直す必要があります。こうした新手法では、開発を加速できるようになる前に、新たな種類のエラーが発生しがちです。</span></p>
<p><span style="font-weight: 400">移行期の問題を解決しないまま突き進むと、よくない結果に行きつきます。質の低いコードがコードベースに大量に入り込むのではないかという懸念が生まれ、AIで本当に成果を向上できるのか、それとも開発者の生産性が向上したように見えるだけなのかという不安が広がります。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206785" >
			    <img fetchpriority="high" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260728235858/image2_J.jpeg?w=880" class="postimages" width="880" height="480" alt="" />
			  </span>
			</p>
<p><span style="font-weight: 400">そう感じるのはもっともですが、それだけでは全体像が見えてきません。ここでは、Salesforce開発者の役割にどのような変化が起きているのかを、これまでの経緯、AIがもたらす変化、今後のキャリアパスという観点から見ていきます。</span></p>
<h2><span style="font-weight: 400">変化するSalesforce開発者の役割</span></h2>
<p><span style="font-weight: 400">Salesforceプラットフォームの歴史において、開発者の価値は明白でした。宣言型では実現できないことを実装するのが、開発者の役割だったのです。</span><a href="https://help.salesforce.com/s/articleView?id=platform.automate_with_salesforce_flow.htm&amp;type=5"><span style="font-weight: 400">Flow</span></a><span style="font-weight: 400">だけでは不十分なとき、数式が限界に達したとき、あるいはビジネス要件が設定の範囲を越えたときには、開発者が</span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/"><span style="font-weight: 400">Apex</span></a><span style="font-weight: 400">を記述しました。</span><a href="https://developer.salesforce.com/docs/platform/lwc/guide"><span style="font-weight: 400">Lightning Webコンポーネント</span></a><span style="font-weight: 400">を構築し、連携を設計し、コードでプラットフォームを拡張しました。</span></p>
<p><span style="font-weight: 400">開発者に求められる主なスキルは、実装力でした。開発者は、要件を受け取り、実際に機能するソリューションを作成していました。その過程で、</span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm"><span style="font-weight: 400">ガバナ制限</span></a><span style="font-weight: 400">、</span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_triggers_bestpract.htm"><span style="font-weight: 400">一括処理化</span></a><span style="font-weight: 400">パターン、トリガーの実行順序、マルチテナントアーキテクチャーの細かな特性に対処していました。優れた開発者は、Salesforceに関する深い知識を持っていました。プラットフォームの制約を理解しているだけでなく、その制約の中で効果的に開発する方法も熟知していました。</span></p>
<p><span style="font-weight: 400">そうした時代が終わるわけではありませんが、流れは変わりつつあります。実装力は今も重要ですが、もう開発者の中心的な価値ではありません。</span><span style="font-weight: 400">開発者の価値は、システム設計、品質エンジニアリング、システム横断的な思考力へと移っています。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206786" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260728235918/image3_J.jpeg?w=880" class="postimages" width="880" height="480" alt="" />
			  </span>
			</p>
<p><span style="font-weight: 400">今起きている変化は、AIがコードを書くようになったことだけではありません。それは目に見える部分にすぎず、重要なのは、これまで見えなかった本質的な課題が浮き彫りになることです。 </span></p>
<p><b>AIは、Salesforce開発者に取って代わるのでしょうか？</b><span style="font-weight: 400">いいえ。AIが担うようになっているのは、業務の一部、とりわけ最初のコード案の生成です。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400">Salesforce開発者の仕事全体がAIに置き換わっているわけではありません。むしろ、システム設計、品質検証、システム横断的な思考といった、今後も必要とされるスキルの需要は高まっています。開発者の役割がなくなるのではなく、再定義されているのです。</span></p>
<p><span style="font-weight: 400">AIによって、ボトルネックが変わりました。何十年もの間、最も困難な作業は実装でした。作るべきものは明確でしたが、問題は、それをコードとして形にすることでした。今、実装には時間もコストもかかりません。</span><a href="https://developer.salesforce.com/docs/platform/einstein-for-devs/guide/einstein-overview"><span style="font-weight: 400">Agentforce Vibes</span></a><span style="font-weight: 400">（英語）、Claude Code、</span><a href="https://developer.salesforce.com/docs/platform/sfvscode-extensions/overview"><span style="font-weight: 400">Salesforce Extensions</span></a><span style="font-weight: 400">（英語）と組み合わせたCursorといったAIコーディングアシスタントを使えば、Apexクラスの生成、Lightning Webコンポーネントのひな型作成、テストスイートのドラフト、連携処理の骨組みの作成が数秒で完了します。品質にはばらつきがありますが、生成のスピードは一貫しています。</span></p>
<p><span style="font-weight: 400">AIがコードを生成するようになって明らかになったのは、本当のボトルネックはシステム設計だったということです。何を作るのか、なぜそのように作るのか、それをシステム全体にどのように組み込むのかを理解することが課題だったのです。実装に時間がかかっていたときは、この課題は表面化していませんでした。コードの記述に費やしていた時間は、思考のための時間でもありました。コードを書きながらエッジケースを発見し、アプローチを見直し、複雑さを理解していたのです。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></p>
<p><span style="font-weight: 400">AIによって実装にかかる時間がほぼゼロまで短縮されると、これまで自然に確保されていた、思考のための時間がなくなります。その分、設計や分析に意識して時間をかけないと、リリースは速くなっても、理解は浅くなってしまいます。ここから問題が生じるのです。</span></p>
<p><span style="font-weight: 400">AIはただのコード生成ツールではありません。開発者にとって、AIはこれまでにないほど強力な学習ツールです。馴染みのないコードベースについて質問し、プラットフォームの挙動をリアルタイムで調べ、設計上の判断について即座にフィードバックを得ることができます。AIによって、生産性の効率だけではなく、学習の効果も変わります。ここが重要なポイントです。学習ツールとしてのAIについては、後ほど取り上げます。</span></p>
<h2><span style="font-weight: 400">既存のSalesforce組織がAIにとって最大の課題である理由</span></h2>
<p><span style="font-weight: 400">もう1つ、AIのデモでは見落としがちな現実があります。世界のソフトウェアの大半は、ゼロから構築されるものではありません。デモでは、白紙の状態から数分で新しいアプリが構築されます。しかし、多くのSalesforce開発者が毎日向き合っているのは、既存のSalesforce組織です。こうした組織には、何百ものカスタムオブジェクトが存在します。複数のリリースにわたって構築された、自動化のレイヤーが積み重なっています。複数の管理パッケージが相互に作用していますが、誰も全体像を完全には把握していません。構築した人物が退職した後も、文書化されないまま設定に残っているビジネスロジックもあります。</span></p>
<p><span style="font-weight: 400">これがブラウンフィールド開発です。Salesforce開発の大多数は、こうした環境で行われています。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206787" >
			    <img decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260728235934/image4_J.jpeg?w=880" class="postimages" width="880" height="480" alt="" />
			  </span>
			</p>
<p><span style="font-weight: 400"></span><a href="https://www.salesforce.com/news/stories/ai-jobs-revenue/"><span style="font-weight: 400">Salesforceのエコシステム</span></a><span style="font-weight: 400">では、数百万人の開発者が、長年にわたって進化してきたさまざまなSalesforce組織で開発に携わっています。こうした環境では、システム自体が仕様です。コード、メタデータ、属人的な知識、これまでSalesforce組織に関わったすべての人の判断の中に、仕様が蓄積されています。AIは、構造的なレイヤーの分析には長けています。しかし、その背後にある「なぜ」には到達できません。なぜそのデータモデルが選ばれたのか、特定の顧客層に対応するためにどのようなトレードオフが行われたのか、どのような制約がアーキテクチャーを形作ったのかといった理由です。そうしたコンテキストは、コードの中ではなく、人の頭の中にあるからです。</span><i><span style="font-weight: 400"></span></i><span style="font-weight: 400"></span></p>
<p><b>ブラウンフィールド環境でAI活用による開発を実践するためのフレームワーク</b></p>
<ol>
<li style="font-weight: 400"><b>構築する前に全体像を把握する。</b><span style="font-weight: 400">既存のSalesforce組織でAIを使ってコードを生成する前に、現在のアーキテクチャーを理解しましょう。トリガーの実行順序、自動化の依存関係、共有ルール、インテグレーションの境界を確認してください。</span></li>
<li style="font-weight: 400"><b>暗黙の前提を明文化する。</b><span style="font-weight: 400">現在のデータモデルの背後にあるトレードオフ、特定の設計パターンが存在する理由、大規模運用でのみ表面化するガバナ制限のリスクを文書化します。</span></li>
<li style="font-weight: 400"><b>コンテキストを入力情報として扱う。</b><span style="font-weight: 400">AIツールに与えるシステムのコンテキストが多いほど、出力の質が向上します。Salesforce組織の実際のアーキテクチャーにもとづいたプロンプトなら、そのままリリースできる成果物が得られます。汎用的なプロンプトからは、作り直しが必要な成果物しか生まれません。</span></li>
</ol>
<p><b>例</b><span style="font-weight: 400"> – AIアシスタントに、取引先の更新後に実行され、子レコードである取引先責任者を照会してステータス項目を同期するトリガーを生成させるとします。コードがコンパイルされ、テストをパスします。しかし、取引先にはすでに2つのトリガーが設定されています。1つはテリトリーの割り当てを再計算するトリガーで、もう1つは外部ERPにプラットフォームイベントを発行するトリガーです。3つのトリガーを合わせると、データの一括ロード時に、SOQLクエリーのガバナ制限である100回を超過します。AIは、既存のトリガー、実行順序、累積クエリー数を把握していませんでした。システムの背景情報を理解している開発者であれば、デプロイ前にこの問題に気づけたはずです。システム設計の有無が、こうした違いを生みます。</span></p>
<h2><span style="font-weight: 400">これからのSalesforce開発者にとって最も重要なスキル</span></h2>
<table>
<thead>
<tr>
<th><b>スキル</b></th>
<th><b>スキルの内容</b></th>
<th><b>AI活用にこのスキルが重要な理由</b></th>
<th><b>まず行うべきこと</b></th>
</tr>
</thead>
<tbody>
<tr>
<td><b>システム設計</b></td>
<td><span style="font-weight: 400">既存のシステムを理解し、アーキテクチャーの境界を定義したうえで、AIが従うガードレールを構築する</span></td>
<td><span style="font-weight: 400">AIによって実装時間がほぼゼロに短縮されることで、設計こそが本当のボトルネックであり、価値でもあることが浮き彫りになっている</span></td>
<td><span style="font-weight: 400">トリガーの実行順序、自動化の依存関係、インテグレーションの境界、文書化されていないトレードオフを洗い出し、Salesforce組織の現在のアーキテクチャーを可視化する</span></td>
</tr>
<tr>
<td><b>品質エンジニアリング</b></td>
<td><span style="font-weight: 400">AIが生成した</span><span style="font-weight: 400">すべての成果物をドラフトとして扱い、コードがコンパイルできるかだけでなく、システムに適合しているかどうかを検証する</span></td>
<td><span style="font-weight: 400">出力が速くなると、質の低いコードを受け入れてしまうリスクが高まるため、日々の作業の中心は生成から検証に移る</span></td>
<td><span style="font-weight: 400">テストをパスしていること、静的解析で問題がないこと、手動で一通りの確認が完了していることをコミット前の必須の確認項目として定める</span></td>
</tr>
<tr>
<td><b>システム横断的な思考</b></td>
<td><span style="font-weight: 400">自分の専門分野が、データモデル、インテグレーション、セキュリティ、ビジネスロジック、ユーザー体験を含む、より広範なアーキテクチャーとどのようにつながっているかを理解する</span></td>
<td><span style="font-weight: 400">AIはシステムをまたいで全体を見ることができないため、複数のレイヤーをつなげられる開発者は欠かせない</span></td>
<td><span style="font-weight: 400">1つの機能を、Apex → Flow → プラットフォームイベント → ミドルウェア → 外部システム → エンドユーザーへの影響という流れに沿って、エンドツーエンドで把握する</span></td>
</tr>
</tbody>
</table>
<p><span style="font-weight: 400">以下の各セクションでは、それぞれのスキルを深く掘り下げ、実務でどのような役割を果たすのかを見ていきます。</span></p>
<h3><span style="font-weight: 400">システム設計 – これからのSalesforce開発者にとって中核となるスキル</span></h3>
<p><span style="font-weight: 400">これからのSalesforce開発者にとって最も重要な仕事は、新しいコードを書くことではありません。システムを設計し、既存のシステムを理解し、その進化の方向性を定め、AIを動かすための構造とガードレールを作ることです。</span></p>
<p><span style="font-weight: 400">先に紹介したブラウンフィールド開発のフレームワークは、その手順を示しています。さらに難しいのは、このフレームワークを実行するには何が必要で、なぜそれがAIではできないのかを明らかにすることです。なぜトリガーは特定の順序で実行されるのか。現在のデータモデル、どのようなトレードオフによって作られたのか。負荷が高まったとき、連携はどのように動作するのか。セキュリティモデルは何を前提にしているのか。実際のガバナ制限のリスクはどこにあるのか。必要なのは、現状を文書化するだけでなく、その先を設計することです。</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206789" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260728235951/image5_J.jpeg?w=880" class="postimages" width="880" height="480" alt="" />
			  </span>
			</p>
<p><span style="font-weight: 400">この仕事には、</span><b>高度な技術力と創造的な判断力</b><span style="font-weight: 400">が必要です。AIは構造分析が得意です。コード分析からドキュメントの下書きを生成し、メタデータ全体からパターンを見つけ、依存関係のつながりを可視化できます。しかも多くの場合、人間よりも速く行えます。しかし、</span><b>設計上の判断では、「なぜ」なのかを理解する</b><span style="font-weight: 400">必要があります。なぜそのパターンが存在するのか、なぜそのトレードオフを受け入れたのか、なぜその制約がビジネス上重要なのか。そうした判断の根拠は、コードベースではなく、人間関係や組織に蓄積された記憶の中にあります。</span></p>
<p><span style="font-weight: 400">実務では、文書化されていない複雑なSalesforce組織を分析し、アーキテクチャーの全体像を明確に描ける開発者が、チーム全体（そこで使われるAIツールも含む）が効果的に働ける環境を作ります。その能力は、Apexを書くスピードよりもはるかに重要です。アーキテクチャーの観点から考えられる人が、チームメンバーの生産性を引き出します。コードを速く書くという仕事は、AIがすでに習得しつつあります。</span></p>
<p><span style="font-weight: 400"></span><a href="https://www.salesforce.com/agentforce/"><span style="font-weight: 400">Agentforce</span></a><span style="font-weight: 400">の導入に向けてSalesforce組織を準備するときも、Flowで新たな自動化を構築するときも、AIのコーディングアシスタントを開発ワークフローに取り入れるときも、この点は変わりません。どの場合でも、成果物の品質を決めるのは、システム設計にもとづく思考です。あいまいなプロンプトからは、あいまいな出力しか得られません。組織のアーキテクチャーを明確に理解していれば、リリース可能な成果物を生み出せます。</span></p>
<h3><span style="font-weight: 400">AIを活用したSalesforce開発における品質エンジニアリング</span></h3>
<p><span style="font-weight: 400">AIがコードをスピーディに生成するようになると、リスクはコードが誤っていることではありません。コードがすぐに生成され、もっともらしく見えるために、開発者が質の低いコードを受け入れてしまうことです。質の低い成果物が生まれる原因は、モデルではなく、人が確認を怠ってしまうことにあります。</span></p>
<p><span style="font-weight: 400">開発者の日々の仕事の中心は、生成ではなく、検証へと移っています。検証とは、AIが生成したクラス、フロー、テストスイートのすべてを、編集の判断が必要なドラフトとして扱うということです。内容を厳密に確認してください。構文がコンパイルできるかだけでなく、そのアプローチが既存のアーキテクチャーに適合しているかどうかも見極める必要があります。コミットする前にリファクタリングしてください。</span></p>
<p><span style="font-weight: 400">AIが生成したテストには、特に注意を払う必要があります。こうしたテストでは、コードが記述どおりに動作することは確認できますが、意図どおりに動作することまでは確認できません。AIにコードとテストの両方を書かせると、意義のある検証をすることなくパスしてしまうテストが生成されやすくなります。テストにも、本番用のコードと同じ水準の厳密さが求められます。</span></p>
<p><span style="font-weight: 400">既存のSalesforce環境では、判断を誤ったときの代償が大きくなります。検証が不十分なトリガーは、一括データ処理の障害を引き起こす可能性があります。適切なガードレールが設定されていないAgentforceエージェントからは、エンドユーザーを混乱させる出力が生成されます。レコードの同時更新を想定したテストを行っていないフローは、データ整合性の問題を引き起こし、修正に数週間かかることがあります。妥協のない検証チェックポイント（テストの合格、静的解析で問題がないこと、手動確認の完了など）を設ける開発者こそが、システムの健全性を長期間維持できます。スピードが優先され、整合性がないがしろになりそうな場合に歯止めをかけることも、開発者の役目です。この役割は、AIの登場前より今の方が重要です。</span></p>
<p><span style="font-weight: 400">これは、開発者のスキルを引き上げることにもつながります。これまで数時間かかっていたドラフトが数秒で得られるようになれば、人間の判断が最も重要となる作業、つまりアーキテクチャー上の判断やトレードオフの分析、AIの出力を採用するか否かの見極めに時間をかけられるようになります。</span></p>
<p><span style="font-weight: 400">とはいえ、すべての開発者が</span><a href="https://architect.salesforce.com"><span style="font-weight: 400">アーキテクト</span></a><span style="font-weight: 400">（英語）になるということではありません。すべての開発者が、システムのコンテキストを深く捉える力を身に付けるということです。多くの場合で、開発者の役割は、実装を担うAIエージェントを監督し、リリースされる成果物に責任を負うことへと変わります。フレームワーク、コーディングパターン、コードレビュー、慎重なテスト設計は、これからも人が担う仕事です。企業のリーダー層はスピードだけを評価しがちですが、品質基準を守る開発者がいなければ、AIによって技術的負債と脆弱性が拡大することになります。</span></p>
<h3><span style="font-weight: 400">Salesforce開発者の新たな強みとなるシステム横断的な思考</span></h3>
<p><span style="font-weight: 400">開発者に深い専門性が欠かせないことに変わりはありません。AIがまだ理解していないプラットフォームの内部構造を理解している人は必要です。しかし、さらに重要なのは、深い専門性と幅広い視点を兼ね備え、自分の専門領域とシステム全体とのつながりを理解できる開発者です。</span></p>
<p><span style="font-weight: 400">Salesforceは、アーキテクチャーを構成する要素の1つです。ApexとFlowがどのように連携するか。Flowがプラットフォームイベントとどのようにつながるか。プラットフォームイベントが外部のミドルウェアとどのようにやり取りするのか。一連の連携がエンドユーザーにどのような価値をもたらすのか。こうしたつながりを理解している開発者は、全体を見ずに1つのレイヤーだけを深く掘り下げる開発者よりも、はるかに価値の高い存在です。</span></p>
<p><span style="font-weight: 400">構築している機能だけを見るのではなく、製品全体を把握すること。データモデルや連携の全体像、セキュリティアーキテクチャー、そしてこれらの要素を結びつけるビジネスロジックを理解すること。さらに、</span><b>技術的な影響をビジネスの観点から説明</b><span style="font-weight: 400">し、開発が遅くなるとしても、早い段階でリスクを明らかにすることが求められます。</span></p>
<p><span style="font-weight: 400">Salesforceのプラットフォームでは、この変化がすでに現れています。Agentforceには、コードだけでなく、AIエージェントの設計、ガードレールの設定、データアーキテクチャー、ユーザー体験を理解している開発者が必要です。リリースを重ねるたびに、クリックベースの設定とコーディングの境界はあいまいになります。SalesforceとAIサービス、データプラットフォーム、外部アプリとの接続が増えると、インテグレーションのパターンも複雑になります。これらのレイヤー全体を俯瞰し、コードを使うべき箇所を適切に判断できる開発者が、チームから頼られる存在になります。</span></p>
<h2><span style="font-weight: 400">エージェント型AI時代のSalesforce開発者へのキャリアアドバイス</span></h2>
<p><span style="font-weight: 400">この記事を読んで、この変化を重く受け止めているとしても、同じように感じている人はほかにもいます。そう感じるのは当然のことで、開発者という職業に求められるものが変わりつつあるのです。その役割は小さくなるのではなく、さらに広がるのです。</span></p>
<h3><span style="font-weight: 400">すでにワークフローでAIツールを使っている場合は、どうすればよいですか？</span></h3>
<p><span style="font-weight: 400">スピードを最優先の指標にするのはやめましょう。AIが動作するためのシステム設計、ガードレール、フレームワークを構築し、ワークフローを作り直すことに注力すべきです。これには時間がかかり、エラーも起こります。しかし、新しいパターンが定着すれば、これまで実現できなかったレベルで仕事ができるようになります。AIの出力はドラフトとして扱い、厳密に検証してください。早くリリースするように求められても、仕事の質を高める判断力を手放してはいけません。</span></p>
<h3><span style="font-weight: 400">勤め先がまだAIツールを導入していない場合は、どうすればよいですか？</span></h3>
<p><span style="font-weight: 400">取り残されるのではないかと不安になるかもしれませんが、大丈夫です。企業への導入と個人の学習は、分けて考える必要があります。企業がAIツールをいつ導入するかは個人には決められませんが、いつ学び始めるかは自分で決められます。</span></p>
<p><span style="font-weight: 400">今すぐAIアシスタントを使って、コードベースを調べ、システム設計の思考法を実践し、ドキュメントのドラフトを生成してみましょう。チームが正式に採用しているツールに関係なく、この記事で紹介した習慣を身に付けることは可能です。システムを深く理解し、暗黙の前提を明文化し、アーキテクチャー全体を捉えるというシステム設計の作業そのものが、今行っている仕事の質を高めます。また、勤め先がAIツールを導入した際に、すばやく対応できるようにもなります。</span></p>
<h3><span style="font-weight: 400">Salesforce開発者としてのキャリアパスで、どのようなスキルが強みになりますか？</span></h3>
<p><span style="font-weight: 400">文書化されていない複雑なSalesforce組織を分析し、アーキテクチャーの全体像を明確に描くことができますか？単独では機能するAIの提案が、全体のコンテキストでは問題を引き起こす可能性を見抜くことができますか？システムの境界をまたいで、アーキテクチャー全体を考慮した判断ができますか？</span></p>
<p><span style="font-weight: 400">AIが実装を担うようになるほど、こうした能力の価値が高まります。</span></p>
<h3><span style="font-weight: 400">Salesforce開発について学習中、あるいはSalesforce開発者としてのキャリアがまだ浅い場合は、どうすればよいですか？</span></h3>
<p><span style="font-weight: 400">今こそ、学び始めるのに最適なときです。重要性の高いスキルを身に付けるうえで、AIは最も強力なツールです。</span></p>
<p><span style="font-weight: 400">Salesforce開発の経験が浅くても、AIを活用して馴染みのないコードベースを調べ、プラットフォーム内部の仕組みをリアルタイムで学び、システム設計上の意思決定をシミュレーションし、コードについてすぐにフィードバックを得ることができます。こうした学習方法は、2年前には存在していませんでした。今だからこそ、システム思考は以前より早く身に付けることができます。</span></p>
<p><span style="font-weight: 400">とはいえ、表面からは見えない内部の仕組みも理解する必要はあります。外国語の学習と同じで、聞いて意味は理解できても、自分で話したり書いたりしなければ、その規則は身に付きません。AIを使えば、習得をスピードアップできます。</span></p>
<p><span style="font-weight: 400">専門性を深める前に、まず広い視野を持ちましょう。学習した内容を記録することを習慣にしてください。</span><a href="https://trailhead.salesforce.com/en/content/learn/trails/force_com_dev_beginner"><span style="font-weight: 400">Trailheadでプラットフォームの基礎</span></a><span style="font-weight: 400">をしっかり学びましょう。</span><a href="https://trailhead.salesforce.com/en/credentials/platformdeveloperi"><span style="font-weight: 400">Salesforce認定Platformデベロッパー</span></a><span style="font-weight: 400">などの認定資格は、基礎知識があることを証明しますが、ここで説明したスキル（システム思考、アーキテクチャー上の判断力、品質を徹底する姿勢）は、試験では測りきれない価値があります。</span></p>
<h2><span style="font-weight: 400">SalesforceコミュニティがAIへの移行を後押し</span></h2>
<p><span style="font-weight: 400">AIを活用した開発に移行するなか、エコシステムではかつてない速さで新たな知見が生まれています。しかし、その知見は、均等に行き渡っているわけではありません。AIを日常的に試している開発者がいる一方で、勤め先がまだAIの導入に乗り出していない開発者もいます。両者の差は才能ではなく、AIを実際に活用した人の率直な経験や知見に触れられる機会があるかどうかです。</span></p>
<p><span style="font-weight: 400">今、このコミュニティの誰もができる最大の貢献は、それぞれが得た学びを共有することです。包み隠さず、正直に、取り繕うことなく共有してください。成功体験だけではなく、行き詰まりや失敗、AIによって一時的に苦労が増えた局面も共有してください。「導入して3か月間は、かえって作業が遅くなった」といった率直な経験談は、最も有益な情報の1つです。こうした情報が共有されれば、移行に伴う負担は当たり前に発生するものとわかり、他のメンバーが計画を立てやすくなります。</span></p>
<p><span style="font-weight: 400"></span><a href="https://trailhead.salesforce.com/trailblazer-community"><span style="font-weight: 400">Trailblazer Community</span></a><span style="font-weight: 400">やGitHubのディスカッション、</span><a href="https://trailhead.salesforce.com/community/conferences/"><span style="font-weight: 400">コミュニティカンファレンス</span></a><span style="font-weight: 400">（英語）、</span><a href="https://trailblazercommunitygroups.com/"><span style="font-weight: 400">Salesforceユーザーグループ</span></a><span style="font-weight: 400">（英語）、社内チャネルで経験を共有することで、ほかの人が導入を進める助けになります。Salesforce開発者コミュニティに蓄積された率直な知見は、この移行を進めるうえで役に立つ最大の資産です。ぜひ活用し、経験を共有してください。コミュニティの重要性はますます高まっています。</span></p>
<h2><span style="font-weight: 400">これからのSalesforce開発者に求められるもの</span></h2>
<p><b>これからは、もっと多くのSalesforce開発者が求められるようになります。</b><strong>必要とされるのは、システムを実装するだけでなく、設計できる開発者です。製品全体を頭の中で把握できる人です。的確な判断でAIをガイドし、スピード重視で健全性が損なわれそうなときには異議を唱え、エコシステム全体の成長につながるように学びを共有できる開発者です。</strong></p>
<p><span style="font-weight: 400">新しいツールで、可能性は大きく広がっています。重要なのは、かねてから優れたエンジニアが備えていた力、つまり</span><b>判断力、文脈を捉える力、システム全体を理解しようとする姿勢</b><span style="font-weight: 400">なのです。</span></p>
<h2><span style="font-weight: 400">関連資料</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://trailhead.salesforce.com/en/content/learn/trails/force_com_dev_beginner"><span style="font-weight: 400">開発者初級（Trailhead）</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/einstein/genai/overview"><span style="font-weight: 400">Agentforce開発者ガイド（英語）</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/"><span style="font-weight: 400">Apex開発者ガイド</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/lwc/guide"><span style="font-weight: 400">Lightning Webコンポーネント開発者ガイド</span></a></li>
</ul>
<h2><span style="font-weight: 400">執筆者について</span></h2>
<p><b>René Winkelmeyer</b><span style="font-weight: 400"><br />
開発者アドボカシーチームのリーダーとして、Agentforce、Data 360、Agentforce 360 Platformを担当。業務外でもコーディングを趣味とし、</span><a href="https://github.com/muenzpraeger"><span style="font-weight: 400">GitHubでコードを公開</span></a><span style="font-weight: 400">。</span><a href="https://www.linkedin.com/in/muenzpraeger"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">でのフォロー歓迎。</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/future-salesforce-developer-agentic-ai-jp">エージェント型AI時代におけるSalesforce開発者の未来</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/future-salesforce-developer-agentic-ai-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206782</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260313122433/The-Future-of-the-Salesforce-Developer-in-the-Agentic-AI-Era-e1773426290518.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260313122433/The-Future-of-the-Salesforce-Developer-in-the-Agentic-AI-Era-e1773426290518.png?w=1000" medium="image" />
	</item>
		<item>
		<title>React で作り、Salesforce で動かす:Salesforce Multi-Framework が GA に</title>
		<link>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga-jp</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga-jp#respond</comments>
		<pubDate>Thu, 23 Jul 2026 01:29:29 +0000</pubDate>
		<dc:creator><![CDATA[Charles Watkins]]></dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Headless 360]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[ga]]></category>
		<category><![CDATA[General Availability]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[Headle]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Multi-Framework]]></category>
		<category><![CDATA[react]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206771</guid>
		<description><![CDATA[<p>Salesforce Multi-Framework &#12364; GA(&#27491;&#24335;&#25552;&#20379;)&#12395;&#12290;&#35469;&#35388;&#12420;&#12488;&#12540;&#12463;&#12531;&#31649;&#29702;&#19981;&#35201;&#12391;&#12289;Salesforce &#19978;&#12395; React &#12450;&#12503;&#12522;&#12434;&#12493;&#12452;&#12486;&#12451;&#12502;&#27083;&#31689;&#12290;GraphQL &#12391;&#12398;&#12487;&#12540;&#12479;&#25805;&#20316;&#12289;Apex &#21628;&#12403;&#20986;&#12375;&#12289;beta &#12363;&#12425;&#12398;&#31227;&#34892;&#25163;&#38918;&#12420;&#30772;&#22730;&#30340;&#22793;&#26356;&#12418;&#12354;&#12431;&#12379;&#12390;&#35299;&#35500;&#12375;&#12414;&#12377;&#12290;</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga-jp">React で作り、Salesforce で動かす:Salesforce Multi-Framework が GA に</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<blockquote><p>※本記事は2026年7月16日に米国で公開された <a href="https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga">Build with React on Salesforce: Multi-Framework Is Now GA</a>の抄訳です。本記事の正式言語は英語であり、その内容および解釈については英語が優先されます。</p></blockquote>
<p><a href="https://developer.salesforce.com/docs/platform/multiframework/guide"><span style="font-weight: 400">Salesforce Multi-Framework</span></a><span style="font-weight: 400"> は、Headless 360 Platform 上で動作するフレームワーク非依存のランタイムです。Salesforce 上でネイティブに React アプリを構築し、GraphQL でレコードをクエリし、Apex を呼び出し、UI API を通じてユーザーコンテキストを読み取ることができます — 認証やトークン管理は一切不要です。Salesforce のセキュリティおよびガバナンスモデルと、React のエコシステムを、ひとつのランタイムで利用できます。</span></p>
<p><a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework"><span style="font-weight: 400">今年初めにオープンベータとしてローンチされた</span></a><span style="font-weight: 400"> Salesforce Multi-Framework が、いよいよ正式リリース (GA) となりました。これは本番環境で利用可能であり、ビジネスクリティカルなワークロードでもサポートされ、<a href="https://help.salesforce.com/s/articleView?language=en_US&amp;id=000388902&amp;type=1">Hyperforce</a> 上で稼働する組織ではすでに有効化されていることを意味します。<br />
</span></p>
<h2><span style="font-weight: 400">Salesforce Multi-Framework GA リリースの新機能</span></h2>
<p><span style="font-weight: 400">ベータリリース以降に変更された点は次のとおりです。</span></p>
<ul>
<li><b>本番組織のサポート:</b> 本番組織、Scratch 組織、Developer Edition 組織、Sandbox にデプロイできるようになりました</li>
<li><b>Salesforce App ドメイン:</b> Multi-Framework の従業員向けアプリは、新しい <code>salesforce.app</code> ドメイン上で動作します。これは専用のオリジンであり、ブラウザーのネイティブな同一オリジンポリシーを通じて強固なセキュリティ境界を提供します</li>
<li><b>Data SDK の更新:</b> Data SDK が正式リリースとなり、GraphQL で Salesforce データをクエリするためのインターフェースと API が更新されました</li>
<li><b><code>CustomApplication</code></b><b> ターゲット:</b> ベータ版の <code>AppLauncher</code> ターゲットは非推奨となり、従業員向けアプリでは <code>CustomApplication</code> が推奨されるようになりました</li>
</ul>
<h3><span style="font-weight: 400">本番組織、Sandbox、Scratch 組織へのデプロイ</span></h3>
<p>Multi-Framework は、Summer ’26 リリース以降のすべての Hyperforce 組織 — 本番組織、Sandbox、Developer Edition、Scratch — で利用可能になりました。従来の <code>UiBundleSettings</code> Scratch 構成設定は非推奨となりました。</p>
<p><span style="font-weight: 400">お使いの組織が Salesforce Multi-Framework をサポートしているかどうかは、Salesforce の設定で </span><b>React Development with Salesforce Multi-Framework(Salesforce マルチフレームワークを使用した React 開発)</b><span style="font-weight: 400"> に移動することで確認できます。有効化されている組織では、「Salesforce App Domain」のトグルがオン(有効)になった状態で「About Salesforce Multi-Framework(Salesforce マルチフレームワークについて)」メッセージが表示されます。</span></p>
<p>
			  <span class="postimagessection_specify wp-image-206775 alignnone" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260722183443/react-development-with-salesforce-multi-framework-jp.png?w=1710" class="postimages" width="1280" height="738" alt="" />
			  </span>
			</p>
<h3><span style="font-weight: 400">新しい </span><span style="font-weight: 400"><code>salesforce.app</code> ドメイン</span></h3>
<p><code>salesforce.app</code> ドメインは、Multi-Framework の従業員向けアプリ専用の Web オリジンです。アプリの URL は <code>https://&lt;org&gt;--&lt;namespace&gt;.&lt;instance&gt;.my.salesforce.app/app/c__&lt;bundleName&gt;</code> というパターンに従います — 例: <code>https://acme-corp-dev-ed--c.scratch.my.salesforce.app/app/c__myReactApp</code>。各アプリはそれぞれ独自のオリジン上で動作するため、ブラウザーの同一オリジンポリシーがネイティブに分離を強制します。あるアプリが別のアプリの Cookie やストレージを読み取ることはできず、独自のサンドボックス化は不要になります。</p>
<h3><span style="font-weight: 400">Data SDK が GA に (破壊的な API 変更あり)</span></h3>
<p>Data SDK (<code>@salesforce/platform-sdk</code>) は、React アプリが GraphQL で Salesforce レコードをクエリおよび更新できるようにするクライアントライブラリです。新しいパッケージ名になり、より明確な API サーフェスで提供されるようになりました。GraphQL のクエリおよびミューテーション自体に変更はありませんが、それらをラップするクライアントライブラリが変わりました。</p>
<p>クエリとミューテーションは、もはや単一の汎用的な <code>graphql()</code> メソッドを通じて処理されることはありません。読み取りには <code>.query()</code>、書き込みには <code>.mutate()</code> を呼び出すようになり、パラメーターのキーも操作の種類に対応します。</p>
<p>レスポンスの型付けもより厳密になりました。<code>result.data</code> は undefined になり得るものとしてモデル化されるようになったため、常に存在すると想定するのではなく、オプショナルチェイニング (<code>result?.data?.uiapi</code>) を使うことをおすすめします。</p>
<p><b>変更前 (ベータ):</b></p>
<pre language="typescript">import { createDataSDK, gql } from '@salesforce/sdk-data';

const sdk = await createDataSDK();
// Queries and mutations both used .graphql() with a `query` key
const result = await sdk.graphql?.&lt;QueryResponse&gt;({ query: MY_QUERY });
const mutationResult = await sdk.graphql?.&lt;MutationResponse&gt;({
  query: MY_MUTATION,
  variables: { input },
});

// result.data was assumed present
const edges = result?.data.uiapi?.query?.Account?.edges;
</pre>
<p><b>変更後 (GA):</b></p>
<pre language="typescript">import { createDataSDK, gql } from '@salesforce/platform-sdk';

const sdk = await createDataSDK();
// Reads use .query() with a `query` key
const result = await sdk.graphql?.query&lt;QueryResponse&gt;({ query: MY_QUERY });
// Writes use .mutate() with a `mutation` key
const mutationResult = await sdk.graphql?.mutate&lt;MutationResponse&gt;({
  mutation: MY_MUTATION,
  variables: { input },
});

// result.data is now potentially undefined — optional-chain through it
const edges = result?.data?.uiapi?.query?.Account?.edges;
</pre>
<h3><span style="font-weight: 400"><code>UIBundle</code> </span><span style="font-weight: 400">メタデータの変更</span></h3>
<p>Multi-Framework アプリは、App Launcher から直接レンダリングされるのではなく、Custom Application メタデータを通じてプラットフォームに接続されるようになりました。<code>.uibundle-meta.xml</code> 内の <code>&lt;target&gt;</code> 要素にこの変更が反映されています。従業員向けアプリでは、ベータ版の <code>AppLauncher</code> 値は非推奨となり、<code>CustomApplication</code> が推奨されます。顧客向けアプリの <code>Experience</code> ターゲットは変更ありません。</p>
<p>ベータ期間中に <code>AppLauncher</code> を使用していた場合は、<code>CustomApplication</code> に更新してください。</p>
<pre class="wp-block-code language-xml">&lt;UIBundle xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;masterLabel&gt;My App&lt;/masterLabel&gt;
    &lt;description&gt;A React app on Salesforce.&lt;/description&gt;
    &lt;isActive&gt;true&lt;/isActive&gt;
    &lt;version&gt;1&lt;/version&gt;
    &lt;target&gt;CustomApplication&lt;/target&gt;
&lt;/UIBundle&gt;</pre>
<p><span style="font-weight: 400">バンドルにアクセスできるようにするには、それを参照する Custom Application も必要です。Custom Application メタデータが、UI Bundle を App Launcher に結び付けます。</span></p>
<pre class="wp-block-code language-xml">&lt;CustomApplication xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;label&gt;My React App&lt;/label&gt;
    &lt;navType&gt;Standard&lt;/navType&gt;
    &lt;uiBundle&gt;c__myReactApp&lt;/uiBundle&gt;
    &lt;uiType&gt;Lightning&lt;/uiType&gt;
    &lt;formFactors&gt;Large&lt;/formFactors&gt;
&lt;/CustomApplication&gt;</pre>
<p><span style="font-weight: 400">次に、権限セットを通じてアプリケーションへの表示権限を付与します。</span></p>
<pre class="wp-block-code language-xml">&lt;PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;applicationVisibilities&gt;
        &lt;application&gt;myReactApp&lt;/application&gt;
        &lt;visible&gt;true&lt;/visible&gt;
    &lt;/applicationVisibilities&gt;
    &lt;label&gt;My React App Access&lt;/label&gt;
    &lt;hasActivationRequired&gt;false&lt;/hasActivationRequired&gt;
&lt;/PermissionSet&gt;</pre>
<h2><span style="font-weight: 400">ベータからの移行: 破壊的変更</span></h2>
<p><span style="font-weight: 400">ベータ版の Salesforce Multi-Framework 上で構築していた場合は、GA でデプロイする前に必ず次の 5 つの変更を行ってください。</span></p>
<ol>
<li>インポートを <code>@salesforce/sdk-data</code> から <code>@salesforce/platform-sdk</code> に更新します。</li>
<li><code>graphql()</code> の呼び出しを <code>.query()</code> (読み取り) と <code>.mutate()</code> (書き込み) に分割します。</li>
<li><code>result?.data</code> にオプショナルチェイニングを使用します — undefined になり得るためです。</li>
<li><code>.uibundle-meta.xml</code> 内の <code>&lt;target&gt;AppLauncher&lt;/target&gt;</code> を <code>&lt;target&gt;CustomApplication&lt;/target&gt;</code> に置き換え、<code>&lt;uiBundle&gt;</code> 参照を含む Custom Application メタデータファイルと、表示権限を付与する権限セットを追加します。</li>
<li>非推奨となった <code>UiBundleSettings</code> Scratch 構成を削除します — もう不要です。</li>
</ol>
<h2><span style="font-weight: 400">Multi-Framework ロードマップの今後</span></h2>
<p><span style="font-weight: 400">今後構築予定の機能は次のとおりです。</span></p>
<ul>
<li style="font-weight: 400"><b>マイクロフロントエンド:</b><span style="font-weight: 400"> 外部でホストされている React コンポーネントを、Lightning Web コンポーネントと並べて Lightning に埋め込み、それらの間でイベントを受け渡しできるようにします</span></li>
<li style="font-weight: 400"><b>Angular サポート:</b><span style="font-weight: 400"> Angular を皮切りに、追加のフレームワークサポートを提供していきます</span></li>
<li style="font-weight: 400"><b>ローカリゼーション:</b><span style="font-weight: 400"> Translation Workbench またはメタデータを使用して、Multi-Framework コンポーネントを言語・ロケール・タイムゾーンをまたいでユーザーに適応させます</span></li>
<li style="font-weight: 400"><b>管理パッケージ:</b><span style="font-weight: 400"> Multi-Framework アプリケーションを管理パッケージとして構築、テスト、配布、デプロイできるようにします</span></li>
<li style="font-weight: 400"><b>アプリ管理: </b><span style="font-weight: 400">名前、説明、URL といった基本的なアプリの詳細を App Manager から表示・管理できるようにします</span></li>
</ul>
<p><span style="font-weight: 400">これらの機能のリリースに関する更新情報やニュースについては、Salesforce Developer ブログをご確認ください。</span></p>
<h2><span style="font-weight: 400">リソース</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework"><span style="font-weight: 400">Introducing Salesforce Multi-Framework</span></a><span style="font-weight: 400">: 詳細なウォークスルーを含むベータ発表記事</span></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/multiframework/guide/"><span style="font-weight: 400">Multi-Framework ドキュメント</span></a><span style="font-weight: 400">: セットアップガイド、API リファレンス、ベストプラクティス</span></li>
<li style="font-weight: 400"><a href="https://github.com/trailheadapps/multiframework-recipes"><span style="font-weight: 400">Salesforce Multi-Framework Recipes</span></a><span style="font-weight: 400">: React on Salesforce のための 20 以上のコードサンプル</span></li>
</ul>
<h2><span style="font-weight: 400">著者について</span></h2>
<p><b>Alice Oh</b><span style="font-weight: 400"> は Salesforce の Director of Product であり、Salesforce エコシステム全体でアプリを作成・バイブコーディング・公開するための柔軟で拡張性のある基盤製品の構築に取り組んでいます。空いた時間には、最もサクサクのクロワッサンを求めてベイエリアを自転車で走り回っています。彼女のフォローや連絡は </span><a href="https://www.linkedin.com/in/helloaliceoh/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400"> からどうぞ。</span></p>
<p><b>Charles Watkins</b><span style="font-weight: 400"> は独学のソフトウェア開発者であり、Salesforce の Lead Developer Advocate です。ブログの執筆、コードサンプルの作成、そしてパシフィックノースウェストで新しいハイキングスポットを探すことに時間を費やしています。彼のフォローは </span><a href="https://www.linkedin.com/in/wcharlesw/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400"> からどうぞ。</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga-jp">React で作り、Salesforce で動かす:Salesforce Multi-Framework が GA に</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga-jp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206771</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260715081816/DoubleHeadshot-6-1-e1784128709363.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260715081816/DoubleHeadshot-6-1-e1784128709363.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Get Started with Precision Context Management Using MCP+</title>
		<link>https://developer.salesforce.com/blogs/2026/07/get-started-with-precision-context-management-using-mcp</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/get-started-with-precision-context-management-using-mcp#respond</comments>
		<pubDate>Tue, 21 Jul 2026 15:00:33 +0000</pubDate>
		<dc:creator><![CDATA[Dave Norris]]></dc:creator>
				<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[Context Management]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Model context protocol]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python Pipeline]]></category>
		<category><![CDATA[Salesforce AI Research]]></category>
		<category><![CDATA[Token Usage]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206717</guid>
		<description><![CDATA[<p>MCP+ is a post-processing layer that intercepts MCP tool responses and delivers only what your agent needs, cutting costs without modifying your tools or rewriting your agent.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/get-started-with-precision-context-management-using-mcp">Get Started with Precision Context Management Using MCP+</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span>If you’ve built AI agents that rely on external tools for fetching documentation pages, querying internal APIs, or searching repositories, you’ve likely stared at your </span><a href="https://docs.anthropic.com/en/docs/build-with-claude/token-counting"><u>token counts</u></a><span> in disbelief. Watch your terminal long enough during a complex task, and you&#8217;ll inevitably hit that dreaded moment: Claude Code’s </span><code>auto-compact</code><span> triggers much earlier than expected, or your Cursor </span><a href="https://docs.anthropic.com/en/docs/build-with-claude/context-windows"><u>context window</u></a><span> fills up, causing the agent to lose its &#8220;memory&#8221; right when you need it most.</span></p>
<p><span style="font-weight: 400">Data from documentation, web searches, and CRMs necessary to ground agent responses can easily consume tens of thousands of tokens. This influx of data clogs valuable space across a multi-turn conversation, even if all of that data is not entirely relevant to your immediate task. Managing this &#8220;context tax&#8221; is one of the hardest parts of engineering production-grade agents..</span></p>
<p><a href="https://mcp-plus.github.io/"><b>MCP+</b></a><span style="font-weight: 400"> is a server-, agent-, and task-agnostic post-processing layer that wraps around your MCP clients to eliminate tool-driven context bloat. By intercepting tool outputs and extracting only the critical information that your agent actually needs, it slashes inference costs by up to </span><b>75%</b><span style="font-weight: 400"> with zero modifications to your existing codebase. </span></p>
<p><span style="font-weight: 400">In this post, we’ll dive into how MCP+ works, walk through a concrete example, and show you how to get set up.</span></p>
<h2><span style="font-weight: 400">What is MCP+?</span></h2>
<p><span style="font-weight: 400">Built by </span><a href="https://www.salesforce.com/blog/category/ai-research/"><span style="font-weight: 400">Salesforce AI Research</span></a><span style="font-weight: 400"> and open-sourced under Apache 2.0, </span><b>MC</b><b>P+</b><span style="font-weight: 400"> is an optimization layer for your AI workflows that is completely server, agent, and task-agnostic. Instead of flooding your agent&#8217;s context window with thousands of tokens of raw tool output, MCP+ transparently intercepts tool outputs and offloads the heavy lifting of data-sifting to high-speed, cost-effective models (like GPT-5-mini or Gemini 2.5 Flash). This helps you extract the precise data your agent needs before it ever touches your agent’s context — all configured via a simple, one-time CLI setup with zero code changes. </span></p>
<p><span style="font-weight: 400">MCP+ doesn’t make tool calls entirely for free. Instead, it trades a massive wall of expensive, frontier-model tokens for a tiny sliver of cheaper, lightweight model tokens.</span></p>
<p><a href="https://mcp-plus.github.io/"><span style="font-weight: 400">Empirical research</span></a><span style="font-weight: 400"> shows that this approach cuts token usage without significantly degrading performance. In rigorous benchmarks against token-heavy payloads in the developer ecosystem, like data from Playwright (raw HTML DOM), Yahoo Finance (structured JSON), and Google Search (Serper API payloads), MCP+ maintained </span><b>comparable reasoning performance across Claude 4.0 Sonnet, GPT-5, and Gemini 3 Pro Preview models, while reducing token usage by up to 75%.</b></p>
<h2><span style="font-weight: 400">How does MCP+ know what to extract? </span></h2>
<p>The core breakthrough of MCP+ relies on a single, elegant concept: the <code>expected_info</code> argument.</p>
<p>When you run <code>mcp-build-plus</code> as part of its setup, it reads your existing MCP configuration file and generates a <code>-plus</code> version of each server. Your primary agent can now connect to this virtual proxy instead of the original server — using the same tools and the same schemas.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206766" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260717103130/Using-the-MCP-CLI-to-create-virtual-proxy-versions-of-your-original-MCP-configurations-e1784309502658.png?w=1000" class="postimages" width="1000" height="395" alt="Using the MCP+ CLI to create virtual proxy versions of your original MCP configurations" />
			  </span>
			</p>
<p>In the example above, the <code>proxy_github.json</code> generated keeps the details of the upstream MCP server to use and holds additional attributes needed.</p>
<p>Instead of requiring manual prompt engineering or workflow changes, MCP+ dynamically injects an <code>expected_info</code> parameter directly into each tool’s existing JSON input schema. When your primary agent reads its available tool definitions, it simply sees this as just another standard parameter.</p>
<p><b>Before MCP+:</b></p>
<pre language="json">// Tool Call: system_logs__fetch_log_tail
{
 "path": "/var/log/nginx/access.log",
  "line_count": 5000,
}
</pre>
<p><b>After MCP+:</b></p>
<pre language="json">// Tool Call: system_logs__fetch_log_tail
{
 "path": "/var/log/nginx/access.log",
  "line_count": 5000,
  "expected_info": "Look for the HTTP status code and error message associated with the failed checkout request" 
}
</pre>
<p>Because LLM agents are natively trained to follow schemas, your primary agent naturally and automatically populates this field based on its current task. Once your agent fills in <code>expected_info</code>, MCP+ uses it to guide what comes back. When a tool response exceeds the configured token threshold, MCP+ intercepts the raw output and routes it — along with the <code>expected_info</code> — to a configurable lightweight LLM. That model extracts the relevant details using two independent methods: a natural language summarisation and generated Python code that parses the raw data programmatically. Your agent receives both results in a focused, concise response instead of the full payload.</p>
<p><span style="font-weight: 400">Let’s take a look at the mechanics of how this works.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206767" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260717103242/A-sequence-diagram-showing-MCP-and-alternative-paths-based-on-token-thresholds-e1784309574546.png?w=1000" class="postimages" width="1000" height="913" alt="A sequence diagram showing MCP+ and alternative paths based on token thresholds" />
			  </span>
			</p>
<p><span style="font-weight: 400">MCP+ sits between your agent and the original MCP server as a transparent interception layer. The sequence diagram shows two phases:</span></p>
<ul>
<li><b><span>Tool Discovery: </span></b><span>This</span><b><span> </span></b><span>happens once when your agent connects. The MCP+ wrapped client fetches the real tool schemas from the upstream server, injects an </span><code>expected_info</code><span> parameter into each one, and exposes them dynamically.. Your agent (Cursor, Claude Code) sees these modified schemas and naturally fills in the </span><code>expected_info</code><span><span> based on its current task.</span></span></li>
<li><b><span>Tool Execution</span></b><span> happens on every call:</span>
<ul>
<li><b><span>Your agent calls a tool</span></b><span> with its normal parameters plus </span><code>expected_info</code><span>. The </span><code>WrappedMCPClient</code><span> strips </span><code>expected_info</code><span> and forwards a clean request to the upstream MCP server.</span></li>
<li><b><span>The raw response comes back</span></b><span>. MCP+ checks the token count against a configurable threshold.</span>
<ul>
<li><b><span>Below threshold</span></b><span>: The response passes through unchanged. Minimal added latency.</span></li>
<li><b><span>Above threshold</span></b><span>: The response is routed to the </span><code>PostProcessAgent</code><span>, this uses a lightweight model that produces both a direct text extraction and generated Python filtering code.</span></li>
</ul>
</li>
<li><b><span>The </span><code><span>SafeCodeExecutor</span></code></b><span> runs the generated code in a sandbox against the raw output.</span></li>
<li><b><span>The results: </span></b><span>both direct extraction and code-based extraction are returned to the agent.</span></li>
</ul>
</li>
</ul>
<p><span>If post-processing fails for any reason, MCP+ falls back to the original output.</span></p>
<h3><span style="font-weight: 400">Dual post-processing strategy</span></h3>
<p><span>Rather than relying on a single extraction method, the </span><code>PostProcessAgent</code><span> produces two independent results:</span></p>
<ul>
<li><b><span>Direct extraction</span></b><span>: The lightweight LLM reads the raw output alongside the </span><code>expected_info</code><span> target to pull out the relevant text fragments. This is ideal for unstructured data, like conversational logs or documentation pages, but is occasionally lossy on structured data.</span></li>
<li style="font-weight: 400"><b>Code generation</b><span style="font-weight: 400">: The same LLM generates Python code that programmatically filters, parses, or transforms the raw output. This handles structured formats (JSON arrays, HTML tables, nested XML) with precision that natural language extraction can miss.</span></li>
</ul>
<p><span style="font-weight: 400">This dual approach, semantic extraction and programmatic code execution, blends the best of both worlds. If either fails, MCP+ retries automatically (up to a configurable limit). Only when both methods are exhausted does the original unfiltered output pass through. Your agent never receives less information than it would without MCP+.</span></p>
<h3><span>The </span><code>SafeCodeExecutor</code></h3>
<p><span>The code-generation method means MCP+ is executing LLM-generated Python at runtime. This could come with some risk without some guardrails in place. The </span><code>SafeCodeExecutor</code><span> constrains what that code can do.</span></p>
<ul>
<li><span>Imports like </span><code><span>os.system</span></code><span>,</span><code><span> os.popen</span></code><span>,</span><code><span>subprocess</span></code><span>, </span><code><span>ctypes</span></code><span>, </span><code><span>pickle</span></code><span>, and </span><code><span>eval/exec</span></code><span> are blocked via string-matching before the code runs to defend against obviously dangerous operations. The code receives the raw output as a </span><code><span>data</span></code><span> variable and writes its filtered result to </span><code><span>result</span></code><span>. If </span><code><span>result</span></code><span> is never set, the original data passes through unchanged.</span><br />
<span></span></li>
<li><span>A 10-second execution timeout kills any long-running or recursive operations (not enforced on Windows systems). Scoped variables: the code runs in a namespace initialised with only </span><code><span>data</span></code><span> and </span><code><span>result</span></code><span>.</span></li>
</ul>
<p><span style="font-weight: 400">The sandbox ensures that even if the lightweight model generates something unexpected, the code has limited access beyond the raw output string it was given.</span></p>
<h3><span style="font-weight: 400">Intelligent activation</span></h3>
<p><span style="font-weight: 400">Not every tool response needs filtering. MCP+ uses two guardrails to protect against unnecessary latency and hallucinated expansion:</span></p>
<ul>
<li><b>Token threshold gate: </b>This acts as a redundancy guard to ensure that post-processing is only triggered when there is a meaningful return on investment. A configurable <code>token_threshold</code> (default: 2,000 tokens) determines the minimum output size that triggers post-processing. Responses below this pass through to the agent untouched since there&#8217;s no value in routing a 200-token response through a lightweight model only to get back 180 tokens. It also avoids the risk of the post-processor misinterpreting a short, already-concise response and returning something less accurate than the original.</li>
<li style="font-weight: 400"><b>Output size ceiling: </b><span style="font-weight: 400">This guards against hallucination. The lightweight model can sometimes elaborate on source data, add explanation, or wrap extractions in verbose formatting — producing more tokens than the original. MCP+ enforces that each extracted output stays under 50% of the original token count. If both extraction methods exceed this, the original output is returned unchanged. Your agent never receives an inflated payload as a result of post-processing.</span></li>
</ul>
<h2><span style="font-weight: 400">A concrete example of MCP+ in action</span></h2>
<p><span style="font-weight: 400">Say your agent is helping you triage issues on a GitHub repository, let’s say for </span><a href="https://github.com/trailheadapps/lwc-recipes"><span style="font-weight: 400">lwc-recipes</span></a><span style="font-weight: 400"> (which includes easy-to-digest code examples for Lightning Web Components).</span></p>
<p><span style="font-weight: 400">You ask: </span><i><span style="font-weight: 400">&#8220;How many issues in the last year have had problems with deployment on trailheadapps / agent-script-recipes&#8221;</span></i><span style="font-weight: 400">.</span></p>
<p>The agent calls the GitHub MCP server&#8217;s <code>search_issues</code> tool with appropriate arguments.</p>
<pre language="json">Arguments: {
"query": "How many issues in the last year have had issues with deployment",
"owner": "trailheadapps",
"repo": "agent-script-recipes"}, 
"expected_info": "The number of issues in the last year with deployment issues" 
}
</pre>
<p><span style="font-weight: 400">The tool arguments do the heavy lifting, filtering to deployment-related issues across the repository. The agent used the tool call correctly: </span><span style="font-weight: 400">the GitHub MCP server successfully processes the request, returning a massive JSON payload containing six issues complete with </span><span style="font-weight: 400">full markdown bodies with steps to reproduce, empty template fields, reaction counts and avatar URLs. MCP+ optimizes this response on the fly, and because it knows that the agent only needs a count of deployment issues, it strips away the structural noise before the data ever hits your agent&#8217;s context window. </span></p>
<p><b>Without MCP+: </b><span style="font-weight: 400">38,693 characters of raw JSON.</span></p>
<pre language="json">{"total_count":6,"incomplete_results":false,"items":[{"id":4416618502,"number":98,
  "state":"closed","state_reason":"completed","locked":false,"title":"Unable to deploy",
  "body":"### Summary\n\nHello,\nI am trying to deploy the project on a new org without
  success.\n\n\n\n\n\n### Salesforce Org Type\n\nDeveloper Edition Org\n\n### Steps To
  Reproduce\n\n1. Connect Org\n2. Run deploy with : sf project deploy start -d force-app
  \n\n### Current Behavior\n\nFailed deploy with a lot of error\nAll of the errors are
  in the follwoing CSV file\n[errors.csv](https://github.com/user-attachments/files/
  27572897/errors.csv)\n\n### Expected Behavior\n\n_No response_\n\n### Relevant Log  ─────────────┤\n│ AiAuthoringBundle │ ActionChaining/ActionChaining │ Not available
  for deploy for this organization │ │\n│ AiAuthoringBundle │ ActionChaining/
  ActionChaining │ Not available for deploy for this organization │ │\n...
...continues for 38,693 characters with avatar URLs, event endpoints, subscription URLs, and five more issues.
</pre>
<p><b>With MCP+:</b> The <code>PostProcessAgent</code> fires and both extraction methods return independently.</p>
<p><b>Direct extraction:</b><span style="font-weight: 400"> </span></p>
<pre language="text">Based on the search results, there are 6 total issues in the repository.
Of these, 4 issues are related to deployment problems:

1. Issue #98 (Closed) - "Unable to deploy" - Created 2026-05-10, deployment
   failures with AiAuthoringBundle and GenAiPromptTemplate components
2. Issue #83 (Open) - "Unable to test Custom Lightning Type Agent in Namespaced
   Scratch Orgs" - Created 2026-04-29, compilation error when deploying to
   namespaced scratch orgs
3. Issue #66 (Closed) - "Unable to Deploy the App to Org" - Created 2026-03-15,
   deployment limit error
4. Issue #41 (Closed) - "The deployment of recipes fail in latest sandbox due to
   missing default_agent_user" - Created 2026-01-09, deployment failure due to
   missing default_agent_user configuration

Additionally, Issue #58 (Open) and Issue #74 (Closed) are related to deployment/configuration concerns but are categorized as enhancements rather than pure deployment bugs.
</pre>
<p><b>Code-based extraction:</b><span style="font-weight: 400"> </span></p>
<pre language="json">{"total_issues": 6, "deployment_related_issues": 6, "issues": [
    {"number": 98, "title": "Unable to deploy", "state": "closed", "created_at": "2026-05-10T19:37:14Z", "labels": ["bug"]},
    {"number": 83, "title": "Unable to test Custom Lightning Type Agent in Namespaced Scratch Orgs", "state": "open", "created_at": "2026-04-29T12:43:58Z", "labels": ["bug"]},
    {"number": 58, "title": "Add example of Service Agent and show a DX pipeline to handle the Agent user", "state": "open", "created_at": "2026-02-20T15:24:40Z", "labels": ["enhancement"]},
    {"number": 66, "title": "Unable to Deploy the App to Org", "state": "closed", "created_at": "2026-03-15T12:01:48Z", "labels": ["bug"]},
    {"number": 74, "title": "Replace list[object] variables with specific primitive list types", "state": "closed", "created_at": "2026-04-21T17:05:58Z", "labels": ["enhancement"]},
    {"number": 41, "title": "The deployment of recipes fail in latest sandbox due to missing default_agent_user", "state": "closed", "created_at": "2026-01-09T23:20:27Z", "labels": ["bug"]}
  ]}
</pre>
<p><span style="font-weight: 400">The agent receives ~2,588 chars instead of 38,693, which is a </span><b><i>93%</i></b><span style="font-weight: 400"> reduction. That&#8217;s with the API already doing its job: the right query, scoped to the right GitHub repository. MCP+ strips the structural noise, leaving just what&#8217;s needed: the number of deployment issues. Across a multi-turn session, where your agent makes ten or twenty tool calls, these reductions compound into meaningful token savings and a cleaner context window for reasoning.</span></p>
<h2><span style="font-weight: 400">When should you use MCP+?</span></h2>
<p><span style="font-weight: 400">MCP+ is highly effective in scenarios where your agent workflows encounter the following patterns:</span></p>
<ul>
<li style="font-weight: 400"><b>Tool outputs regularly exceed 2,000 tokens:</b><span style="font-weight: 400"> Search APIs and data retrieval tools routinely return massive payloads where only a small fraction is relevant to the immediate task.</span></li>
<li style="font-weight: 400"><b>Your agent only needs specific data points from verbose responses:</b><span style="font-weight: 400"> For example, this could be pulling a single price, a specific error code, or a date out of an entire system log or documentation page.</span></li>
<li style="font-weight: 400"><b>You are working heavily with structured data:</b><span style="font-weight: 400"> Payloads formatted in JSON, HTML, XML, or tables are where the code-generation method shines, delivering deterministic extraction precision.</span></li>
<li style="font-weight: 400"><b>Token costs or context window limits are a real constraint:</b><span style="font-weight: 400"> MCP+ prioritizes keeping your primary agent&#8217;s context window clean for actual reasoning rather than hoarding raw tool payloads.</span></li>
<li style="font-weight: 400"><b>Your agent makes multiple tool calls per session:</b><span style="font-weight: 400"> Even a savings of just 10-15% per turn compounds across a ten- or twenty-turn conversation. Over hundreds of active sessions, that compounding effect completely transforms the long-term economics of your production architecture.</span></li>
</ul>
<p><span style="font-weight: 400">Conversely, MCP+ will deliver minimal value or introduce unnecessary overhead in workflows that match the following patterns:</span></p>
<ul>
<li style="font-weight: 400"><b>Tool outputs are already concise:</b><span style="font-weight: 400"> If your tools return under 2,000 tokens, the post-processing overhead exceeds the savings.</span></li>
<li style="font-weight: 400"><b>Your agent genuinely requires the full, unedited payload:</b><span style="font-weight: 400"> If your primary agent&#8217;s explicit task is to perform an exhaustive, line-by-line analysis, a comprehensive summary, or a direct effort to compare and contrast details across a massive text block, filtering the data beforehand can be counterproductive.</span></li>
<li style="font-weight: 400"><b>Sub-second latency is a hard requirement:</b><span style="font-weight: 400"> Post-processing introduces at least one additional LLM round-trip into the tool lifecycle, and applications that require instantaneous, sub-second responses should opt to pass the raw payload directly to the agent.</span></li>
</ul>
<h2><span style="font-weight: 400">Getting started with MCP+</span></h2>
<p><span style="font-weight: 400">MCP+ is open source under the </span><a href="https://github.com/SalesforceAIResearch/MCP-Universe"><span style="font-weight: 400">MCP-Universe repository</span></a><span style="font-weight: 400">. Because its built-in threshold gating automatically manages when to optimize and when to step aside, you can seamlessly wrap your entire MCP client configuration without worrying about manual performance profiling. Install it today to keep your agent’s context window clean, predictable, and focused entirely on reasoning. You just need an API key from your chosen model.</span></p>
<p><span style="font-weight: 400">MCP+ wraps both local stdio-based servers and remote HTTP/SSE servers. For stdio servers, it intercepts the stream between your agent and the upstream process. For remote servers, including hosted endpoints like GitHub&#8217;s https://api.githubcopilot.com/mcp/, you can provide the URL directly with optional auth headers, and MCP+ will abstract away the HTTP communication seamlessly. </span></p>
<p><span style="font-weight: 400">Regardless of which server type you are running, deployment takes only a few minutes. To configure the proxy layer for your environment and start optimizing your live tool workflows, follow these steps:</span></p>
<h3><span style="font-weight: 400">Step 1: Install</span></h3>
<pre language="sh">pip install mcpuniverse
</pre>
<h3><span style="font-weight: 400">Step 2: Set your post-processing LLM key</span></h3>
<pre language="sh">export OPENAI_API_KEY="sk-..."
# or GEMINI_API_KEY, ANTHROPIC_API_KEY
</pre>
<h3><span style="font-weight: 400">Step 3: Build your MCP+ config</span></h3>
<p><span style="font-weight: 400">Point the CLI at your existing MCP configuration.</span></p>
<pre language="sh">mcp-build-plus --mcp-config path/to/your/mcp.json
</pre>
<p><span>That&#8217;s it. Your existing MCP servers are now wrapped — no application code changes required. Any agent that connects will see </span><code>expected_info</code><span> as a parameter on every tool, and large responses will be filtered automatically with MCP servers that you specify.</span></p>
<p><span style="font-weight: 400">The CLI also accepts fine-tuning options, such as:</span></p>
<p><strong>TABLE HERE</strong></p>
<p><span style="font-weight: 400">For example, here’s how to wrap only your Salesforce DX MCP server using Google’s Gemini Flash 2.5 as the post-processor with a 1,000-token threshold:</span></p>
<pre language="sh">mcp-build-plus --mcp-config mcp.json \
  --llm-provider gemini \
  --llm-model gemini-2.5-flash \
  --token-threshold 1000 \
  --servers salesforce-dx-mcp
</pre>
<p><span>The CLI creates a </span><code>&lt;server-name&gt;-plus</code><span> entry in your MCP config that runs a Python process via stdio. Your IDE connects to this virtual proxy, which mirrors all upstream tool schemas with </span><code>expected_info</code><span> injected and routes large responses through the post-processor. The original server entry remains untouched.</span></p>
<h2><span style="font-weight: 400">Programmatic usage of MCP+</span></h2>
<p><span style="font-weight: 400">The CLI handles most use cases, but if you need to integrate into an existing Python pipeline, you can also configure MCP+ programmatically. Here’s how to code the GitHub example above:</span></p>
<pre language="python">from mcpuniverse.extensions.mcpplus.wrapper import MCPWrapperManager, WrapperConfig
from mcpuniverse.llm import OpenAIModel

wrapper_config = WrapperConfig(
    enabled=True,
    token_threshold=2000,
    max_iterations=3
)

manager = MCPWrapperManager(
    config={
        "github": {
            "stdio": {
                "command": "./github-mcp-server",
                "args": ["stdio"]
            },
            "env": {"GITHUB_PERSONAL_ACCESS_TOKEN": os.environ["GITHUB_TOKEN"]}
        }
    },
    wrapper_config=wrapper_config
 )

llm = OpenAIModel(config={
    "model_name": "gpt-5-mini",
    "api_key": os.environ["OPENAI_API_KEY"]
})
manager.set_llm(llm)

client = await manager.build_client("github")
result = await client.execute_tool(
    tool_name="search_issues",
    arguments={
        "query": "deploy",
        "owner": "trailheadapps",
        "repo": "agent-script-recipes",
        "expected_info": "How many issues in the last year have had issues with deployment"
    }
)
</pre>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">GitHub repository: </span><a href="https://github.com/SalesforceAIResearch/MCP-Universe/tree/main/mcpuniverse/extensions/mcpplus"><span style="font-weight: 400">MCP Universe</span></a><span style="font-weight: 400"> </span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><a href="https://mcp-plus.github.io/"><span style="font-weight: 400">MCP+ home page</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><a href="https://docs.anthropic.com/en/docs/build-with-claude/token-counting"><span style="font-weight: 400">Token Counting</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><a href="https://docs.anthropic.com/en/docs/build-with-claude/context-windows"><span style="font-weight: 400">Context Windows</span></a></li>
</ul>
<h2><span style="font-weight: 400">About the authors</span></h2>
<p><b>Prathyusha Jwalapuram</b><span style="font-weight: 400"> is an Applied Scientist with the Salesforce AI Research team specializing in code agents. Her work focuses on pushing the boundaries of agentic research and optimizing Apex code generation. She developed MCP+ to bridge the gap between powerful tool-calling protocols and the practical constraints of token costs and context window management in production environments.</span></p>
<p><b>Dave Norris</b><span style="font-weight: 400"> is a Developer Advocate at Salesforce. He’s passionate about making technical subjects broadly accessible to a diverse audience. Dave has been with Salesforce for over a decade, has over 40 Salesforce and MuleSoft certifications, and became a Salesforce Certified Technical Architect in 2013.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/get-started-with-precision-context-management-using-mcp">Get Started with Precision Context Management Using MCP+</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/get-started-with-precision-context-management-using-mcp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206717</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710110853/DoubleHeadshot-5-e1783706954887.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710110853/DoubleHeadshot-5-e1783706954887.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Build with React on Salesforce: Multi-Framework Is Now GA</title>
		<link>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga#respond</comments>
		<pubDate>Thu, 16 Jul 2026 15:00:01 +0000</pubDate>
		<dc:creator><![CDATA[Charles Watkins]]></dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Headless 360]]></category>
		<category><![CDATA[Salesforce Releases]]></category>
		<category><![CDATA[developer experience]]></category>
		<category><![CDATA[ga]]></category>
		<category><![CDATA[General Availability]]></category>
		<category><![CDATA[GraphQL]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Multi-Framework]]></category>
		<category><![CDATA[react]]></category>
		<category><![CDATA[SDK]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206730</guid>
		<description><![CDATA[<p>Ship production-ready React apps natively on Salesforce &mdash; with authentication, security, and governance built in. Here's what changed in Multi-Framework since beta, and how to migrate.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga">Build with React on Salesforce: Multi-Framework Is Now GA</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="https://developer.salesforce.com/docs/platform/multiframework/guide"><span style="font-weight: 400">Salesforce Multi-Framework</span></a><span style="font-weight: 400"> is a framework-agnostic runtime on the Headless 360 Platform. Build React apps natively on Salesforce, query records with GraphQL, invoke Apex, and read user context through the UI APIs — no authentication or token management required. You get Salesforce&#8217;s security and governance model, plus React&#8217;s ecosystem, in one runtime.</span></p>
<p><a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework"><span style="font-weight: 400">Launched in open beta earlier this year</span></a><span style="font-weight: 400">, Salesforce Multi-Framework is now generally available. That means it&#8217;s production-ready, supported for business-critical workloads, and already enabled in orgs running on <a href="https://help.salesforce.com/s/articleView?language=en_US&amp;id=000388902&amp;type=1">Hyperforce</a>.<br />
</span></p>
<h2><span style="font-weight: 400">What&#8217;s new in the Salesforce Multi-Framework GA release</span></h2>
<p><span style="font-weight: 400">Here&#8217;s what has changed since the beta release:</span></p>
<ul>
<li><b>Production org support:</b> You can deploy to production orgs, scratch orgs, Developer Edition orgs, and sandboxes</li>
<li><b>Salesforce App domain:</b> Multi-Framework employee-facing apps run on the new <code>salesforce.app</code> domain, a dedicated origin that provides hard security boundaries through the browser&#8217;s native Same Origin Policy</li>
<li><b>Data SDK updates:</b> The Data SDK is now generally available with updated interfaces and APIs for querying Salesforce data with GraphQL</li>
<li><b><code>CustomApplication</code></b><b> target:</b> The beta&#8217;s <code>AppLauncher</code> target has been deprecated in favor of <code>CustomApplication</code> for employee-facing apps</li>
</ul>
<h3><span style="font-weight: 400">Deploy to production, sandbox, and scratch orgs</span></h3>
<p>Multi-Framework is now available on all Hyperforce orgs — production, sandbox, developer edition, and scratch — on the Summer ’26 release or later. The old <code>UiBundleSettings</code> scratch configuration setting has been deprecated.</p>
<p><span style="font-weight: 400">You can confirm your org has Salesforce Multi-Framework support by navigating to </span><b>React Development with Salesforce Multi-Framework</b><span style="font-weight: 400"> in Salesforce Setup. Enabled orgs show an &#8220;About Salesforce Multi-Framework&#8221; message with the &#8220;Enable Salesforce App Domain&#8221; toggle on.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206739" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260714154413/Salesforce-Multi-Framework-confirmation-screen-in-Salesforce-Setup-e1784069065472.png?w=1000" class="postimages" width="1000" height="491" alt="Salesforce Multi-Framework confirmation screen in Salesforce Setup" />
			  </span>
			</p>
<h3><span style="font-weight: 400">The new </span><span style="font-weight: 400"><code>salesforce.app</code> domain</span></h3>
<p>The <code>salesforce.app</code> domain is a dedicated web origin for Multi-Framework employee-facing apps. Your app&#8217;s URL follows the pattern <code>https://&lt;org&gt;--&lt;namespace&gt;.&lt;instance&gt;.my.salesforce.app/app/c__&lt;bundleName&gt;</code> — for example, <code>https://acme-corp-dev-ed--c.scratch.my.salesforce.app/app/c__myReactApp</code>. Each app runs on its own origin, so the browser&#8217;s Same Origin Policy enforces isolation natively. One app can&#8217;t read another&#8217;s cookies or storage, which means there&#8217;s no need for proprietary sandboxing.</p>
<h3><span style="font-weight: 400">Data SDK is GA (with a breaking API change)</span></h3>
<p>The Data SDK (<code>@salesforce/platform-sdk</code>) is a client library that lets React apps query and mutate Salesforce records with GraphQL. It now ships under a new package name and a clearer API surface. Your GraphQL queries and mutations are unchanged, but the client library that wraps them is different.</p>
<p>Queries and mutations are no longer funneled through a single generic <code>graphql()</code> method. You now call <code>.query()</code> for reads and <code>.mutate()</code> for writes, and the parameter key matches the operation type.</p>
<p>The response typing is also stricter: <code>result.data</code> is now modeled as potentially undefined, so you&#8217;ll want to optional-chain through it (<code>result?.data?.uiapi</code>) rather than assuming it&#8217;s always present.</p>
<p><b>Before (beta):</b></p>
<pre language="typescript">import { createDataSDK, gql } from '@salesforce/sdk-data';

const sdk = await createDataSDK();
// Queries and mutations both used .graphql() with a `query` key
const result = await sdk.graphql?.&lt;QueryResponse&gt;({ query: MY_QUERY });
const mutationResult = await sdk.graphql?.&lt;MutationResponse&gt;({
  query: MY_MUTATION,
  variables: { input },
});

// result.data was assumed present
const edges = result?.data.uiapi?.query?.Account?.edges;
</pre>
<p><b>After (GA):</b></p>
<pre language="typescript">import { createDataSDK, gql } from '@salesforce/platform-sdk';

const sdk = await createDataSDK();
// Reads use .query() with a `query` key
const result = await sdk.graphql?.query&lt;QueryResponse&gt;({ query: MY_QUERY });
// Writes use .mutate() with a `mutation` key
const mutationResult = await sdk.graphql?.mutate&lt;MutationResponse&gt;({
  mutation: MY_MUTATION,
  variables: { input },
});

// result.data is now potentially undefined — optional-chain through it
const edges = result?.data?.uiapi?.query?.Account?.edges;
</pre>
<h3><span style="font-weight: 400"><code>UIBundle</code> </span><span style="font-weight: 400">metadata changes</span></h3>
<p>Multi-Framework apps are now wired into the platform through Custom Application metadata rather than rendering directly from the App Launcher. The <code>&lt;target&gt;</code> element in <code>.uibundle-meta.xml</code> reflects the change: for employee apps, the beta&#8217;s <code>AppLauncher</code> value has been deprecated in favor of <code>CustomApplication</code>. The <code>Experience</code> target for customer-facing apps remains unchanged.</p>
<p>If you used <code>AppLauncher</code> during beta, update it to <code>CustomApplication</code>.</p>
<pre class="wp-block-code language-xml">&lt;UIBundle xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;masterLabel&gt;My App&lt;/masterLabel&gt;
    &lt;description&gt;A React app on Salesforce.&lt;/description&gt;
    &lt;isActive&gt;true&lt;/isActive&gt;
    &lt;version&gt;1&lt;/version&gt;
    &lt;target&gt;CustomApplication&lt;/target&gt;
&lt;/UIBundle&gt;</pre>
<p><span style="font-weight: 400">To make the bundle accessible, you also need a Custom Application that references it. The Custom Application metadata ties your UI Bundle to the App Launcher.</span></p>
<pre class="wp-block-code language-xml">&lt;CustomApplication xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;label&gt;My React App&lt;/label&gt;
    &lt;navType&gt;Standard&lt;/navType&gt;
    &lt;uiBundle&gt;c__myReactApp&lt;/uiBundle&gt;
    &lt;uiType&gt;Lightning&lt;/uiType&gt;
    &lt;formFactors&gt;Large&lt;/formFactors&gt;
&lt;/CustomApplication&gt;</pre>
<p><span style="font-weight: 400">Then grant visibility to the application through a permission set.</span></p>
<pre class="wp-block-code language-xml">&lt;PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata"&gt;
    &lt;applicationVisibilities&gt;
        &lt;application&gt;myReactApp&lt;/application&gt;
        &lt;visible&gt;true&lt;/visible&gt;
    &lt;/applicationVisibilities&gt;
    &lt;label&gt;My React App Access&lt;/label&gt;
    &lt;hasActivationRequired&gt;false&lt;/hasActivationRequired&gt;
&lt;/PermissionSet&gt;</pre>
<h2><span style="font-weight: 400">Migrating from beta: The breaking changes</span></h2>
<p><span style="font-weight: 400">If you built on the beta version of Salesforce Multi-Framework, be sure to make these five changes before deploying on GA:</span></p>
<ol>
<li>Update your import from <code>@salesforce/sdk-data</code> to <code>@salesforce/platform-sdk</code>.</li>
<li>Split <code>graphql()</code> calls into <code>.query()</code> (reads) and <code>.mutate()</code> (writes).</li>
<li>Optional-chain through <code>result?.data</code> — it can now be undefined.</li>
<li>Replace <code>&lt;target&gt;AppLauncher&lt;/target&gt;</code> with <code>&lt;target&gt;CustomApplication&lt;/target&gt;</code> in your <code>.uibundle-meta.xml</code>, and add a Custom Application metadata file with a <code>&lt;uiBundle&gt;</code> reference plus a permission set granting visibility.</li>
<li>Remove the deprecated <code>UiBundleSettings</code> scratch config — it&#8217;s no longer needed.</li>
</ol>
<h2><span style="font-weight: 400">What&#8217;s next on the Multi-Framework roadmap</span></h2>
<p><span style="font-weight: 400">Here&#8217;s what we’re building next:</span></p>
<ul>
<li style="font-weight: 400"><b>Microfrontends:</b><span style="font-weight: 400"> Embed externally hosted React components in Lightning alongside Lightning web components and pass events between them</span></li>
<li style="font-weight: 400"><b>Angular support:</b><span style="font-weight: 400"> We&#8217;re bringing additional framework support starting with Angular</span></li>
<li style="font-weight: 400"><b>Localization:</b><span style="font-weight: 400"> Adapt your Multi-Framework components to your users across languages, locales, and timezones using Translation Workbench or metadata</span></li>
<li style="font-weight: 400"><b>Managed packages:</b><span style="font-weight: 400"> Build, test, distribute, and deploy Multi-Framework applications as managed packages</span></li>
<li style="font-weight: 400"><b>App management: </b><span style="font-weight: 400">View and manage basic app details — name, description, URL — from App Manager</span></li>
</ul>
<p><span style="font-weight: 400">Check back with the Salesforce Developer’s blog for updates and news as these features are released.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2026/04/build-with-react-run-on-salesforce-introducing-salesforce-multi-framework"><span style="font-weight: 400">Introducing Salesforce Multi-Framework</span></a><span style="font-weight: 400">: Beta announcement with detailed walkthrough</span></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/multiframework/guide/"><span style="font-weight: 400">Multi-Framework documentation</span></a><span style="font-weight: 400">: Setup guide, API reference, and best practices</span></li>
<li style="font-weight: 400"><a href="https://github.com/trailheadapps/multiframework-recipes"><span style="font-weight: 400">Salesforce Multi-Framework Recipes</span></a><span style="font-weight: 400">: 20+ code samples for React on Salesforce</span></li>
</ul>
<h2><span style="font-weight: 400">About the authors</span></h2>
<p><b>Alice Oh</b><span style="font-weight: 400"> is a Director of Product at Salesforce building foundational products that enable flexible and extensible ways to create, vibe code, and surface apps across the Salesforce ecosystem. In her free time, she bikes around the Bay Area in search of the flakiest croissants. Follow and connect with her on </span><a href="https://www.linkedin.com/in/helloaliceoh/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><b>Charles Watkins</b><span style="font-weight: 400"> is a self-taught software developer and Lead Developer Advocate at Salesforce. He spends his time blogging, crafting code samples, and finding new places to hike in the Pacific Northwest. You can follow him on </span><a href="https://www.linkedin.com/in/wcharlesw/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga">Build with React on Salesforce: Multi-Framework Is Now GA</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/build-with-react-on-salesforce-multi-framework-is-now-ga/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206730</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260715081816/DoubleHeadshot-6-1-e1784128709363.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260715081816/DoubleHeadshot-6-1-e1784128709363.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Connect Slack to Salesforce with Hosted MCP Servers</title>
		<link>https://developer.salesforce.com/blogs/2026/07/connect-slack-to-salesforce-with-hosted-mcp-servers</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/connect-slack-to-salesforce-with-hosted-mcp-servers#respond</comments>
		<pubDate>Wed, 15 Jul 2026 15:00:37 +0000</pubDate>
		<dc:creator><![CDATA[Philippe Ozil]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Data 360]]></category>
		<category><![CDATA[Headless 360]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Model context protocol]]></category>
		<category><![CDATA[Salesforce Hosted MCP Servers]]></category>
		<category><![CDATA[Salesforce Platform]]></category>
		<category><![CDATA[Slackbot]]></category>
		<category><![CDATA[tableau]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206704</guid>
		<description><![CDATA[<p>Discover how Headless 360 brings Salesforce Hosted MCP Servers to Slackbot, giving your teams a single, secure conversational interface to access CRM data, execute flows, and query Tableau.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/connect-slack-to-salesforce-with-hosted-mcp-servers">Connect Slack to Salesforce with Hosted MCP Servers</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Sales reps need to regularly update their pipeline, check their Tableau quota attainment metrics, and prep their account team for customer calls. As a developer, you&#8217;d have to build a custom app to support these workflows. But with Headless 360, your users can now access Salesforce Platform data and processes through a single Slack conversation, eliminating the need to ever open a Salesforce tab.</span></p>
<p><span style="font-weight: 400">This is all made possible with </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/overview"><span style="font-weight: 400">Salesforce Hosted MCP Servers</span></a><span style="font-weight: 400"> connected to </span><a href="https://slack.com/help/articles/202026038-How-to-use-Slackbot"><span style="font-weight: 400">Slackbot</span></a><span style="font-weight: 400">, your AI teammate built right into Slack. It’s the engagement layer where your teams, your AI agents, and everything you&#8217;ve built across the Salesforce ecosystem work together in one place.</span></p>
<p><span style="font-weight: 400">In this post, we&#8217;ll explore why Slack is the best conversational interface for Salesforce, how Salesforce Hosted MCP Servers work within it, how to connect them with Slackbot, and what becomes possible when the Salesforce Platform meets the work operating system where your organization runs.</span></p>
<h2><span style="font-weight: 400">Slack: The engagement layer for the agentic enterprise</span></h2>
<p><span style="font-weight: 400">Slack is the work OS: a shared surface where the people, agents, and data that power your organization come together to move work forward. Through natively-built-in Salesforce Platform features and connected MCP servers, it’s where the full Salesforce ecosystem — Agentforce 360, Data 360, Tableau — becomes accessible through natural conversation, right where teams are already collaborating.</span></p>
<p><span style="font-weight: 400">The screenshot below shows a Salesforce records list and Tableau insights inside of Slack’s desktop app, and the related conversation between a user and Slackbot on the Slack mobile app.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206705" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102208/Screenshot-of-Slack-desktop-and-mobile-apps-with-Salesforce-data-integrated-e1783704142975.png?w=1000" class="postimages" width="1000" height="562" alt="Screenshot of Slack desktop and mobile apps with Salesforce data integrated." />
			  </span>
			</p>
<p><span style="font-weight: 400">At the center of that experience is Slackbot: a single AI interface to every conversation, file, channel, and app across your organization. What Slackbot surfaces can be shared, discussed, and acted on by the whole team. And because Slackbot can synthesize your data with the conversations plus your connected tools, it can take the context that builds as you work with your team in Slack and bring it back into your records simply as a natural byproduct of work.</span></p>
<p><span style="font-weight: 400">That&#8217;s what makes Slack uniquely powerful. And because your full business context is now available via MCP to the </span><a href="https://slack.dev/slackbot-mcp-client/"><span style="font-weight: 400">Slackbot MCP client</span></a><span style="font-weight: 400">, tools that once worked in parallel can finally work together, all through a single conversation.</span></p>
<h2><span style="font-weight: 400">Salesforce Hosted MCP Servers: A quick refresher</span></h2>
<p><span style="font-weight: 400">Model Context Protocol (MCP) is an </span><a href="https://modelcontextprotocol.io/"><span style="font-weight: 400">open standard</span></a><span style="font-weight: 400"> that lets AI agents interact with external tools and data sources from various vendors. Salesforce Hosted MCP Servers are our generally available implementation of this standard, giving any MCP-compatible client secure, governed access to run queries, modify records, and execute actions directly from their Salesforce org, without requiring a separate login or custom integration code.</span></p>
<p><span style="font-weight: 400">Salesforce has shipped a set of standard hosted MCP servers out of the box: </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/references/reference/servers-reference.html"><span style="font-weight: 400">Salesforce servers</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/references/reference/tableau-next.html"><span style="font-weight: 400">Tableau</span></a><span style="font-weight: 400">, and </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/references/reference/data-cloud-sql.html"><span style="font-weight: 400">Data 360</span></a><span style="font-weight: 400">. Beyond the standard servers, developers can expose their own org&#8217;s capabilities by building </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/custom-servers.html"><span style="font-weight: 400">custom MCP servers</span></a><span style="font-weight: 400"> with tools — Apex actions, Lightning Flows, Apex REST endpoints, APIs from the API Catalog, Prompt Builder templates, and Agentforce agents — without writing new integration code.</span></p>
<p><span style="font-weight: 400">For a deeper dive on Salesforce Hosted MCP Servers themselves, check out the </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/overview"><span style="font-weight: 400">Salesforce Hosted MCP Servers documentation</span></a><span style="font-weight: 400">.</span></p>
<h2><span style="font-weight: 400">Configuring Slack to work with Salesforce Hosted MCP Servers</span></h2>
<p><span style="font-weight: 400">Setting up Slackbot to work with Salesforce Hosted MCP Servers is simple; no URLs to copy, no OAuth configurations to wire up manually, no custom code required. The entire setup lives in the Slack Admin UI and takes just a few steps.</span></p>
<h3><span style="font-weight: 400">Prerequisites</span></h3>
<p><span style="font-weight: 400">Before getting started, you&#8217;ll need:</span></p>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">A paid Slack plan (Business+, Enterprise Select, Enterprise Grid, or Enterprise+) with access to Slackbot and Salesforce</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">At least one Salesforce org already connected to Slack</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Workspace Owner/Admin or Org Owner/Admin access</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Salesforce Administrator access to the connected org</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">One or more a</span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/activate-mcp-servers.html"><span style="font-weight: 400">ctive Salesforce Hosted MCP servers</span></a></li>
</ul>
<p><span style="font-weight: 400">If you haven&#8217;t connected Salesforce to Slack yet, follow the steps in the </span><a href="https://slack.com/help/articles/30754346665747-Connect-Salesforce-and-Slack"><span style="font-weight: 400">Connect Salesforce and Slack</span></a><span style="font-weight: 400"> help article first. Once that connection is in place, user authentication is handled automatically. Slackbot uses your existing Slack-Salesforce account mapping, so members don&#8217;t need a separate login.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206706" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102324/Screenshot-of-a-Slack-organization-configuration-showing-a-connected-Salesforce-org-e1783704216319.png?w=1000" class="postimages" width="1000" height="630" alt="Screenshot of a Slack organization configuration showing a connected Salesforce org" />
			  </span>
			</p>
<p><span style="font-weight: 400">Note: Don’t have a Slack workspace yet? Creating one is simple: </span><a href="https://help.salesforce.com/s/articleView?id=slack.slack_salesforce_setup.htm&amp;type=5"><span style="font-weight: 400">follow these steps</span></a><span style="font-weight: 400"> to get started.</span></p>
<h3><span style="font-weight: 400">Step 1: Open MCP server settings</span></h3>
<p><span style="font-weight: 400">The path to MCP server configuration depends on your plan:</span></p>
<p><b>For Business+ and Enterprise Select:</b></p>
<p><span style="font-weight: 400">Admin → Workspace settings → Salesforce → Salesforce MCP Servers</span></p>
<p><b>For Enterprise Grid and Enterprise+:</b></p>
<p><span style="font-weight: 400">Organization name → Tools &amp; settings → Organization settings → Salesforce → MCP Servers</span></p>
<h3><span style="font-weight: 400">Step 2: Add a Salesforce Hosted MCP Server</span></h3>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>Add MCP Server</b></li>
<li style="font-weight: 400"><span style="font-weight: 400">Choose the server you want to add from the list of active Salesforce Hosted MCP Servers (e.g., </span><i><span style="font-weight: 400">SObject All</span></i><span style="font-weight: 400">, </span><i><span style="font-weight: 400">Data 360</span></i><span style="font-weight: 400">, </span><i><span style="font-weight: 400">custom servers</span></i><span style="font-weight: 400"><span style="font-weight: 400">)<br />
</span></span>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206708" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102452/Screenshot-showing-a-list-of-available-Salesforce-Hosted-MCP-Servers-that-can-be-added-in-Slack-e1783704310584.png?w=1000" class="postimages" width="1000" height="637" alt="Screenshot showing a list of available Salesforce Hosted MCP Servers that can be added in Slack" />
			  </span>
			</li>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>Add</b><span style="font-weight: 400">, then review the tools the server exposes</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>Next</b></li>
</ol>
<p><span style="font-weight: 400">If you&#8217;re on Enterprise Grid or Enterprise+, you&#8217;ll also select which workspaces the server will be available in before proceeding.</span></p>
<h3><span style="font-weight: 400">Step 3: Configure access</span></h3>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Choose who in your organization can use this MCP server via Slackbot:</span>
<ul>
<li style="font-weight: 400"><b>Everyone</b><span style="font-weight: 400">: All members with access to Slackbot</span></li>
<li style="font-weight: 400"><b>Specific people and group</b><span style="font-weight: 400">: Fine-grained control by team or individual</span></li>
<li style="font-weight: 400"><b>No one</b><span style="font-weight: 400"><span style="font-weight: 400">: Install now, enable access later<br />
</span></span>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206709" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102555/Screenshot-of-a-dialog-showing-how-to-control-MCP-server-member-access-in-Slack.png?w=613" class="postimages" width="613" height="293" alt="Screenshot of a dialog showing how to control MCP server member access in Slack" />
			  </span>
			</li>
</ul>
</li>
<li style="font-weight: 400"><span style="font-weight: 400">Click </span><b>Connect</b><span style="font-weight: 400"> to finish.</span></li>
</ol>
<p><span style="font-weight: 400">The MCP server is now active and Slackbot can use it on behalf of anyone with access.</span></p>
<h2><span style="font-weight: 400">How Salesforce permissions apply to Slackbot MCP calls</span></h2>
<p><span style="font-weight: 400">Salesforce MCP servers in Slackbot are permission-aware by design. Every action Slackbot takes respects the standard </span><a href="https://developer.salesforce.com/blogs/developer-relations/2017/04/salesforce-data-security-model-explained-visually"><span style="font-weight: 400">Salesforce security model</span></a><span style="font-weight: 400">: field-level security, object permissions, and sharing rules are enforced per user, per request. Users only see and act on what they&#8217;re allowed to in Salesforce. Slack admins can adjust access, update permissions, or remove a server entirely from the Slack organization admin UI at any time.</span></p>
<p>Security is also handled at the Slack user level with prompts to prevent accidental use of MCP tools. The screenshot below shows Slackbot prompting the user to confirm if it can use the <code>CreateAccountSyncMeetingTask</code> custom MCP tool.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206710" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102633/Screenshot-of-Slackbot-prompting-the-user-to-confirm-use-of-an-MCP-tool.png?w=817" class="postimages" width="817" height="436" alt="Screenshot of Slackbot prompting the user to confirm use of an MCP tool" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Slackbot and Salesforce Hosted MCP Servers in action</span></h2>
<p><span style="font-weight: 400">Once your MCP servers are configured, every member of your team authenticated across Slack and Salesforce gains natural language access to your Salesforce org based on their permissions — directly in the place where they&#8217;re already working. Here&#8217;s what that can look like in practice. We’ll use Northern Trail Outfitters (a fictitious outdoors gear vendor) for the following examples.</span></p>
<h3><span style="font-weight: 400">Triggering a custom business process</span></h3>
<p><span style="font-weight: 400">A Northern Trail Outfitters sales rep has a call in an hour with one of their customers, Alpine Trekkers. Instead of opening Salesforce, navigating to the Account page, cross-referencing the opportunities and cases to prepare for the call, they just ask Slackbot:</span></p>
<p><i><span style="font-weight: 400">&#8220;Run a health check on the Alpine Trekkers account&#8221;</span></i></p>
<p><span style="font-weight: 400">Slackbot uses a tool from the standard </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/sobject-all.html"><span style="font-weight: 400">SObject All MCP server</span></a><span style="font-weight: 400"> to identify the account based on its name. It then calls the custom health check flow tool. The flow retrieves additional data from related cases, opportunities and activities to calculate a health score thanks to precise business rules.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206711" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102712/Screenshot-showing-Slackbot-calling-a-custom-MCP-tool-that-runs-an-account-health-check.png?w=712" class="postimages" width="712" height="1000" alt="Screenshot showing Slackbot calling a custom MCP tool that runs an account health check." />
			  </span>
			</p>
<p><span style="font-weight: 400">The health check indicates that the account is at risk because of an unresolved critical support case.</span></p>
<h3><span style="font-weight: 400">Prepping for a sales call</span></h3>
<p><span style="font-weight: 400">Once the sales rep reviews the Alpine Trekkers’ account health, they ask Slackbot to help plan for the customer meeting. Slackbot uses another custom tool to identify the meeting stakeholders (thanks to the Salesforce contacts related to the account) and logs the right information to prepare for the meeting. In the screenshot below, Slackbot calls a custom MCP tool that creates a task to set up an account sync meeting.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206712" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102758/Screenshot-of-Slackbot-calling-a-custom-MCP-tool-that-creates-a-task.png?w=948" class="postimages" width="948" height="181" alt="Screenshot of Slackbot calling a custom MCP tool that creates a task" />
			  </span>
			</p>
<h3><span style="font-weight: 400">Pipeline analysis with live Tableau data</span></h3>
<p><span style="font-weight: 400">Thanks to Slackbot’s help with the preparation, the customer meeting goes well and their concerns are addressed. The Alpine Trekkers account is no longer at risk.</span></p>
<p><span style="font-weight: 400">The Northern Trail Outfitters sales manager wants a current read on Q2 pipeline health. Rather than pulling up a Tableau dashboard separately, they ask directly Slackbot:</span></p>
<p><i><span style="font-weight: 400">&#8220;What does Tableau show for Q2 pipeline conversion rates by region?&#8221;</span></i></p>
<p><span style="font-weight: 400">With the </span><a href="https://tableau.github.io/tableau-mcp/docs/hosted-tableau-mcp"><span style="font-weight: 400">Tableau MCP server</span></a><span style="font-weight: 400"> connected, Slackbot queries the semantic layer — respecting row-level security — and returns a trusted, governed answer with visualizations, grounded in actual business metrics. The sales rep can share those insights with the team and hit the ground running, and the conversation about what to do happens right there, next to the data.</span></p>
<h2><b>Conclusion</b></h2>
<p><span style="font-weight: 400">This concludes our tour of how to connect Slackbot to Salesforce Hosted MCP servers. You saw why Slack is the engagement layer for the agentic enterprise and how Salesforce Hosted MCP servers let you run your business with agents thanks to Headless 360. We took a look at how to configure Slackbot to work with Salesforce Hosted MCP servers and saw practical examples of its benefits.</span></p>
<p><span style="font-weight: 400">It’s now your turn to connect Slackbot to your Salesforce org. Start with the </span><a href="https://slack.com/help/articles/52462858006675-Connect-Slackbot-to-Salesforce-with-MCP"><span style="font-weight: 400">Connect Slackbot to Salesforce with MCP</span></a><span style="font-weight: 400"> help article for the full setup guide.</span></p>
<h2><b>Resources</b></h2>
<ul>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><span style="font-weight: 400">Connect Salesforce and Slack</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><a href="https://slack.com/help/articles/52462858006675-Connect-Slackbot-to-Salesforce-with-MCP"><span style="font-weight: 400">Connect Slackbot to Salesforce with MCP</span></a></li>
<li style="font-weight: 400"><span style="font-weight: 400">Documentation: </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/overview"><span style="font-weight: 400">Salesforce Hosted MCP Servers</span></a></li>
</ul>
<h2><b>About the authors</b></h2>
<p><b>Ashley Mao</b><span style="font-weight: 400"> is a Senior Product Marketing Manager at Salesforce, where she leads product launches across Salesforce and Slack. She enjoys exploring what it means to work alongside agents as teammates, and what’s possible when data and dialogue come together.</span></p>
<p><b>Philippe Ozil</b><span style="font-weight: 400"> is a Principal Developer Advocate at Salesforce, where he focuses on the Salesforce Platform. He writes technical content and speaks frequently at conferences. He is a full-stack developer and enjoys working with APIs, DevOps, robotics, and VR projects. Follow him on </span><a href="https://x.com/PhilippeOzil"><span style="font-weight: 400">X</span></a><span style="font-weight: 400">, </span><a href="https://www.linkedin.com/in/philippeozil/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">, and </span><a href="https://bsky.app/profile/pozil.bsky.social"><span style="font-weight: 400">Bluesky</span></a><span style="font-weight: 400">, and check out his </span><a href="https://github.com/pozil"><span style="font-weight: 400">GitHub projects</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/connect-slack-to-salesforce-with-hosted-mcp-servers">Connect Slack to Salesforce with Hosted MCP Servers</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/connect-slack-to-salesforce-with-hosted-mcp-servers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206704</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102841/blog-SF-MCP-developer-hero-1000x563-1.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710102841/blog-SF-MCP-developer-hero-1000x563-1.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Announcing the Headless 360 MCP Server Beta</title>
		<link>https://developer.salesforce.com/blogs/2026/07/announcing-the-headless-360-mcp-server-beta</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/announcing-the-headless-360-mcp-server-beta#respond</comments>
		<pubDate>Tue, 14 Jul 2026 15:00:36 +0000</pubDate>
		<dc:creator><![CDATA[Tyson Read]]></dc:creator>
				<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Headless 360]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[Apex triggers]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Change Data Capture]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[Model context protocol]]></category>
		<category><![CDATA[Salesforce Hosted MCP Servers]]></category>
		<category><![CDATA[Setup operations]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206721</guid>
		<description><![CDATA[<p>The Headless 360 MCP Server (Beta) is a new surface that empowers headless clients to quickly discover and execute complex Salesforce setup and integration operations.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/announcing-the-headless-360-mcp-server-beta">Announcing the Headless 360 MCP Server Beta</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Agents are helping us move faster and expand what&#8217;s possible in our work. This kind of empowerment is what Salesforce is built for, and it&#8217;s why</span><a href="https://www.salesforce.com/news/stories/salesforce-headless-360-announcement/"> <span style="font-weight: 400">Headless 360</span></a><span style="font-weight: 400"> is bringing the full breadth of the platform’s capabilities to those agents. </span></p>
<p><span style="font-weight: 400">Today, we&#8217;re taking the next big step on that journey. The </span><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/headless-360-mcp.html"><span style="font-weight: 400">Salesforce Headless 360 MCP Server</span></a><span style="font-weight: 400"> is now available in Beta starting in early July. It builds on the</span><a href="https://developer.salesforce.com/blogs/2026/04/salesforce-hosted-mcp-servers-are-now-generally-available"> <span style="font-weight: 400">hosted MCP servers</span></a><span style="font-weight: 400"> that we made generally available in April, and it&#8217;s one surface that brings Salesforce to your MCP clients.</span></p>
<p><span style="font-weight: 400">In this blog post, we’ll walk you through what’s new and how to get started with the Headless 360 MCP Server (Beta).</span></p>
<h2><span style="font-weight: 400">Use only four tools, not four thousand</span></h2>
<p><span style="font-weight: 400">When we were designing the Headless 360 Server, we needed to come up with a way to bring the thousands of features that Salesforce has built to MCP clients. If we exposed each feature as a distinct MCP tool, a model would have to reason over thousands of tool descriptions and pick the right one. The risk there is that the model would burn a huge amount of context, tokens, and time before it could take action. It&#8217;s also a scale problem that gets harder as we add more features and more APIs in the future. </span></p>
<p><span style="font-weight: 400">So, the Headless 360 Server takes a different shape. It presents an agent with four tools, not thousands. Behind these tools we&#8217;ve put a continuously growing library of skills. The agent&#8217;s surface stays small and stable, and the action surface scales independently.</span></p>
<h2><span style="font-weight: 400">Explore the new tools: Discover, Describe, Dispatch, and Dispatch Read Only</span></h2>
<p><span style="font-weight: 400">The four tools in our Headless 360 Server map to how an agent moves through a request.</span></p>
<ul>
<li style="font-weight: 400"><b>Discover</b><span style="font-weight: 400">: Takes the agent&#8217;s interpretation of what you asked for and runs a semantic search across a vector index of every API and skill we&#8217;ve generated. It returns a ranked set of candidates, so agents spend less time and call fewer MCP tools trying to find what they need.</span></li>
<li style="font-weight: 400"><b>Describe</b><span style="font-weight: 400">: Pulls back the technical contract for a skill with APIs, parameters, dependencies, and the ordered steps. This tool helps an agent verify that the Discover tool is serving helpful results and details the steps an agent needs to take.</span></li>
<li style="font-weight: 400"><b>Dispatch</b><span style="font-weight: 400">: Invokes the chosen skill. It routes to the right endpoint and enforces the user access guards before anything runs.</span></li>
<li style="font-weight: 400"><b>Dispatch Read Only:</b><span style="font-weight: 400"> Runs read-only dispatch actions</span></li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206725" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710113449/An-image-of-the-Headless-360-MCP-Server-and-its-tools-in-Salesforce-Setup-e1783708503746.png?w=1000" class="postimages" width="1000" height="663" alt="An image of the Headless 360 MCP Server and its tools in Salesforce Setup" />
			  </span>
			</p>
<p><span style="font-weight: 400">You could ask your agent to &#8220;Plan an integration that sends events to AWS when Account records change.&#8221; Your agent can propose and build an integration, saving you the time you&#8217;d otherwise spend clicking through three Setup screens to configure Change Data Capture, a named credential, and the event relay.</span></p>
<p><span style="font-weight: 400">In this example, an MCP client will start by using the </span><b>Discover</b><span style="font-weight: 400"> tool to find the relevant skills for Change Data Capture, Named Credentials, and Event Relay. </span></p>
<p><span style="font-weight: 400">Once it’s found them, it’ll use the </span><b>Describe</b><span style="font-weight: 400"> tool to inspect the API calls it needs to make and the order in which they need to happen. In order to create an event relay, the agent needs to start by creating a named credential. </span></p>
<p><span style="font-weight: 400">Finally, once the agent knows what API calls need to be made, it executes those calls with the </span><b>Dispatch</b><span style="font-weight: 400"> tool. Of course, this same pattern extends beyond the work developers and admins do to the work that business users take on across Salesforce&#8217;s products.</span></p>
<h2><span style="font-weight: 400">Guardrails for MCP clients</span></h2>
<p>Agents are powerful, and it&#8217;s worth talking about the guardrails that are in place today to make sure your MCP clients keep out of trouble. This matters for business users on the Headless 360 MCP Server, and it matters more for admins and developers. Every Salesforce Hosted MCP transaction runs as the authenticated user, scoped through an external client app with the <code>mcp_api</code> scope. CRUD, FLS, sharing rules, profile permissions, and permission sets all apply. If you can&#8217;t do it in Salesforce, your agent can&#8217;t do it through the MCP server. The audit trail attributes actions to you.</p>
<p><span style="font-weight: 400">On top of the gating Salesforce that enforces, most MCP clients also allow you to set tool-level restrictions. If you want to verify the actions that your agent will take on your behalf, you can set your tool-level permissions to have the agent ask for your approval each time it runs a tool. This matters most for admins and developers, who carry wide-ranging permissions in their orgs and should be careful about the changes they and their agents take. As always, follow the best practice of making configuration changes in sandboxes and developer orgs before you take them to production.</span></p>
<h2><span style="font-weight: 400">Up-skilling agents with thousands of new skills</span></h2>
<p><span style="font-weight: 400">We’re launching this Beta with roughly 100 skills that will sit behind our MCP server. We&#8217;re also creating thousands of new skills that sit behind the Headless 360 MCP Server. </span></p>
<p><span style="font-weight: 400">At launch, the majority of these skills will be focused on Setup operations for admins, extending the kind of capabilities in Agentforce for Setup to headless MCP clients. During the Beta, the Headless 360 MCP Server will grow to encompass cloud-specific skills that represent the breadth of what business users can do with Salesforce, too. </span></p>
<p><span style="font-weight: 400">A few of the high-traffic tasks that your agent can handle in July include:</span></p>
<ul>
<li style="font-weight: 400"><b>Managing users:</b><span style="font-weight: 400"> Create, deactivate, freeze and unfreeze, reset or set passwords, assign permission sets and permission set licenses, this includes the full surface that a builder reaches for on the User detail page</span></li>
<li style="font-weight: 400"><b>Managing Apex triggers:</b><span style="font-weight: 400"> Read, write, and deploy Apex triggers</span></li>
<li style="font-weight: 400"><b>Building event-driven integrations:</b><span style="font-weight: 400"> Define platform events, manage Change Data Capture, and manage event relays</span></li>
<li style="font-weight: 400"><b>Creating named credentials:</b><span style="font-weight: 400"> Designate auth mechanisms, endpoints, and certificate handling</span></li>
</ul>
<p><span style="font-weight: 400">Unsurprisingly, there’s a lot of AI being used to generate the skills that back our Headless 360 MCP Server. As part of this project, we created an internal tool called the Headless 360 Factory that scans Salesforce Setup, identifies features that are missing API access, and then generates APIs and skills that agents can use via our MCP server. Feature teams across Salesforce are reviewing these skills now and bringing their own to make sure that all of Salesforce is represented in one MCP server.</span></p>
<h2><span style="font-weight: 400">Join the Beta</span></h2>
<p><span style="font-weight: 400">To join the Beta, go to Salesforce Setup, find the Salesforce Hosted MCP Servers section, look for Headless 360 in the list, and click Activate. We also want your feedback on this server.  Post questions, issues, and comments in our </span><a href="https://github.com/forcedotcom/mcp-hosted"><span style="font-weight: 400">github repo</span></a><span style="font-weight: 400"> for Salesforce Hosted MCP Servers. </span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206726" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260710113521/Screenshot-showing-opt-in-to-the-Headless-360-Server-Beta-e1783708535120.png?w=1000" class="postimages" width="1000" height="718" alt="Screenshot showing opt-in to the Headless 360 Server Beta" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/hosted-mcp-servers/guide/hosted-mcp-servers-overview.html"><span style="font-weight: 400">Salesforce Hosted MCP Servers Developer Guide</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/blogs/2026/04/salesforce-hosted-mcp-servers-are-now-generally-available"><span style="font-weight: 400">Salesforce Hosted MCP Servers GA Announcement</span></a></li>
<li style="font-weight: 400"><a href="https://github.com/forcedotcom/mcp-hosted"><span style="font-weight: 400">Salesforce Hosted MCP Servers Github Repo</span></a></li>
</ul>
<h2><span style="font-weight: 400">About the author</span></h2>
<p><b>Tyson Read</b><span style="font-weight: 400"> is a Senior Director of Product Management at Salesforce. He works on MCP and event-driven integrations.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/announcing-the-headless-360-mcp-server-beta">Announcing the Headless 360 MCP Server Beta</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/announcing-the-headless-360-mcp-server-beta/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206721</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710113047/Generic-C-5-e1783708262122.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260710113047/Generic-C-5-e1783708262122.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Introducing a New Connect REST API Experience</title>
		<link>https://developer.salesforce.com/blogs/2026/07/introducing-a-new-connect-rest-api-experience</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/introducing-a-new-connect-rest-api-experience#respond</comments>
		<pubDate>Thu, 09 Jul 2026 15:00:01 +0000</pubDate>
		<dc:creator><![CDATA[Ben Sklar]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[New Developments]]></category>
		<category><![CDATA[API Reference]]></category>
		<category><![CDATA[Connect REST API]]></category>
		<category><![CDATA[Developer Guide]]></category>
		<category><![CDATA[OpenAPI Specification]]></category>
		<category><![CDATA[Reference documentation]]></category>
		<category><![CDATA[REST API]]></category>
		<category><![CDATA[salesforce]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206688</guid>
		<description><![CDATA[<p>Introducing the new Connect REST API reference experience to help developers find details faster by bringing endpoints, request and response examples, and in-line versioning into one place.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/introducing-a-new-connect-rest-api-experience">Introducing a New Connect REST API Experience</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">The Connect REST API provides programmatic access to Salesforce features like B2B Commerce, CMS managed content, Experience Cloud sites, files, notifications, topics, and more. If you&#8217;ve built with this API, you’re likely familiar with the legacy version of its reference docs: one page for the resource, another for the request body, and another for the response body. That’s a lot of clicking and scrolling to answer a simple question like, &#8220;What do I send, and what comes back?&#8221;</span></p>
<p><span style="font-weight: 400">Starting July 2026, we’re introducing a single, unified reference page for the core </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-core"><span style="font-weight: 400">Connect REST API</span></a><span style="font-weight: 400"> and other related API families, including </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-agentforce"><span style="font-weight: 400">Agentforce</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-chatter"><span style="font-weight: 400">Chatter</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-chatter-feeds"><span style="font-weight: 400">Chatter Feeds</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-cms"><span style="font-weight: 400">CMS</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-commerce"><span style="font-weight: 400">Commerce</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-experience-cloud"><span style="font-weight: 400">Experience Cloud</span></a><span style="font-weight: 400">, </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-files"><span style="font-weight: 400">Files and Folders</span></a><span style="font-weight: 400">, and </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/connect-rest-api-personalization"><span style="font-weight: 400">Personalization</span></a><span style="font-weight: 400">. </span></p>
<p><span style="font-weight: 400">In this post, we&#8217;ll walk through what&#8217;s new, the benefits you&#8217;ll notice right away, and a few things that work differently than before.</span></p>
<h2><span style="font-weight: 400">The old way: Disconnected pages</span></h2>
<p><span style="font-weight: 400">In the previous documentation, the left navigation was a long tree of links, and you chose your API version from a dropdown at the top. Understanding one endpoint required you to assemble the picture from several disconnected pages. And for many people, that meant lots of open browser tabs.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206689" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155101/Screenshot-of-the-previous-Connect-REST-API-reference-landing-page--e1783551074220.png?w=1000" class="postimages" width="1000" height="625" alt="Screenshot of the previous Connect REST API reference landing page" />
			  </span>
			</p>
<p><span style="font-weight: 400">Request and response bodies were documented on standalone pages, separate from the resources that actually used them.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206701" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260709080542/Screenshot-of-the-previous-reference-showing-an-individual-topic-page-e1783609561288.png?w=1000" class="postimages" width="1000" height="625" alt="Screenshot of the previous reference showing an individual topic page." />
			  </span>
			</p>
<h2><span style="font-weight: 400">The new Connect REST API reference: One page, three columns</span></h2>
<p><span style="font-weight: 400">The </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api/references/"><span style="font-weight: 400">new API reference</span></a><span style="font-weight: 400"> brings everything together on a single page with a three-column layout. The left column lists only resources. The center column shows the selected resource. The right column shows request and response examples. Many elements are clickable, so you can expand and collapse details. You can drill down exactly as far as you need into complex objects without ever losing your spot.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206691" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155335/Screenshot-of-the-new-reference-with-three-columns-e1783551232746.png?w=1000" class="postimages" width="1000" height="625" alt="Screenshot of the new reference with three columns" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Key improvements</span></h2>
<p><span style="font-weight: 400">We rebuilt the reference around the way developers actually work. Here&#8217;s what stands out:</span></p>
<ul>
<li style="font-weight: 400"><b>Everything in context</b><span style="font-weight: 400">: The request you send and the response you get back now sit right beside the resource that uses them.</span></li>
<li style="font-weight: 400"><b>Extensive examples</b><span style="font-weight: 400">: The right-hand column shows request and response examples for the operation you&#8217;re viewing.</span></li>
<li style="font-weight: 400"><b>Searchability</b><span style="font-weight: 400">: You can use the search box in the left nav to filter down the number of endpoints. You can also use your browser’s </span><b>Find</b><span style="font-weight: 400"> command to locate any piece of text in the whole API reference and highlight every match at once.</span></li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206692" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155423/Screenshot-showing-search-results-highlighting-the-word-22reminder22--e1783551283240.png?w=1000" class="postimages" width="1000" height="625" alt="Screenshot showing search results highlighting the word reminder" />
			  </span>
			</p>
<h2><span style="font-weight: 400">Built on OpenAPI</span></h2>
<p><span style="font-weight: 400">The reference now follows the </span><a href="https://www.openapis.org/"><span style="font-weight: 400">OpenAPI Specification</span></a><span style="font-weight: 400"> (OAS), the industry standard for describing REST APIs. Beyond cleaner, more consistent structure, the move to OAS lets us improve the accuracy of the reference itself. And because it&#8217;s a standard spec, you can download it directly and use it with AI agents or code generation workflows. Each API family&#8217;s reference includes a Download button for grabbing its OpenAPI specification</span><i><span style="font-weight: 400">.</span></i></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206693" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155506/Screenshot-of-the-OpenAPI-Specification-download-button.-.png?w=640" class="postimages" width="640" height="115" alt="Screenshot of the OpenAPI Specification download button." />
			  </span>
			</p>
<h2><span style="font-weight: 400">Versions throughout</span></h2>
<p><span style="font-weight: 400">We&#8217;ve also retired the per-version snapshots and the version dropdown. In their place is a single, evergreen reference that&#8217;s always current. Version information now lives in-line, throughout the page. For each resource and object, you&#8217;ll see an </span><i><span style="font-weight: 400">Available in</span></i><span style="font-weight: 400"> note, so that you no longer have to pick a version up front just to find out when something shipped.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206694" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155713/Screenshot-showing-version-details-appearing-in-line.png?w=714" class="postimages" width="714" height="308" alt="Screenshot showing version details appearing in-line" />
			  </span>
			</p>
<h2><span style="font-weight: 400">What works differently</span></h2>
<p><span style="font-weight: 400">A redesign this big changes a few habits. Here&#8217;s what to know about the new experience.</span></p>
<p><b>To copy a full endpoint path, click it.</b><span style="font-weight: 400"> Click any operation&#8217;s path and a popup appears with the complete request URL, ready to copy and paste.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206695" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155741/Screenshot-showing-how-clicking-an-operations-path-opens-a-popup-with-the-full-request-URL-e1783551475784.png?w=1000" class="postimages" width="1000" height="214" alt="Screenshot showing how clicking an operation&apos;s path opens a popup with the full request URL" />
			  </span>
			</p>
<p><b>Field types can include a pattern.</b> Some fields show a regular-expression pattern that describes the values they accept. For example, you might see <code>^(00T|00U)\w*</code>. Reading it left to right: <code>^</code> means the value starts here, <code>(00T|00U)</code> means it begins with either <code>00T</code> or <code>00U</code>, and <code>\w*</code> means any letters, numbers, or underscores follow. In plain terms, that&#8217;s a Salesforce ID that must start with the key prefix <code>00T</code> or <code>00U</code>.</p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206696" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260708155856/Screenshot-of-a-required-path-parameter-showing-its-type-alongside-the-pattern.png?w=760" class="postimages" width="760" height="110" alt="Screenshot of a required path parameter showing its type alongside the pattern" />
			  </span>
			</p>
<p><b>You can&#8217;t deep-link to a request or response body anymore.</b><span style="font-weight: 400"> Because request and response bodies are no longer separate pages, you can&#8217;t link directly to one. Link to the operation instead, and the body appears right there alongside it.</span></p>
<p><b>Navigation</b><span style="font-weight: 400">. To choose a new API family, click </span><b>All Reference</b><span style="font-weight: 400"> or the </span><b>Reference</b><span style="font-weight: 400"> tab.</span></p>
<h2><span style="font-weight: 400">Conclusion</span></h2>
<p><span style="font-weight: 400">The new </span><a href="https://developer.salesforce.com/docs/platform/connect-rest-api"><span style="font-weight: 400">Connect REST API Developer Guide</span></a><span style="font-weight: 400"> lets you discover the details faster with less context switching. Try it out and let us know what would make it even more helpful by clicking the </span><b>Share your feedback</b><span style="font-weight: 400"> button at the bottom of the page.</span></p>
<h2><span style="font-weight: 400">Resources</span></h2>
<ul>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/connect-rest-api"><span style="font-weight: 400">Connect REST API Developer Guide</span></a></li>
<li style="font-weight: 400"><a href="https://www.openapis.org/"><span style="font-weight: 400">The OpenAPI Specification</span></a></li>
</ul>
<h2><span style="font-weight: 400">About the authors</span></h2>
<p><b>Richard Sexton</b><span style="font-weight: 400"> is a Technical Writer at Salesforce specializing in developer docs. Follow him on </span><a href="https://linkedin.com/in/r-sexton"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><b>Ben Sklar</b><span style="font-weight: 400"> is a Director of Product Management at Salesforce responsible for UI API, the Salesforce GraphQL API, the Lightning Data Service, and AI Developer Kit. Ben is a major fan of GraphQL, but when not using GraphQL, you can find him playing ultimate frisbee or skiing during the winter. Follow him on </span><a href="https://www.linkedin.com/in/benjamin-sklar/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/introducing-a-new-connect-rest-api-experience">Introducing a New Connect REST API Experience</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/introducing-a-new-connect-rest-api-experience/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206688</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260708160246/Generic-D-4-e1783551785970.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260708160246/Generic-D-4-e1783551785970.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Identify and Fix Performance Regressions Using Deployment Insights in Scale Center</title>
		<link>https://developer.salesforce.com/blogs/2026/07/identify-and-fix-performance-regressions-using-deployment-insights-in-scale-center</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/identify-and-fix-performance-regressions-using-deployment-insights-in-scale-center#respond</comments>
		<pubDate>Tue, 07 Jul 2026 15:30:20 +0000</pubDate>
		<dc:creator><![CDATA[Anand Vardhan]]></dc:creator>
				<category><![CDATA[Apex]]></category>
		<category><![CDATA[APIs and Integrations]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Deployment Insights]]></category>
		<category><![CDATA[Event monitoring]]></category>
		<category><![CDATA[metadata migration]]></category>
		<category><![CDATA[performance regressions]]></category>
		<category><![CDATA[Scale Center]]></category>
		<category><![CDATA[SLA breaches]]></category>
		<category><![CDATA[telemetry engine]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206673</guid>
		<description><![CDATA[<p>The new Deployment Insights feature in Scale Center automatically compares deployment events with platform telemetry to catch performance regressions before they impact your SLAs.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/identify-and-fix-performance-regressions-using-deployment-insights-in-scale-center">Identify and Fix Performance Regressions Using Deployment Insights in Scale Center</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">Imagine this scenario: you deploy a clean metadata migration on a Thursday night. All test suites pass. But by Monday afternoon, API execution times have doubled, database CPU utilization is pinning, and integration partners are flagging Service Level Agreement (SLA) breaches. The deployment clearly introduced a regression, but proving exactly what caused it typically triggers hours of manual correlation, digging through fragmented Event Monitoring logs, filing support cases, and cross-referencing deployment timestamps against ambient traffic spikes.</span></p>
<p><span style="font-weight: 400">The good news is that there’s now a better way to troubleshoot such scenarios with </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.deployment_insights_overview.htm&amp;type=5"><span style="font-weight: 400">Deployment Insights</span></a><span style="font-weight: 400">. This new feature in </span><a href="https://help.salesforce.com/s/articleView?id=xcloud.scale_center_overview.htm&amp;type=5"><span style="font-weight: 400">Scale Center</span></a><span style="font-weight: 400"> automates post-release validation by unifying release events with platform metrics to deterministically isolate performance regressions from ambient traffic noise. </span></p>
<p><span style="font-weight: 400">In this blog post, we’ll walk you through how this telemetry engine functions and how to integrate it into your deployment runbooks to proactively catch stability issues before they impact your SLAs.</span></p>
<h2><span style="font-weight: 400">The post-deployment blind spot</span></h2>
<p><span style="font-weight: 400">Upon initiating a </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_qs_deploy.htm"><span style="font-weight: 400">metadata deployment </span></a><span style="font-weight: 400">within a high-scale environment, conventional observability frameworks often struggle to address three critical architectural challenges:</span></p>
<ul>
<li style="font-weight: 400"><b>Fragmented telemetry correlation:</b><span style="font-weight: 400"> Validating systemic health demands intensive manual effort to bridge siloed metrics, where end user EPT, application server cycles, and Apex resource exhaustion signals remain isolated across disparate logs.</span></li>
<li style="font-weight: 400"><b>The deterministic baseline challenge:</b> <span style="font-weight: 400">Quantifying release-driven degradation requires comparing post-deployment performance against an equivalent peak-load window. Identifying a historical interval that precisely mirrors current traffic volume and utilization patterns is historically tedious and prone to error.</span></li>
<li style="font-weight: 400"><b>Latent architectural regressions:</b> <span style="font-weight: 400">Inefficiencies, such as a </span><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_SOQL_VLSQ.htm"><span style="font-weight: 400">non-selective query</span></a><span style="font-weight: 400"> embedded in new trigger logic, frequently escape detection in staging. These silent performance shifts only surface as critical bottlenecks when production traffic reaches peak utilization.</span></li>
</ul>
<p><span style="font-weight: 400">Deployment Insights eliminates this operational blind spot by unifying release events with Scale Center’s automated telemetry engine, delivering deterministic comparisons to identify exactly how code modifications impact environment stability.</span></p>
<h2><span style="font-weight: 400">Navigation and interpretation of the Deployment Insight Report</span></h2>
<p><span style="font-weight: 400">To generate a Deployment Insights Report, follow the steps below.</span></p>
<ol>
<li style="font-weight: 400"><span style="font-weight: 400">Navigate to the </span><b>Setup Menu</b><span style="font-weight: 400"> in Scale Center.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Go to the </span><b>Deployment Insights</b><span style="font-weight: 400"> section.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Select a specific deployment.</span></li>
<li style="font-weight: 400"><span style="font-weight: 400">Click the </span><b>Generate Insights Report</b><span style="font-weight: 400"> button to view the report for that deployment.</span></li>
</ol>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206676" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074600/Screenshot-representing-how-to-navigate-to-Deployment-Insights-under-Setup-e1783435573329.png?w=1000" class="postimages" width="1000" height="263" alt="Screenshot representing how to navigate to Deployment Insights under Setup" />
			  </span>
			</p>
<p><span style="font-weight: 400">Once generated, the report moves from high-level operational signals down to granular, actionable component details.</span></p>
<h3><span style="font-weight: 400">Delta analysis and top-line telemetry</span></h3>
<p><span style="font-weight: 400">The top of the report delivers an automated delta summary, highlighting immediate efficiency shifts. Instead of looking at raw numbers, it provides percentage-based variances for foundational enterprise metrics. Sections include:</span><b></b></p>
<ul>
<li><b>Change in Errors Before and After Deployment </b>
<ul>
<li><span style="font-weight: 400">This section provides visualization for the anomaly in the errors related to Rowlock timeouts, such as </span><a href="http://google.com/search?q=concurrent+errors+salesforce&amp;rlz=1C5GCCM_en&amp;oq=concurrent+errors+salesforce&amp;gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIICAEQABgWGB4yCAgCEAAYFhgeMg0IAxAAGIYDGIAEGIoFMgYIBBBFGDwyBggFEEUYQDIGCAYQRRhAMgYIBxBFGEDSAQg1NTc2ajBqNKgCALACAQ&amp;sourceid=chrome&amp;ie=UTF-8"><span style="font-weight: 400">c</span><span style="font-weight: 400">oncurrent errors,</span><span style="font-weight: 400"> c</span><span style="font-weight: 400">onnection pool errors</span></a><span style="font-weight: 400">, or callouts, that may have started to increase or decrease post deployment</span></li>
</ul>
</li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206677" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074603/Snapshot-of-the-Change-in-Errors-Chart-on-the-Deployment-Insights-Report-e1783435591372.png?w=1000" class="postimages" width="1000" height="350" alt="Snapshot of the Change in Errors Chart on the Deployment Insights Report" />
			  </span>
			</p>
<ul>
<li><b>Change in Performance Before and After Deployment </b>
<ul>
<li><b>Average SOAP and REST API Request Time</b><span style="font-weight: 400">: This metric provides degradation in the performance of the REST API and SOAP API-based requests getting invoked from external integration syncs</span></li>
<li><b>App CPU vs. DB CPU Per Request: </b><span style="font-weight: 400">This</span> <span style="font-weight: 400">metric instantly reveals if your application custom code has started to use more application server cycles (e.g., massive loops, inefficient JSON parsing) or stalling on database execution (e.g., non-selective queries post deployment</span></li>
<li><b>User Experience (EPT)</b><span style="font-weight: 400">: This metric surfaces the overall experience from the response time of UI-based requests that matters most to the end user experience</span></li>
</ul>
</li>
</ul>
<ul>
<li style="list-style-type: none">
<ul></ul>
</li>
</ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206678" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074605/Snapshot-of-the-Change-in-Performance-Before-and-After-Deployment-takeaways-e1783435605441.png?w=1000" class="postimages" width="1000" height="344" alt="Snapshot of the Change in Performance Before and After Deployment takeaways" />
			  </span>
			</p>
<p><span style="font-weight: 400">Each section provides self-explanatory takeaways for interpretation. The goal here is to provide a unified view of the data, so it&#8217;s easier to quickly identify whether or not a release deployment has actually created an issue in the first place.</span></p>
<h3><span style="font-weight: 400">Specialized diagnostic deep-dives</span></h3>
<p><span style="font-weight: 400">The Deployment Insights Report doesn&#8217;t stop at highlighting whether or not there was a problem, but it also identifies where the problem started post deployment and what actions can be taken up by the users to remediate those errors.</span><span style="font-weight: 400"> </span></p>
<p><span style="font-weight: 400">Beneath the top-line metrics are four dedicated tabs built for rapid, targeted triage</span><span style="font-weight: 400">: Errors, User Experience, API Performance, and Infrastructure Performance. </span></p>
<ul></ul>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206679" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074607/Snapshot-of-the-Indepth-Analysis-of-Errors-section-of-the-Deployment-Insights-Report-e1783435619415.png?w=1000" class="postimages" width="1000" height="376" alt="Snapshot of the Indepth Analysis of Errors section of the Deployment Insights Report" />
			  </span>
			</p>
<p><span style="font-weight: 400">To identify a regression in any of the metrics shown, click on the checkbox </span><b>Display numerical change from before to after deployment</b><span style="font-weight: 400"> present in each of the tabular data.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206680" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074610/Snapshot-of-the-Indepth-Analysis-of-User-Experience-section-of-the-Deployment-Insights-report-e1783435631948.png?w=1000" class="postimages" width="1000" height="552" alt="Snapshot of the Indepth Analysis of User Experience section of the Deployment Insights report" />
			  </span>
			</p>
<p><span style="font-weight: 400">Here is the tabular representation of each of these sections and the data that it provides for remediation. For each section, it clearly outlines the recommended fix on the entry point.</span></p>
<table>
<tbody>
<tr>
<td><b>Diagnostic Tab</b></td>
<td><b>Engineering Focus</b></td>
<td><b>Concrete Actionable Output</b></td>
</tr>
<tr>
<td><b>Errors</b></td>
<td><span style="font-weight: 400">Concurrency and platform friction</span></td>
<td><span style="font-weight: 400">Identifies</span> <b>Row Lock Errors</b><span style="font-weight: 400"> and </span><b>Concurrent Apex Limits, </b><span style="font-weight: 400">and maps raw database entities back to human-readable object names.</span></td>
</tr>
<tr>
<td><b>User Experience</b></td>
<td><span style="font-weight: 400">Client-side performance</span></td>
<td><span style="font-weight: 400">Provides p75 of page load times for specific page URLs, and highlights exactly which layouts or components regressed</span><span style="font-weight: 400">. </span><span style="font-weight: 400">This value represents the 75th percentile for EPT, which means that 75% of page loads for your users were this fast or faster. We use p75 instead of the average (or 50th percentile) because it more accurately represents the experience of users who encounter slower performance. This metric helps you to identify and focus on issues that affect a significant portion of your user base.</span></td>
</tr>
<tr>
<td><b>API Performance</b></td>
<td><span style="font-weight: 400">Integration layer integrity</span></td>
<td><span style="font-weight: 400">Segregates REST vs. SOAP health, isolating long-running executions (over five seconds) to catch regression trends before they trigger external gateway timeouts.</span></td>
</tr>
<tr>
<td><b>Infrastructure</b></td>
<td><span style="font-weight: 400">System resource consumption</span></td>
<td><span style="font-weight: 400">Pinpoints the dominant entry points (e.g., specific triggers, integration users, or batch jobs) contributing most heavily to App or DB CPU spikes.</span></td>
</tr>
</tbody>
</table>
<h2><span style="font-weight: 400">Under the hood: The telemetry engine architecture</span></h2>
<p><span style="font-weight: 400">Lets now understand the details of how we built the Deployment Insights Telemetry system.</span></p>
<p><span style="font-weight: 400">The system doesn&#8217;t just display linear historical trends; it builds a deterministic comparison model. The platform operates on an asynchronous pipeline that balances the Scale Center UI with backend system-level services to compute performance deltas without adding any runtime overhead to your production instance.</span></p>
<p><span style="font-weight: 400">Here is how the system orchestrates this process behind the scenes:</span></p>
<h3><span style="font-weight: 400">Deployment Telemetry Processing Flow</span></h3>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206681" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260707074612/User-Sequence-diagram-of-the-flow-to-generate-a-Deployment-Insights-Report-e1783435644877.png?w=1000" class="postimages" width="1000" height="784" alt="User Sequence diagram of the flow to generate a Deployment Insights Report" />
			  </span>
			</p>
<p><span style="font-weight: 400">Behind the scenes, the telemetry engine orchestrates a coordinated, four-step lifecycle to deliver deterministic performance insights:</span></p>
<ol>
<li style="font-weight: 400"><b>Deployment Identification:</b> <span style="font-weight: 400">The engine catalogs metadata and managed-package events from a 25-day rolling window, establishing a comprehensive chronology of environment modifications.</span></li>
<li style="font-weight: 400"><b>Sliding Window Calculation:</b> <span style="font-weight: 400">Upon report initiation, a backend heuristic scrutinizes historical load patterns. It performs a four-day retrospective to establish a </span><b>pre-deployment peak hour</b><span style="font-weight: 400"> baseline, aligning it against a verified </span><b>post-deployment peak traffic hour</b><span style="font-weight: 400"> derived from up to a three-day forward-looking analysis.</span></li>
<li style="font-weight: 400"><b>Telemetry Aggregation &amp; Normalization:</b> <span style="font-weight: 400">The system harvests high-fidelity metrics from across the infrastructure layers, specifically isolating fluctuations in app CPU, database execution, EPT, and platform concurrency limits.</span></li>
<li style="font-weight: 400"><b>Signal Isolation:</b> <span style="font-weight: 400">By correlating synchronized high-utilization windows, the engine filters out ambient traffic noise to spotlight architectural regressions driven solely by code changes.</span></li>
</ol>
<h3><span style="font-weight: 400">Architect&#8217;s tip: The Peak Hour Principle</span></h3>
<p><span style="font-weight: 400">Modern enterprise architectures are notoriously complex, generating vast oceans of telemetry. Effective validation requires analyzing performance during high-stakes business windows, where peak system load intersects with critical server-side behaviors. To address this, the engine intelligently identifies these specific peak hours, automating performance comparisons across high-utilization intervals to distinguish genuine production regressions from an optimized baseline.</span></p>
<h3><span style="font-weight: 400">System requirements, considerations, and noise isolation</span></h3>
<p><span style="font-weight: 400">To get the most out of Deployment Insights, architects must keep a few system behaviors and boundary conditions in mind:</span></p>
<ul>
<li style="font-weight: 400"><b>Supported deployment types:</b> <span style="font-weight: 400">The engine can track metadata changes across all standard delivery mechanisms, whether your pipeline pushes changes programmatically (via the Salesforce CLI or direct </span><a href="https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/file_based_zip_file.htm"><span style="font-weight: 400">Metadata API</span></a><span style="font-weight: 400"> calls), promotes work items through DevOps Center, uses native change sets, or installs unlocked packages</span><span style="font-weight: 400">. </span></li>
<li style="font-weight: 400"><b>Minimum traffic thresholds:</b> <span style="font-weight: 400">Because the engine relies on the Peak Hour Principle, the target organization must maintain a baseline of active production traffic. In ultra-low volume orgs’ full copy sandboxes with sporadic usage, the sliding window heuristic may struggle to isolate clear peak-hour baselines.</span></li>
<li style="font-weight: 400"><b>Isolating environmental noise</b><span style="font-weight: 400">: If multiple decoupled teams deploy changes within the same deployment window, or if a seasonal traffic surge (like a scheduled marketing blast) occurs simultaneously, results can become ambiguous. In these scenarios, use th</span><span style="font-weight: 400">e </span><b>Infrastructure</b><span style="font-weight: 400"> tab to isolate the specific entry points. If the DB CPU spike correlates to a specific Apex class modified in your deployment payload, it is a code regression. If the spike is uniformly distributed across unchanged legacy APIs, the shift is likely environmental noise.</span></li>
</ul>
<h2><span style="font-weight: 400">Post-deployment runbook best practices</span></h2>
<p><span style="font-weight: 400">To shift your release cycle from reactive firefighting to automated validation, incorporate Deployment Insights directly into your production deployment runbooks using this checklist:</span></p>
<ol>
<li style="font-weight: 400"><b>Establish a mandatory release gate:</b> <span style="font-weight: 400">Add a Deployment Insights review as a standard checklist item for your deployment team, treating post-release performance validation with the same severity as your automated test runs.</span></li>
<li style="font-weight: 400"><b>Enforce the 24-Hour stabilization window:</b><span style="font-weight: 400"> Do not generate the report immediately after a deployment finishes. Allow the production environment to run for 24 hours, so the telemetry engine can capture a true, representative</span> <b>peak-load business window</b><span style="font-weight: 400">.</span></li>
<li style="font-weight: 400"><b>Analyze percentage-based deltas:</b> <span style="font-weight: 400">Generate the report and scan for color-coded deltas. Focus on any core metric (App CPU, DB CPU, or EPT) that exhibits a regression greater than 15% from the pre-deployment baseline.</span></li>
<li style="font-weight: 400"><b>Bypass manual log triage:</b> <span style="font-weight: 400">If a regression is flagged, skip manually writing Event Log File queries. Use the report’s integrated diagnostic deep-links to pivot directly into a specialized investigation view</span><span style="font-weight: 400"> (such as a </span><b>Concurrent Apex Investigation</b><span style="font-weight: 400">), </span><span style="font-weight: 400">which will automatically load with the exact peak-hour timestamps pre-populated.</span></li>
</ol>
<h2><span style="font-weight: 400">About the author</span></h2>
<p><b>Anand Vardhan</b> <span style="font-weight: 400">is a Product Owner for the Scalability Products Team, helping customers develop scalable solutions on the Customer 360 platform. Anand designs features for Scale Center and Scale Test products. His background includes performance and scale engineering, server-side optimization, Lightning, application design, caching, and managing large data volumes. Follow Anand on </span><a href="https://www.linkedin.com/in/anandvardhan08/"><span style="font-weight: 400">LinkedIn</span></a><span style="font-weight: 400">.</span></p>
<p><span><strong>Ravi Raina</strong> is Director Product Management at Salesforce working on the Scalability Products portfolio.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/identify-and-fix-performance-regressions-using-deployment-insights-in-scale-center">Identify and Fix Performance Regressions Using Deployment Insights in Scale Center</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/identify-and-fix-performance-regressions-using-deployment-insights-in-scale-center/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206673</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260708081838/Generic-D-6-e1783523931348.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260708081838/Generic-D-6-e1783523931348.png?w=1000" medium="image" />
	</item>
		<item>
		<title>Build Native Mobile Apps Within Minutes Using Agent Skills</title>
		<link>https://developer.salesforce.com/blogs/2026/07/build-native-mobile-apps-within-minutes-using-agent-skills</link>
		<comments>https://developer.salesforce.com/blogs/2026/07/build-native-mobile-apps-within-minutes-using-agent-skills#respond</comments>
		<pubDate>Thu, 02 Jul 2026 15:00:35 +0000</pubDate>
		<dc:creator><![CDATA[Shalini Jain]]></dc:creator>
				<category><![CDATA[Agentforce]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[App Development]]></category>
		<category><![CDATA[Developer Tooling]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Agent Skills]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[app development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mobile Skills]]></category>
		<category><![CDATA[Offline Sync]]></category>
		<category><![CDATA[salesforce mobile sdk]]></category>
		<category><![CDATA[smartstore]]></category>

		<guid isPermaLink="false">https://developer.salesforce.com/blogs/?p=206640</guid>
		<description><![CDATA[<p>Accelerate mobile development with the new generally available Mobile Skills, using simple prompts to generate native projects with authentication, offline support, and Mobile SDK built in.</p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-native-mobile-apps-within-minutes-using-agent-skills">Build Native Mobile Apps Within Minutes Using Agent Skills</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><span style="font-weight: 400">If you&#8217;ve ever built a Salesforce mobile app, you know the drill. You start with an idea, then spend the first two weeks wiring up authentication, setting up sync targets, and debugging offline behavior, long before you write a single line of the business logic your customer actually asked for.</span></p>
<p><span style="font-weight: 400">What if you could skip all of that and just </span><i><span style="font-weight: 400">describe</span></i><span style="font-weight: 400"> what you want? In this post, we&#8217;ll walk through how the new </span><a href="https://github.com/forcedotcom/sf-skills/tree/main/skills/mobile-apps-create"><span style="font-weight: 400">Mobile Skills</span></a><span style="font-weight: 400"> can accelerate your mobile app development, from initial project setup all the way through building real features and functionality.</span></p>
<h2>Getting past the mobile learning curve</h2>
<p><span style="font-weight: 400">Most Salesforce Developers are comfortable with business logic. What trips them up is everything around it, including OAuth handshakes, SDK version mismatches, Xcode build settings, and Gradle configurations. Native mobile development involves significant infrastructure overhead that has nothing to do with the app&#8217;s actual purpose, and it can take days just to get a project into a state where real work can begin.</span></p>
<p><span style="font-weight: 400">Mobile Skills take that entire bootstrapping phase off your plate. They generate a clean, modern project structure with authentication and SDK integration already wired up, so your first task is building a feature, not fighting a toolchain.</span></p>
<h2><b>Built for developers who live in IDEs, not GUIs</b></h2>
<p><span style="font-weight: 400">Mobile Skills output standard source files organized the way a professional iOS or Android project should be. You get a real Xcode workspace or Android Studio project that you can read, refactor, and push to Git. The code is yours from the moment it&#8217;s generated.</span></p>
<h2><b>Skills: How agents go from generic to useful</b></h2>
<p><span style="font-weight: 400">An Agent Skill is a packaged, reusable capability that an AI agent can invoke. Think of it as a well-documented function your AI assistant knows how to call, except instead of returning a string, it can scaffold a project, generate code, configure SDKs, or run commands on your behalf.</span></p>
<p><span style="font-weight: 400">Each skill ships with:</span></p>
<ul>
<li style="font-weight: 400"><b>A clear contract</b><span style="font-weight: 400"> — what it does, what inputs it expects, what it produces</span></li>
<li style="font-weight: 400"><b>Domain knowledge</b><span style="font-weight: 400"> — the patterns, APIs, and conventions for the task</span></li>
<li style="font-weight: 400"><b>Executable instructions</b><span style="font-weight: 400"> — so the agent can actually do the work, not just talk about it</span></li>
</ul>
<p><span style="font-weight: 400">Skills are how you turn a general-purpose AI into a domain expert. A generic LLM might know that the Salesforce Mobile SDK exists. A skill </span><i><span style="font-weight: 400">knows</span></i><span style="font-weight: 400"> the right project template, the right dependencies, and exactly which boilerplate to generate for your org&#8217;s auth flow.</span></p>
<h2><b>Introducing Mobile Skills</b></h2>
<p><span style="font-weight: 400">Mobile Skills give your AI agent everything it needs to build production-quality native mobile apps using Salesforce Mobile SDK, the same SDK that powers Salesforce mobile apps.</span></p>
<p><span style="font-weight: 400">Here&#8217;s what the Mobile Skills are capable of today</span><span style="font-weight: 400">:</span></p>
<ul>
<li>
<h3><b>Create a Mobile SDK app from scratch</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Describe the app you want, for example </span><i><span style="font-weight: 400">&#8220;Build me a native iOS app for field reps with offline access to Accounts and Contacts&#8221;</span></i><span style="font-weight: 400">, and </span><span style="font-weight: 400">Mobile Skills</span><span style="font-weight: 400"> scaffold a fresh Mobile SDK project, configured for your org, ready to run.</span></p>
<ul>
<li>
<h3><b>Add Mobile SDK to an existing app</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Already have an iOS or Android app?</span><span style="font-weight: 400"> Mobile Skills</span><span style="font-weight: 400"> can integrate Mobile SDK into your existing codebase without forcing you to start over. They handle dependencies, configuration, and the integration patterns that often trip people up.</span></p>
<ul>
<li>
<h3><b>SmartStore sync</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Configure encrypted, on-device storage with a single prompt. </span><span style="font-weight: 400">Mobile Skills</span><span style="font-weight: 400"> know the soup definitions, indexing strategies, and query patterns that work, so there’s no more digging through docs to figure out what IndexSpec to use.</span></p>
<ul>
<li>
<h3><b>Mobile sync</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Set up bidirectional sync between your app and your org with the right sync targets, sync down/up policies, and conflict resolution, and do it all declaratively, from a prompt.</span></p>
<ul>
<li>
<h3><b>Offline-first behavior</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Tell your agent &#8220;this app needs to work offline&#8221; and </span><span style="font-weight: 400">Mobile Skills</span><span style="font-weight: 400"> wire up the right combination of SmartStore + MobileSync, sets up appropriate cache policies, and handles the edge cases (for example, network transitions, failed syncs, and dirty records) that can take weeks to get right by hand.</span></p>
<ul>
<li>
<h3><b>Authentication and login</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Basic auth, OAuth flows, and login screens are all generated correctly the first time, following the secure patterns Salesforce recommends.</span></p>
<ul>
<li>
<h3><b>Biometric authentication</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Add Face ID, Touch ID, or Android biometrics to your app with a single instruction. </span><span style="font-weight: 400"> Mobile Skills</span><span style="font-weight: 400"> handles the platform differences, the fallback flows, and the security best practices.</span></p>
<ul>
<li>
<h3><b>Agentforce chat panel integration</b></h3>
</li>
</ul>
<p><span style="font-weight: 400">Drop a fully-wired Agentforce chat experience into your mobile app. Your end users get an intelligent, contextual agent inside </span><i><span style="font-weight: 400">their</span></i><span style="font-weight: 400"> app, configured to talk to </span><i><span style="font-weight: 400">your</span></i><span style="font-weight: 400"> org, and you don&#8217;t have to read a single integration guide.</span></p>
<h2><b>Getting started with Mobile Skills</b></h2>
<p><span style="font-weight: 400">Mobile Skills are part of </span><a href="https://github.com/forcedotcom/sf-skills"><span style="font-weight: 400">forcedotcom/sf-skills</span></a><span style="font-weight: 400">, the open-source collection of Salesforce Agent Skills for platform development. The repository is public: you can browse it, fork it, contribute to it, and pull skills into whatever agentic tool you&#8217;re already using. Think of it as a growing catalog of things AI agents should know how to do on Salesforce.</span></p>
<h3><b>Works wherever you work</b></h3>
<p><span style="font-weight: 400">Skills in this repository follow the open Agent Skills specification, which means they aren&#8217;t locked to a single tool. Mobile Skills work across surfaces, whether that&#8217;s Agentforce Vibes (available out of the box), Claude Code, Cursor, OpenCode, Codex, or any other agent that supports the spec. To install in a code agent, just run:<br />
<code>npx skills add https://github.com/forcedotcom/sf-skills --skill mobile-apps-create</code><br />
</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206644" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111650/image1_da5284-e1782497854718.png?w=1000" class="postimages" width="1000" height="526" alt="Screenshot showing skill installation in Claude CLI" />
			  </span>
			</p>
<h3><b>How it works under the hood</b></h3>
<p><code>/mobile-apps-create</code><span> is the primary entry point — </span><span style="font-weight: 400">a lightweight orchestrator that lives in sf-skills. When you describe what you want to build (for example, &#8220;I need a Salesforce mobile app with offline sync&#8221;), the orchestrator determines which SDK family and platform you&#8217;re targeting, then routes your request to the appropriate individual skill that handles the actual work.</span></p>
<h2><b>A real example</b></h2>
<p><span style="font-weight: 400">It starts with a single sentence. In Agentforce Vibes, describe the app that you want to build. In this example, I’m building an iOS app to manage a store inventory and sync the data back to Salesforce. </span></p>
<p><span style="font-weight: 400">Agentforce Vibes picks up the intent, activates Mobile Skills under the hood — handling Mobile SDK authentication, SmartStore for offline data, and MobileSync for bidirectional Salesforce sync — and starts generating the full app.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206646" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111656/image3_435160-e1782497957522.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot displaying Agentforce Vibes chat panel with the prompt to create a mobile app and Mobile-apps-create skill being invoked by the agent" />
			  </span>
			</p>
<p><span style="font-weight: 400">Within moments, the app is built and running in the iOS simulator. The first thing you see is the standard Salesforce OAuth login screen, secure, familiar, and fully functional. Mobile SDK handles the entire authentication flow, including token management, refresh, and session persistence. No custom auth code required.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206648" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111702/image5_7dc8a1-e1782498037153.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot displaying the login page of the app after it launched in a simulator" />
			  </span>
			</p>
<p><span style="font-weight: 400">After login, the app lands on a home screen with a clean product inventory dashboard. Counts, categories, and visual summaries are all pulled live from the Salesforce org. This isn&#8217;t a mockup; it&#8217;s real data flowing through MobileSync&#8217;s soup-to-cloud sync pipeline, displayed in a native SwiftUI interface.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206647" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111659/image4_82883c-e1782498074311.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot showing the home page of the app in the simulator" />
			  </span>
			</p>
<p><span style="font-weight: 400">Tapping into the Products tab reveals the full inventory list, with each item editable. You can add a new product, update a quantity, or change a description; every modification syncs back to Salesforce automatically. Even if the device goes offline, SmartStore caches changes locally and MobileSync pushes them upstream when connectivity returns.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206650" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111711/image7_716480-e1782498178666.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot showing the Products tab of the app in the simulator" />
			  </span>
			</p>
<p><span style="font-weight: 400">But why stop at inventory management? Back in the Agentforce Vibes prompt, I went ahead and asked the agent to embed an Agentforce chat panel. Just like that, the app now includes a native Agentforce conversational interface right inside the app. The Agentforce SDK handles the agent connection, conversation threading, and action orchestration, all wired up from a single prompt.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206645" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111654/image2_5d2329-e1782498218517.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot showing the Agentforce added to the app" />
			  </span>
			</p>
<p><span style="font-weight: 400">Store Managers can use the Agentforce chat to ask questions like &#8220;Which products are low in stock?&#8221; or ask it to refill stock without ever leaving the app. It&#8217;s not just an app anymore; it&#8217;s an AI-powered mobile experience, built in minutes.</span></p>
<p>
			  <span class="postimagessection_specify alignnone size-medium wp-image-206649" >
			    <img loading="lazy" decoding="async" src="https://d259t2jj6zp7qm.cloudfront.net/images/20260626111705/image6_201d89-e1782498252472.png?w=1000" class="postimages" width="1000" height="647" alt="Screenshot of the Agentforce chat panel during an ongoing conversation to order stock replenishment" />
			  </span>
			</p>
<h2><b>What&#8217;s Next</b></h2>
<p><span style="font-weight: 400">The Mobile Skills you see today are the foundation. We&#8217;re actively expanding the library to cover more SDK capabilities, more frameworks, and richer end-to-end app generation flows. If you&#8217;re building mobile apps on Salesforce, this is the moment to plug AI into your workflow, not as a typing assistant, but as a companion engineer who already knows the platform.</span></p>
<p><b>Your feedback matters! Try Mobile Skills, share your </b><a href="https://forms.gle/5cyRGd9tt5JCSk3x7"><b>feedback</b></a><b>, and tell us what to build next.</b></p>
<h2><b>Resources:</b></h2>
<ul>
<li style="font-weight: 400"><a href="https://github.com/forcedotcom/sf-skills"><span style="font-weight: 400">Explore sf-skills on GitHub</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/workshops/agentforce-workshop/agents/1-get-started"><span style="font-weight: 400">Get Started with Agentforce</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/mobile-sdk/overview"><span style="font-weight: 400">Mobile SDK Developer Guide</span></a></li>
<li style="font-weight: 400"><a href="https://developer.salesforce.com/docs/platform/mobile-sdk/guide/install-github.html"><span style="font-weight: 400">Mobile SDK GitHub repository</span></a></li>
</ul>
<h2><b>About the author</b></h2>
<p><span style="font-weight: 400"><strong>Shalini Jain</strong> is a Director of Product Management at Salesforce, where her primary focus lies in shaping the Mobile Platform Experience for developers through AI-driven innovation. Her current initiatives are heavily invested in enhancing developer productivity by bringing agentic AI capabilities directly into the mobile development workflow, as evidenced by the tools highlighted throughout this blog post. Furthermore, she is spearheading new features in Mobile SDK to further streamline and optimize how developers build, test, and ship mobile apps, with the ultimate goal of delivering a truly seamless and intuitive experience for all Salesforce mobile developers.</span></p>
<p>The post <a href="https://developer.salesforce.com/blogs/2026/07/build-native-mobile-apps-within-minutes-using-agent-skills">Build Native Mobile Apps Within Minutes Using Agent Skills</a> appeared first on <a href="https://developer.salesforce.com/blogs">Salesforce Developers Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://developer.salesforce.com/blogs/2026/07/build-native-mobile-apps-within-minutes-using-agent-skills/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<post-id xmlns="com-wordpress:feed-additions:1">206640</post-id><media:thumbnail url="https://d259t2jj6zp7qm.cloudfront.net/images/20260626143403/Generic-B-4-e1782509658601.png?w=1000" />
<media:content url="https://d259t2jj6zp7qm.cloudfront.net/images/20260626143403/Generic-B-4-e1782509658601.png?w=1000" medium="image" />
	</item>
	</channel>
</rss>
