Reference
The Salesforce Docs MCP Server exposes tools to access official Salesforce, MuleSoft, and Tableau documentation. Some tools operate on a single slice, which is a combination of collection, version, and locale. To query multiple collections, make separate tool calls.
list — Discover available content
Returns a catalog of all available collections, their versions, supported languages, output formats, prominent product areas, and retrieval hints. Call this first to understand what the server offers.
When to Use
- You want to know which collections are available.
- You want an overview of the available product areas and retrieval guidance. For the prominent guide slugs in one slice, use
list-landmarks. - You want to check which languages a collection supports.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
collections | string[] | Filter to specific collections. Valid values:
| All collections | No |
Example Request
{
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {
"name": "list",
"arguments": { "collections": ["tableau"] }
}
}Example Response
{
"collections": [
{
"collection": "tableau",
"description": "Tableau product documentation: Desktop, Server, Cloud, Prep, ...",
"versions": ["current", "next"],
"versionLabels": {
"current": "shipped/GA documentation — behavior available today",
"next": "release-preview — upcoming, not-yet-shipped behavior"
},
"locales": ["de-de", "en-gb", "en-us", "es-es", "fr-ca", "fr-fr", "it-it", "ja-jp", "ko-kr", "nl-nl", "pt-br", "sv-se", "th-th", "zh-cn", "zh-tw"],
"formats": ["text", "markdown", "html"],
"extraFields": ["description", "filename", "guides", "product", "products", "taxonomyIds"],
"retrievalHints": "Tableau documentation across desktop, server, cloud, ... Default to EXPANDING with bare `guides:` boosts ...",
"landmarks": [
{
"version": "current",
"landmarks": [
{ "slug": "_server", "members": ["_server_linux", "_server_windows"] },
{ "slug": "_api", "members": ["_rest_api", "_js_api", "_metadata_api"] },
{ "slug": "_desktop", "label": "Tableau Desktop and Web Authoring" }
]
}
],
"fetchHints": "A search-result ID identifies the exact document slice."
}
]
}list-landmarks — Discover guide slugs for a slice
A slug is a short identifier for a documentation area, such as _dataweave or _desktop. Use slugs to boost or filter search results.
Returns the prominent guides: slugs for one collection, version, and locale. Use them to scope search results.
When to Use
- You want to discover the main product areas available in a specific collection, version, and locale.
- You need a valid
guides:slug before scoping asearch. - You want to see narrower member slugs, check locale availability, or resolve a
guide_missresult fromsearch.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
collection | string | One collection returned by list. | — | Yes |
version | string | A version supported by that collection. | — | Yes |
locale | string | A locale supported by that collection. | — | Yes |
Example Request
{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {
"name": "list-landmarks",
"arguments": {
"collection": "tableau",
"version": "current",
"locale": "en-us"
}
}
}Example Response
{
"collection": "tableau",
"version": "current",
"locale": "en-us",
"landmarks": [
{ "slug": "_server", "members": [{ "slug": "_server_linux" }, { "slug": "_server_windows" }] },
{ "slug": "_api", "locales": ["en-us"], "members": [{ "slug": "_rest_api", "locales": ["en-us"] }] },
{ "slug": "_desktop", "label": "Tableau Desktop and Web Authoring" }
],
"retrievalHints": "..."
}search — Find relevant documents
Performs ranked retrieval over a single collection. Returns a list of matching documents, ordered by relevance.
When to Use
- You're looking for documents about a topic.
- You want to browse results before deciding which doc to read in full.
- You want to scope results to a specific product area.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
query | string | Your search terms, up to 2,000 characters. Supports query operators. | — | Yes |
collection | string | A collection returned by list. | — | Yes |
version | string | A version supported by that collection. | current | No |
locale | string | A locale supported by that collection. Omit it or use auto to select from the query language and fall back to en-us. | auto | No |
page | number | Page number for paginated results. | 1 | No |
pageSize | number | Number of results per page, from 1 through 60. | 12 | No |
format | string | Include document bodies in results. Omit it for the initial metadata-only search, then pass selected IDs to fetch. Valid values per collection:
| — | No |
Query Operators
| Operator | What It Does | Collections | Example |
|---|---|---|---|
+term | Results must contain this term | All | +apex triggers |
-term | Results must not contain this term | All | flows -process builder |
"phrase" | Matches the exact phrase | All | "governor limits" |
term* | Matches any term starting with this prefix | All | deploy* |
term~1 | Matches similar spellings within N edits | All | tableau~1 |
term^10 | Ranks this term higher in results | All | apex^10 triggers |
guides:<slug> | Boosts a product area without excluding relevant documents from other areas. Prefer this form by default. | All | guides:_desktop "calculated field" |
+guides:<slug> | Hard-filters to a product area. Use when the request explicitly requires only that area. Get valid slugs from list-landmarks. | All | +guides:_dataweave transformation |
+release:<n> | Narrows results to a release:
| admin, mulesoft | +release:264 order management |
+latest:true | Keeps only the latest released version of each component. Use this for current MuleSoft product docs unless the user asks for a specific version. | mulesoft | +guides:_dataweave +latest:true |
+updated:<yyyymmdd>* | Finds documentation updated in a given period, by year (+updated:2026*) or month (+updated:202607*) | architect | +updated:202607* |
+pill:new | Finds newly added content | architect | +pill:new agentforce |
+pill:updated | Finds revised content | architect | +pill:updated agentforce |
+taxonomyIds:<guid> | Narrows results by Semaphore taxonomy GUID | admin, tableau | +taxonomyIds:abc123... reports |
Example Request
{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {
"name": "search",
"arguments": {
"query": "+guides:_salesforce_order_management \"Order Management Console\"",
"collection": "admin",
"version": "current",
"locale": "en-us",
"page": 1,
"pageSize": 1
}
}
}Example Response
{
"results": [
{
"id": "07124862881193e7...",
"url": "https://help.salesforce.com/s/articleView?id=commerce.om_order_management.htm&type=5",
"title": "Salesforce Order Management",
"content": "...", // present only when format is set
"collection": "admin",
"version": "current",
"locale": "en-us",
"product": "Commerce",
"guides": "commerce"
}
],
"totalCount": 42 // results are in ranked order, best match first
}fetch — Get full document content
Retrieves the complete content of one or more specific documents, typically after search, answer, or explain.
When to Use
- You found a document with
searchand want to read the whole thing. - You have a Salesforce documentation URL and want its content in text, Markdown, or HTML format.
- You want document content in text, Markdown, or HTML for local use.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
ids | string[] | Up to 12 document IDs from previous search, answer, or explain results. Don't provide urls in the same call. | — | One of ids or urls |
urls | string[] | Up to 12 public documentation URLs. Don't provide ids in the same call. | — | One of ids or urls |
collection | string | A collection returned by list. Optional for an ID; use it with version and locale to disambiguate a URL. | — | No |
version | string | A version supported by the collection. | — | No |
locale | string | A locale supported by the collection. | — | No |
format | string | Output format. Use text for triage or bulk reading, markdown when document structure matters, and html when source markup is required. Valid values per collection:
| text | No |
Example Request
{
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": {
"name": "fetch",
"arguments": {
"urls": ["https://developer.salesforce.com/docs/data/agentforce-coworker/guide/agentforce-coworker-a-home.html"],
"collection": "developer",
"version": "current",
"locale": "en-us",
"format": "markdown"
}
}
}Errors
A batch can contain successful documents and per-document errors together. Fix or retry only the affected entries.
| Code | Scope | Meaning |
|---|---|---|
not_found | Document | No document matched that ID or URL. |
ambiguous_url | Document | The URL matched more than one slice. Use a search-result ID or retry with a matching collection, version, and locale from diagnostics.retryWith.slices. |
format_resolve_failed: ... | Document | The document was found, but its requested body format couldn't be resolved. |
missing_fetch_target | Request | Neither a non-empty ids array nor a non-empty urls array was provided. |
conflicting_fetch_targets | Request | Both ids and urls were provided. Send only one. |
invalid_fetch_format | Request | The format wasn't text, markdown, or html. |
admission_shed | Request | The server is temporarily under load. Retry after retry_after_seconds, preferably with a smaller batch. |
Example Response
{
"documents": [
{
"id": "a3f19bc4e7...",
"url": "https://developer.salesforce.com/docs/data/agentforce-coworker/guide/agentforce-coworker-a-home.html",
"title": "Agentforce Coworker",
"content": "## Agentforce Coworker\nAgentforce Coworker enables you to...",
"collection": "developer",
"version": "current",
"locale": "en-us"
},
// Per-document errors are returned alongside successful entries:
{ "id": "...", "error": "not_found", "available": { ... } }
]
}answer — Get a cited answer
Ask a question in plain language and get a synthesized answer with citations to the source documentation. The server finds the right documents for you.
When to Use
- You have a question and want a direct answer, not a list of documents.
- You want citations to verify the answer yourself.
- You want the server to handle the retrieval logic for you.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
query | string | Your question in natural language, up to 2,000 characters. | — | Yes |
collection | string | A collection returned by list. | — | Yes |
version | string | A version supported by that collection. | current | No |
locale | string | A locale supported by that collection. Omit it or use auto to select from the query language and fall back to en-us. | auto | No |
cite | boolean | Include source citations in the response. Valid values:
| true | No |
Example Request
{
"jsonrpc": "2.0", "id": 4, "method": "tools/call",
"params": {
"name": "answer",
"arguments": {
"query": "How do I configure Amazon Bedrock Connector?",
"collection": "mulesoft",
"version": "current",
"locale": "en-us",
"cite": true
}
}
}Example Response
{
"answer": "To configure Amazon Bedrock Connector, add it as a dependency in your Mule project",
"citations": [
// search-result-shaped, no body, no score
{
"id": "...",
"url": "https://docs.mulesoft.com/amazon-bedrock-connector/latest/",
"title": "Amazon Bedrock Connector",
"collection": "mulesoft",
"version": "current",
"locale": "en-us"
}
],
// Optional: additional relevant docs beyond the answer's grounding content.
"related": {
"urls": ["https://docs.mulesoft.com/amazon-bedrock-connector/latest/amazon-bedrock-connector-reference"],
"note": "Citations whose content was not included in the answer; fetch them directly for additional detail."
}
}explain — Answer from one specific document
Like answer, but grounded in a single document that you specify. Use this when you already know which page has the information you need.
When to Use
- You found a document and want to ask a follow-up question about it.
- You want an explanation of a specific page.
- You want to verify whether a particular doc covers a topic.
Parameters
| Parameter | Type | Description | Default | Required? |
|---|---|---|---|---|
query | string | Your question about this document, up to 2,000 characters. | — | Yes |
id | string | Document ID from a previous search, answer, or explain citation. Don't also provide url. | — | One of id or url |
url | string | Public documentation URL. Don't also provide id. | — | One of id or url |
cite | boolean | Include source citations in the response. Valid values:
| true | No |
Example Request
{
"jsonrpc": "2.0", "id": 5, "method": "tools/call",
"params": {
"name": "explain",
"arguments": {
"query": "How does Agent Script separate deterministic logic from LLM reasoning?",
"url": "https://architect.salesforce.com/docs/architect/fundamentals/guide/hybrid-reasoning-agentforce-builder-agent-script.html",
"cite": true
}
}
}Example Response
{
"explanation": "Agent Script separates deterministic logic from LLM reasoning by using two types of instructions: logic instructions that execute as code with no LLM involvement, and prompt instructions that trigger LLM calls only where judgment or natural language generation is needed...",
"citations": [
// one entry: the grounded document
{
"id": "...",
"url": "https://architect.salesforce.com/docs/architect/fundamentals/guide/hybrid-reasoning-agentforce-builder-agent-script.html",
"title": "Hybrid Reasoning with New Agentforce Builder and Agent Script",
"collection": "architect",
"version": "current",
"locale": "en-us"
}
]
}