Dust Apps are being deprecated. Only Dust Apps that were created before October 2025 are accessible to users. The creation of new Dust Apps is now deactivated.
Dust apps are composed of Blocks which are executed sequentially. Each block produces outputs and can refer to the outputs of previously executed blocks.For each block we describe its specification parameters and configuration parameters.
The input block is the entry point to a Dust app and receives the arguments on which the app is executed, in the form of JSON objects. During the design phase of the app it is associated to a dataset of examples used to iterate on the app. When deployed by API, the input block receives the arguments passed to the app by API. When run by API, the dataset to which the input block is associated is ignored and replaced by the arguments passed by API.
The data block outputs the dataset it is associated with. Unlike the input block it does not fork the execution of the app and simply returns the entire dataset as an array of JSON objects. The data block is generally used in conjunction with an llm block to output a dataset of few-shot examples to prompt models.
The code block executes the Javascript code provided by the user. The code must define a function _fun which takes as input an env variable. _fun is executed as the block is run by the app. code blocks are generally used to glue other blocks together by postprocessing previous blocks outputs.
state: An object whose fields are the name of previously executed blocks and values are the output of the associated blocks. The output of a previously executed EXAMPLE block can be accessed as env.state.EXAMPLE.
input: An object with fields input and index. input is the input object of the current execution stream, null if there is no input block executed yet. index is the index of the current input object in the dataset associated with the input block.
map: An optional object set only in the context of a block being executed as part of a mapreduce pair. If set, contains a field name set to the name of the current map block and a field iteration which is the index of the element being executed as part of the mapreduce.
config: The configuration with which the app is currently run. An object whose keys are block names and values are the associated configuration values.
The chat block provides a standardized interface to chat-based Large Language Models such as OpenAIโs gpt-4o (Chat API) or Anthropicโs claude-3.5-sonnet. It has templated instructions that serve as initial prompt and exposes a messages code block to output previous messages (generally passed to the app as input). It is used to build chat-based experiences where the model is exposed with previous interactions and generates a new message in response.
The instructions field of the chat block can be templated using the Tera language. This is particularly useful to construct few-shot prompts for models from datasets or previous blocksโ outputs. Hereโs an example of a templated model prompt:
{% for e in EXAMPLES %}EN: {{e.english}}FR: {{e.french}}{% endfor %}EN: {{INPUT.english}}FR:
In this example, for each object in the output of the EXAMPLES block (which is an array of JSON objects), create a line with the English sentence and French translation. Then, add a final line with the English sentence from the INPUT block output english field.The Tera templating language supports a variety of constructs including loops and variable replacement. Please refer to the Tera Documentation for more details.
instructions: The instructions are passed to the model as initial system role message (see OpenAIโs Chat guide). The instructions can be templated using the Tera templating language (see above for more details on templating).
messages_code: A Javascript function _fun which takes a single argument env (see the Code block documentation for details) and returns an array (possibly empty) of messages (but you generally want at least one user role message). Messages should be objects with two fields: role and content. Values should be string. Possible values for role are user, agent and system.
temperature: The temperature to use when sampling from the model. A higher temperature (e.g. 1.0) results in more diverse completions, while a lower temperature (e.g. 0.0) results in more conservative completions.
stop: An array of strings that should interrupt completion when sampled from the model.
max_tokens: The maximum number of tokens to generate from the model for the next message. It can be very broadly seen as a word worth of content. The model may decide to stop generation before reaching max_tokens.
frequency_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the modelโs likelihood to repeat the same line verbatim.
presence_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the modelโs likelihood to talk about new topics.
top_p: An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.
functions_code: A Javascript function _fun which takes a single argument env (see the Code block documentation for details) and returns an array (possibly empty) of functions specification objects. Only available for selected OpenAIโs models. See the OpenAI function calling guide for more details.
provider_id: The model provider to use. One of openai, anthropic, mistral or google_ai_studio.
model_id: The model to use from the provider specified by provider_id.
temperature: An override for the temperature to use when sampling from the model. See the specification section for more details.
use_cache: Whether to rely on the automated caching mechanism of the llm block. If set to true and a previous request was made with the same specification and configuration parameters, then the cached response is returned.
use_stream: In the context of running an app by API. Whether to stream each token as they are emitted by the model. Currently only supported for provider_id set to openai.
function_call: If functions_code returns a list of functions specifications, function_call lets you influence how the model will decide whether to use a function or not. Possible values are auto, none, any or one of your functionsโ name (forcing the call of that function).
The map and reduce blocks are used to execute the set of blocks in between them on each element of an array, in parallel. The map block takes a block name as from specification argument. If the output of the block referred to is an array, the execution stream will fork on each element of the array. If the output is an object you can use the repeat specification argument to map on the same element repeat times.The reduce block does not take any argument and has the same name as its associated map block. After executing a reduce block, each output of the blocks in between the map and reduce blocks will be collected in an array accessible from any subsequent block.Assume we have a MAPREDUCEmap block whose from specification argument points to a block whose output is an array of length 4. Assume it is followed by a DUMMYcode block and an associated MAPREDUCEreduce block, and finally a FINAL code block. Also assume that the output of the DUMMY block is a simple { "foo": "bar" } object. The DUMMY code block will be executed 4 times in parallel, and as we execute the FINAL block, env.state.DUMMY will contain an array of 4 { "foo": "bar" } objects.
from: The name of the blockโs output to map on. If the output is an array, the execution stream will fork on each element of the array. If the output is an object the repeat specification argument must be specified.
repeat: Only valid if the output of the from block is an object. The number of times to repeat the execution of the blocks in between the map and reduce blocks on the same object.
The while and end blocks are used to execute the set of blocks in between them sequentially until a termination condition is met. The while block takes a condition argument expecting code to be executed at each iteration of the loop. The code must return a boolean value. If the value is true the loop continues, otherwise it stops.The end block does not take any argument and has the same name as its associated while block. After executing the end block, each output of the blocks in between the while and end blocks will be collected in an array accessible from any subsequent block (see the Map Reduce blocks documentation for more details on this behavior).
condition: A Javascript function _fun which takes a single argument env (see the Code block documentation for details) and returns a boolean value. If the value is true the loop continues, otherwise it stops.
max_iterations: The maximum number of iterations to execute the blocks in between the while and end blocks. Must be set and has a maximum value of 32.
The data_source block provides an interface to query a Datasource and return chunks that are semantically similar to the query provided. When executed, the query is embedded using the embedding model set on the Data Source and the resulting embedding vector is used to perform semantic search on the Data Sourceโs chunks.The output of the data_source block is a list of document objects. Each document may include one or more chunks (only those that were returned from the search). The documents are sorted by decreasing order of the max of their retrieved chunks score. Please refer to the Datasources overview for more details about how documents are chunked to enable semantic search.
query: The query to embed and use to perform semantic search against the data source. The query can be templated using the Tera templating language (see the Chat block documentation for more details on templating).
full_text: Whether to return the full text of the retrieved documents (in addition to each chunk text). If true, each returned document object will have a text property containing the full text of the document.
top_k: The number of chunks to return. The resulting number of document objects may be smaller if multiple chunks from the same document are among the top_k retrieved chunks.
data_sources: An array of objects representing the Data Sources to query. Note that the Dust interface currently only supports adding one Data Source to a block, but you can pass many by API. The objects must have the following properties: workspace_id, the id of the workspace who owns the Data Source, and data_source_id, the name of the Data Source.
filter: An object representing the filters to apply to the query. The tags field is an object with properties in and not, both arrays of strings (the tags to filter on). The documentsโ tags must match at least one of the tags specified in in and none of the ones specified in not. The timestamp field is an object with properties gt and lt. The query will only return chunks from documents whose timestamp is greater than gt and lower than lt. The timestamp values are represented as epoch in ms. The filter configuration is optional, and each of the fields in tags or timestamp are also optional.Example filter:
The tags.in and tags.not values can be templated using the Tera templating language (see the Chat block documentation for more details on templating).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Multiplayer AI","colors":{"primary":"#0C84FE","light":"#9FDBFF","dark":"#0C84FE"},"logo":{"light":"https://mintcdn.com/dust/2DA36drRrorIkahi/branding/logo/light.svg?fit=max\u0026auto=format\u0026n=2DA36drRrorIkahi\u0026q=85\u0026s=3ca4f192f58eb9b80dc1e4c11fd5c8db","dark":"https://mintcdn.com/dust/2DA36drRrorIkahi/branding/logo/dark.svg?fit=max\u0026auto=format\u0026n=2DA36drRrorIkahi\u0026q=85\u0026s=95344d105b68c0912a13ae33b7cd871e"},"favicon":"https://mintcdn.com/dust/yYSkmee2gB4Opi_j/branding/favicon.svg?fit=max\u0026auto=format\u0026n=yYSkmee2gB4Opi_j\u0026q=85\u0026s=a66a8c8199cfb49a56380d56b54ea952","thumbnails":{"appearance":"light"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dust","hasAudioNarration":false,"actualSubdomain":"dust","customDomains":["docs.dust.tt"],"gitSource":{"type":"github","owner":"dust-tt","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"566b02e1-8b6d-4627-b9ff-049c48cdcb1b","liveDeploymentHistoryId":"6ae303337e73b966cbcff8ad","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae303337e73b966cbcff8ad"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae3033f2296c3c0b8cf77e6","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Capabilities","count":87},{"language":"default","tag":"Developers","count":79},{"language":"default","tag":"Dust API Documentation","count":71},{"language":"default","tag":"Tools","count":49},{"language":"default","tag":"Use cases","count":46},{"language":"default","tag":"Admins","count":42},{"language":"default","tag":"FAQ","count":28},{"language":"default","tag":"Agents","count":26},{"language":"default","tag":"Knowledge","count":18},{"language":"default","tag":"Datasources","count":16}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"docs/developer-platform/legacy-dust-apps/blocks/core-blocks","slug":"/docs/developer-platform/legacy-dust-apps/blocks/core-blocks","pageMetadata":{"title":"Core Blocks","description":null,"href":"/docs/developer-platform/legacy-dust-apps/blocks/core-blocks"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Dust Apps are being deprecated.`}),` Only Dust Apps that were created before October 2025 are accessible to users. The creation of new Dust Apps is now deactivated.`]})}),`\n`,_jsxs(_components.p,{children:[`Dust apps are composed of `,_jsx(_components.a,{href:`/docs/developer-platform/overview/developer-platform`,children:`Blocks`}),` which are executed sequentially. Each block produces outputs and can refer to the outputs of previously executed blocks.`]}),`\n`,_jsxs(_components.p,{children:[`For each block we describe its `,_jsx(_components.em,{children:`specification`}),` parameters and `,_jsx(_components.em,{children:`configuration`}),` parameters.`]}),`\n`,_jsx(Heading,{level:`2`,id:`input-block`,children:`Input block`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`input`}),` block is the entry point to a Dust app and receives the arguments on which the app is executed, in the form of JSON objects. During the design phase of the app it is associated to a dataset of examples used to iterate on the app. When deployed by API, the `,_jsx(_components.code,{children:`input`}),` block receives the arguments passed to the app by API. When run by API, the dataset to which the `,_jsx(_components.code,{children:`input`}),` block is associated is ignored and replaced by the arguments passed by API.`]}),`\n`,_jsx(Heading,{level:`3`,id:`specification`,children:`Specification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dataset`}),`: The dataset of examples to be executed by the app during the design phase. Ignored and replaced by the arguments passed when run by API.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`data-block`,children:`Data block`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`data`}),` block outputs the dataset it is associated with. Unlike the `,_jsx(_components.code,{children:`input`}),` block it does not fork the execution of the app and simply returns the entire dataset as an array of JSON objects. The `,_jsx(_components.code,{children:`data`}),` block is generally used in conjunction with an `,_jsx(_components.code,{children:`llm`}),` block to output a dataset of few-shot examples to prompt models.`]}),`\n`,_jsx(Heading,{level:`3`,id:`specification-2`,children:`Specification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dataset`}),`: The dataset of examples to be returned by the block as array.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`code-block`,children:`Code block`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`code`}),` block executes the Javascript code provided by the user. The code must define a function `,_jsx(_components.code,{children:`_fun`}),` which takes as input an `,_jsx(_components.code,{children:`env`}),` variable. `,_jsx(_components.code,{children:`_fun`}),` is executed as the block is run by the app. `,_jsx(_components.code,{children:`code`}),` blocks are generally used to glue other blocks together by postprocessing previous blocks outputs.`]}),`\n`,_jsx(Heading,{level:`3`,id:`specification-3`,children:`Specification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`code`}),`: The code to be executed. Exposed as a function named `,_jsx(_components.code,{children:`_fun`}),` taking an `,_jsx(_components.code,{children:`env`}),` variable as argument.`]}),`\n`]}),`\n`,_jsxs(Heading,{level:`3`,id:`properties-of-the-env-variable`,children:[`Properties of the `,_jsx(_components.code,{children:`env`}),` variable`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`state`}),`: An object whose fields are the name of previously executed blocks and values are the output of the associated blocks. The output of a previously executed `,_jsx(_components.code,{children:`EXAMPLE`}),` block can be accessed as `,_jsx(_components.code,{children:`env.state.EXAMPLE`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`input`}),`: An object with fields `,_jsx(_components.code,{children:`input`}),` and `,_jsx(_components.code,{children:`index`}),`. `,_jsx(_components.code,{children:`input`}),` is the input object of the current execution stream, `,_jsx(_components.em,{children:`null`}),` if there is no `,_jsx(_components.code,{children:`input`}),` block executed yet. `,_jsx(_components.code,{children:`index`}),` is the index of the current input object in the dataset associated with the `,_jsx(_components.code,{children:`input`}),` block.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`map`}),`: An optional object set only in the context of a block being executed as part of a `,_jsx(_components.code,{children:`map`}),` `,_jsx(_components.code,{children:`reduce`}),` pair. If set, contains a field `,_jsx(_components.code,{children:`name`}),` set to the name of the current `,_jsx(_components.code,{children:`map`}),` block and a field `,_jsx(_components.code,{children:`iteration`}),` which is the index of the element being executed as part of the `,_jsx(_components.code,{children:`map`}),` `,_jsx(_components.code,{children:`reduce`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`config`}),`: The configuration with which the app is currently run. An object whose keys are block names and values are the associated configuration values.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`chat-block-llm`,children:`Chat block (LLM)`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`chat`}),` block provides a standardized interface to chat-based Large Language Models such as OpenAIโs `,_jsx(_components.code,{children:`gpt-4o`}),` (`,_jsx(_components.a,{href:`https://platform.openai.com/docs/guides/chat`,children:`Chat API`}),`) or Anthropicโs `,_jsx(_components.code,{children:`claude-3.5-sonnet`}),`. It has templated instructions that serve as initial prompt and exposes a `,_jsx(_components.code,{children:`messages`}),` code block to output previous messages (generally passed to the app as input). It is used to build chat-based experiences where the model is exposed with previous interactions and generates a new message in response.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prompt-templating`,children:`Prompt templating`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`instructions`}),` field of the `,_jsx(_components.code,{children:`chat`}),` block can be templated using the `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs/#templates`,children:`Tera`}),` language. This is particularly useful to construct few-shot prompts for models from datasets or previous blocksโ outputs. Hereโs an example of a templated model prompt:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`{% for e in EXAMPLES %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`EN: {{e.english}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`FR: {{e.french}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`{% endfor %}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`EN: {{INPUT.english}}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`FR:`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`In this example, for each object in the output of the `,_jsx(_components.code,{children:`EXAMPLES`}),` block (which is an array of JSON objects), create a line with the English sentence and French translation. Then, add a final line with the English sentence from the `,_jsx(_components.code,{children:`INPUT`}),` block output `,_jsx(_components.code,{children:`english`}),` field.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs`,children:`Tera`}),` templating language supports a variety of constructs including loops and variable replacement. Please refer to the `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs/#templates`,children:`Tera Documentation`}),` for more details.`]}),`\n`,_jsx(Heading,{level:`3`,id:`specification-4`,children:`Specification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`instructions`}),`: The instructions are passed to the model as initial `,_jsx(_components.em,{children:`system`}),` role message (see OpenAIโs `,_jsx(_components.a,{href:`https://platform.openai.com/docs/guides/chat`,children:`Chat guide`}),`). The instructions can be templated using the `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs/#templates`,children:`Tera`}),` templating language (see above for more details on templating).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`messages_code`}),`: A Javascript function `,_jsx(_components.code,{children:`_fun`}),` which takes a single argument `,_jsx(_components.code,{children:`env`}),` (see the `,_jsx(_components.a,{href:`#code-block`,children:`Code block`}),` documentation for details) and returns an array (possibly empty) of messages (but you generally want at least one `,_jsx(_components.em,{children:`user`}),` role message). Messages should be objects with two fields: `,_jsx(_components.em,{children:`role`}),` and `,_jsx(_components.em,{children:`content`}),`. Values should be string. Possible values for `,_jsx(_components.code,{children:`role`}),` are `,_jsx(_components.em,{children:`user`}),`, `,_jsx(_components.em,{children:`agent`}),` and `,_jsx(_components.em,{children:`system`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`temperature`}),`: The temperature to use when sampling from the model. A higher `,_jsx(_components.em,{children:`temperature`}),` (e.g. `,_jsx(_components.em,{children:`1.0`}),`) results in more diverse completions, while a lower `,_jsx(_components.em,{children:`temperature`}),` (e.g. `,_jsx(_components.em,{children:`0.0`}),`) results in more conservative completions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`stop`}),`: An array of strings that should interrupt completion when sampled from the model.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`max_tokens`}),`: The maximum number of tokens to generate from the model for the next message. It can be very broadly seen as a word worth of content. The model may decide to stop generation before reaching `,_jsx(_components.code,{children:`max_tokens`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`frequency_penalty`}),`: Number between `,_jsx(_components.em,{children:`-2.0`}),` and `,_jsx(_components.em,{children:`2.0`}),`. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the modelโs likelihood to repeat the same line verbatim.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`presence_penalty`}),`: Number between `,_jsx(_components.em,{children:`-2.0`}),` and `,_jsx(_components.em,{children:`2.0`}),`. Positive values penalize new tokens based on whether they appear in the text so far, increasing the modelโs likelihood to talk about new topics.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`top_p`}),`: An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with `,_jsx(_components.code,{children:`top_p`}),` probability mass. So `,_jsx(_components.em,{children:`0.1`}),` means only the tokens comprising the top 10% probability mass are considered.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`functions_code`}),`: A Javascript function `,_jsx(_components.code,{children:`_fun`}),` which takes a single argument `,_jsx(_components.code,{children:`env`}),` (see the `,_jsx(_components.a,{href:`#code-block`,children:`Code block`}),` documentation for details) and returns an array (possibly empty) of functions specification objects. Only available for selected OpenAIโs models. See the `,_jsx(_components.a,{href:`https://platform.openai.com/docs/guides/gpt/function-calling`,children:`OpenAI function calling guide`}),` for more details.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`configuration`,children:`Configuration`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`provider_id`}),`: The model provider to use. One of `,_jsx(_components.em,{children:`openai`}),`, `,_jsx(_components.em,{children:`anthropic`}),`, `,_jsx(_components.em,{children:`mistral`}),` or `,_jsx(_components.em,{children:`google_ai_studio`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`model_id`}),`: The model to use from the provider specified by `,_jsx(_components.code,{children:`provider_id`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`temperature`}),`: An override for the temperature to use when sampling from the model. See the specification section for more details.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`use_cache`}),`: Whether to rely on the automated caching mechanism of the `,_jsx(_components.code,{children:`llm`}),` block. If set to `,_jsx(_components.em,{children:`true`}),` and a previous request was made with the same specification and configuration parameters, then the cached response is returned.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`use_stream`}),`: In the context of running an app by API. Whether to stream each token as they are emitted by the model. Currently only supported for `,_jsx(_components.code,{children:`provider_id`}),` set to `,_jsx(_components.code,{children:`openai`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`function_call`}),`: If `,_jsx(_components.code,{children:`functions_code`}),` returns a list of functions specifications, `,_jsx(_components.code,{children:`function_call`}),` lets you influence how the model will decide whether to use a function or not. Possible values are `,_jsx(_components.code,{children:`auto`}),`, `,_jsx(_components.code,{children:`none`}),`, `,_jsx(_components.code,{children:`any`}),` or one of your functionsโ name (forcing the call of that function).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`map-reduce-blocks`,children:`Map Reduce blocks`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`map`}),` and `,_jsx(_components.code,{children:`reduce`}),` blocks are used to execute the set of blocks in between them on each element of an array, in parallel. The `,_jsx(_components.code,{children:`map`}),` block takes a block name as `,_jsx(_components.code,{children:`from`}),` specification argument. If the output of the block referred to is an array, the execution stream will fork on each element of the array. If the output is an object you can use the `,_jsx(_components.code,{children:`repeat`}),` specification argument to map on the same element `,_jsx(_components.code,{children:`repeat`}),` times.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`reduce`}),` block does not take any argument and has the same name as its associated `,_jsx(_components.code,{children:`map`}),` block. After executing a `,_jsx(_components.code,{children:`reduce`}),` block, each output of the blocks in between the `,_jsx(_components.code,{children:`map`}),` and `,_jsx(_components.code,{children:`reduce`}),` blocks will be collected in an array accessible from any subsequent block.`]}),`\n`,_jsxs(_components.p,{children:[`Assume we have a `,_jsx(_components.strong,{children:`MAPREDUCE`}),` `,_jsx(_components.code,{children:`map`}),` block whose `,_jsx(_components.code,{children:`from`}),` specification argument points to a block whose output is an array of length 4. Assume it is followed by a `,_jsx(_components.strong,{children:`DUMMY`}),` `,_jsx(_components.code,{children:`code`}),` block and an associated `,_jsx(_components.strong,{children:`MAPREDUCE`}),` `,_jsx(_components.code,{children:`reduce`}),` block, and finally a `,_jsx(_components.strong,{children:`FINAL`}),` code block. Also assume that the output of the `,_jsx(_components.strong,{children:`DUMMY`}),` block is a simple `,_jsx(_components.code,{children:`{ \"foo\": \"bar\" }`}),` object. The `,_jsx(_components.strong,{children:`DUMMY`}),` code block will be executed 4 times in parallel, and as we execute the `,_jsx(_components.strong,{children:`FINAL`}),` block, `,_jsx(_components.code,{children:`env.state.DUMMY`}),` will contain an array of 4 `,_jsx(_components.code,{children:`{ \"foo\": \"bar\" }`}),` objects.`]}),`\n`,_jsx(Heading,{level:`3`,id:`configuration-2`,children:`Configuration`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`from`}),`: The name of the blockโs output to map on. If the output is an array, the execution stream will fork on each element of the array. If the output is an object the `,_jsx(_components.code,{children:`repeat`}),` specification argument must be specified.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`repeat`}),`: Only valid if the output of the `,_jsx(_components.code,{children:`from`}),` block is an object. The number of times to repeat the execution of the blocks in between the `,_jsx(_components.code,{children:`map`}),` and `,_jsx(_components.code,{children:`reduce`}),` blocks on the same object.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`while-end-blocks`,children:`While End blocks`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`while`}),` and `,_jsx(_components.code,{children:`end`}),` blocks are used to execute the set of blocks in between them sequentially until a termination condition is met. The `,_jsx(_components.code,{children:`while`}),` block takes a `,_jsx(_components.code,{children:`condition`}),` argument expecting code to be executed at each iteration of the loop. The code must return a boolean value. If the value is `,_jsx(_components.code,{children:`true`}),` the loop continues, otherwise it stops.`]}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`end`}),` block does not take any argument and has the same name as its associated `,_jsx(_components.code,{children:`while`}),` block. After executing the `,_jsx(_components.code,{children:`end`}),` block, each output of the blocks in between the `,_jsx(_components.code,{children:`while`}),` and `,_jsx(_components.code,{children:`end`}),` blocks will be collected in an array accessible from any subsequent block (see the `,_jsx(_components.a,{href:`#map-reduce-blocks`,children:`Map Reduce blocks`}),` documentation for more details on this behavior).`]}),`\n`,_jsx(Heading,{level:`3`,id:`configuration-3`,children:`Configuration`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`condition`}),`: A Javascript function `,_jsx(_components.code,{children:`_fun`}),` which takes a single argument `,_jsx(_components.code,{children:`env`}),` (see the `,_jsx(_components.a,{href:`#code-block`,children:`Code block`}),` documentation for details) and returns a boolean value. If the value is `,_jsx(_components.code,{children:`true`}),` the loop continues, otherwise it stops.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`max_iterations`}),`: The maximum number of iterations to execute the blocks in between the `,_jsx(_components.code,{children:`while`}),` and `,_jsx(_components.code,{children:`end`}),` blocks. Must be set and has a maximum value of `,_jsx(_components.strong,{children:`32`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`datasource-block`,children:`DataSource block`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`data_source`}),` block provides an interface to query a `,_jsx(_components.a,{href:`/docs/developer-platform/core-concepts/datasources`,children:`Datasource`}),` and return chunks that are semantically similar to the query provided. When executed, the query is embedded using the embedding model set on the Data Source and the resulting embedding vector is used to perform semantic search on the Data Sourceโs chunks.`]}),`\n`,_jsxs(_components.p,{children:[`The output of the `,_jsx(_components.code,{children:`data_source`}),` block is a list of document objects. Each document may include one or more chunks (only those that were returned from the search). The documents are sorted by decreasing order of the max of their retrieved chunks score. Please refer to the `,_jsx(_components.a,{href:`/docs/developer-platform/core-concepts/datasources`,children:`Datasources overview`}),` for more details about how documents are chunked to enable semantic search.`]}),`\n`,_jsx(Heading,{level:`3`,id:`specification-5`,children:`Specification`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`query`}),`: The query to embed and use to perform semantic search against the data source. The query can be templated using the `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs/#templates`,children:`Tera`}),` templating language (see the `,_jsx(_components.a,{href:`#chat-block-llm`,children:`Chat block`}),` documentation for more details on templating).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`full_text`}),`: Whether to return the full text of the retrieved documents (in addition to each chunk text). If true, each returned document object will have a `,_jsx(_components.code,{children:`text`}),` property containing the full text of the document.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`configuration-4`,children:`Configuration`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`top_k`}),`: The number of chunks to return. The resulting number of document objects may be smaller if multiple chunks from the same document are among the `,_jsx(_components.code,{children:`top_k`}),` retrieved chunks.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`data_sources`}),`: An array of objects representing the Data Sources to query. Note that the Dust interface currently only supports adding one Data Source to a block, but you can pass many by API. The objects must have the following properties: `,_jsx(_components.code,{children:`workspace_id`}),`, the id of the workspace who owns the Data Source, and `,_jsx(_components.code,{children:`data_source_id`}),`, the name of the Data Source.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`filter`}),`: An object representing the filters to apply to the query. The `,_jsx(_components.code,{children:`tags`}),` field is an object with properties `,_jsx(_components.code,{children:`in`}),` and `,_jsx(_components.code,{children:`not`}),`, both arrays of strings (the tags to filter on). The documentsโ tags must match at least one of the tags specified in `,_jsx(_components.code,{children:`in`}),` and none of the ones specified in `,_jsx(_components.code,{children:`not`}),`. The `,_jsx(_components.code,{children:`timestamp`}),` field is an object with properties `,_jsx(_components.code,{children:`gt`}),` and `,_jsx(_components.code,{children:`lt`}),`. The query will only return chunks from documents whose timestamp is greater than `,_jsx(_components.code,{children:`gt`}),` and lower than `,_jsx(_components.code,{children:`lt`}),`. The timestamp values are represented as epoch in ms. The filter configuration is optional, and each of the fields in `,_jsx(_components.code,{children:`tags`}),` or `,_jsx(_components.code,{children:`timestamp`}),` are also optional.`]}),`\n`,_jsx(_components.p,{children:`Example filter:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"in\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tag1\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tag2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`], `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"not\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`},`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"gt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1675215950729`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"lt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1680012404017`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`tags.in`}),` and `,_jsx(_components.code,{children:`tags.not`}),` values can be templated using the `,_jsx(_components.a,{href:`https://keats.github.io/tera/docs/#templates`,children:`Tera`}),` templating language (see the `,_jsx(_components.a,{href:`#chat-block-llm`,children:`Chat block`}),` documentation for more details on templating).`]}),`\n`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Core Blocks","description":null,"href":"/docs/developer-platform/legacy-dust-apps/blocks/core-blocks"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Input block","slug":"input-block","depth":2,"children":[{"title":"Specification","slug":"specification","depth":3,"children":[]}]},{"title":"Data block","slug":"data-block","depth":2,"children":[{"title":"Specification","slug":"specification-2","depth":3,"children":[]}]},{"title":"Code block","slug":"code-block","depth":2,"children":[{"title":"Specification","slug":"specification-3","depth":3,"children":[]},{"title":"Properties of the env variable","slug":"properties-of-the-env-variable","depth":3,"children":[]}]},{"title":"Chat block (LLM)","slug":"chat-block-llm","depth":2,"children":[{"title":"Prompt templating","slug":"prompt-templating","depth":3,"children":[]},{"title":"Specification","slug":"specification-4","depth":3,"children":[]},{"title":"Configuration","slug":"configuration","depth":3,"children":[]}]},{"title":"Map Reduce blocks","slug":"map-reduce-blocks","depth":2,"children":[{"title":"Configuration","slug":"configuration-2","depth":3,"children":[]}]},{"title":"While End blocks","slug":"while-end-blocks","depth":2,"children":[{"title":"Configuration","slug":"configuration-3","depth":3,"children":[]}]},{"title":"DataSource block","slug":"datasource-block","depth":2,"children":[{"title":"Specification","slug":"specification-5","depth":3,"children":[]},{"title":"Configuration","slug":"configuration-4","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dust","siteName":"Multiplayer AI","title":"Core Blocks - Multiplayer AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T17:01:56.631Z","originalFileLocation":"docs/developer-platform/legacy-dust-apps/blocks/core-blocks.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Multiplayer AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Core Blocks - Multiplayer AI\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Multiplayer AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dust.mintlify.app/_mintlify/api/og/v2?division=Blocks\u0026amp;title=Core+Blocks\u0026amp;theme=3f17262564c1a548e9d5f97b\u0026amp;signature=a9e96daa7211289bd1477d3f9bdddb0c557518d18967e200940199387ba2764f\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Core Blocks - Multiplayer AI\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dust.mintlify.app/_mintlify/api/og/v2?division=Blocks\u0026amp;title=Core+Blocks\u0026amp;theme=3f17262564c1a548e9d5f97b\u0026amp;signature=a9e96daa7211289bd1477d3f9bdddb0c557518d18967e200940199387ba2764f\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dust/UT3wRSe0pvPvrHSN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Multiplayer AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0C84FE\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/developer-platform/legacy-dust-apps/blocks/core-blocks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dust.tt/#organization\",\"name\":\"Multiplayer AI\",\"url\":\"https://docs.dust.tt\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dust/2DA36drRrorIkahi/branding/logo/light.svg?fit=max\u0026auto=format\u0026n=2DA36drRrorIkahi\u0026q=85\u0026s=3ca4f192f58eb9b80dc1e4c11fd5c8db\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dust.tt#website\",\"name\":\"Multiplayer AI\",\"url\":\"https://docs.dust.tt\",\"publisher\":{\"@id\":\"https://docs.dust.tt/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks#webpage\",\"url\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks\",\"name\":\"Core Blocks\",\"dateModified\":\"2026-10-27T17:01:56.631Z\",\"isPartOf\":{\"@id\":\"https://docs.dust.tt#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deprecated\",\"item\":\"https://docs.dust.tt/docs/user-documentation/deprecated/legacy-dust-apps/creating-google-calendar-events-from-a-dust-agent\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Legacy] Dust Apps\",\"item\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/what-is-a-dust-app\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Blocks\",\"item\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks#article\",\"headline\":\"Core Blocks\",\"name\":\"Core Blocks\",\"url\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dust.tt/docs/developer-platform/legacy-dust-apps/blocks/core-blocks#webpage\"},\"dateModified\":\"2026-10-27T17:01:56.631Z\",\"publisher\":{\"@id\":\"https://docs.dust.tt/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dust.tt#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Multiplayer AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Multiplayer AI","nav":{"global":null,"groups":[{"group":"Latest Updates","pages":[{"title":"Changelog","href":"/docs/changelog"}]},{"group":"Use cases","pages":[{"title":"Intro to Dust","href":"/docs/user-documentation/getting-started/intro-to-dust"},{"group":"Dust Rollout Guide","root":{"title":"Dust Rollout Guide","href":"/docs/user-documentation/getting-started/dust-rollout-guide/index"},"pages":[{"title":"Welcome to Dust","href":"/docs/user-documentation/getting-started/dust-rollout-guide/welcome-to-dust"},{"title":"Launch strategy","href":"/docs/user-documentation/getting-started/dust-rollout-guide/launch-strategy"},{"title":"Team onboarding material","href":"/docs/user-documentation/getting-started/dust-rollout-guide/team-onboarding-material"},{"title":"Build your builder community","href":"/docs/user-documentation/getting-started/dust-rollout-guide/build-your-builder-community"},{"title":"Admin guide: set up your Dust workspace","href":"/docs/user-documentation/getting-started/dust-rollout-guide/admin-guide-set-up-your-dust-workspace"},{"title":"Designing use cases","href":"/docs/user-documentation/getting-started/dust-rollout-guide/designing-use-cases"},{"title":"Educate \u0026 activate","href":"/docs/user-documentation/getting-started/dust-rollout-guide/educate-activate"},{"title":"Measure \u0026 expand","href":"/docs/user-documentation/getting-started/dust-rollout-guide/measure-expand"}]},{"group":"Use Cases \u0026 Guides","root":{"title":"Use Cases \u0026 Guides","href":"/docs/user-documentation/getting-started/use-cases-and-guides/index"},"pages":[{"title":"๐ค Sales","href":"/docs/user-documentation/getting-started/use-cases-and-guides/sales"},{"title":"๐ Customer Support","href":"/docs/user-documentation/getting-started/use-cases-and-guides/customer-support"},{"title":"๐ฃ Marketing \u0026 Content","href":"/docs/user-documentation/getting-started/use-cases-and-guides/marketing"},{"title":"๐ค Engineering","href":"/docs/user-documentation/getting-started/use-cases-and-guides/engineering"},{"title":"๐ Data Analytics","href":"/docs/user-documentation/getting-started/use-cases-and-guides/data-analytics"},{"title":"๐ Knowledge","href":"/docs/user-documentation/getting-started/use-cases-and-guides/knowledge"},{"title":"๐ฅ Recruiting \u0026 People","href":"/docs/user-documentation/getting-started/use-cases-and-guides/recruiting-and-people"},{"title":"๐ฆ Product","href":"/docs/user-documentation/getting-started/use-cases-and-guides/product-and-design"},{"title":"๐งโ๐คโ๐ง Collaboration","href":"/docs/user-documentation/getting-started/use-cases-and-guides/collaboration"}]},{"group":"FAQ","root":{"title":"FAQ","href":"/docs/user-documentation/getting-started/faq/index"},"pages":[{"group":"General questions","pages":[{"title":"What data sources can be connected to Dust?","href":"/docs/user-documentation/getting-started/faq/general-questions/what-data-sources-can-be-connected-to-dust"},{"title":"What AI models are available in Dust?","href":"/docs/user-documentation/getting-started/faq/general-questions/what-ai-models-are-available-in-dust"},{"title":"What tools are available in Dust?","href":"/docs/user-documentation/getting-started/faq/general-questions/what-tools-are-available-in-dust"},{"title":"What are the pricing plans for Dust?","href":"/docs/user-documentation/getting-started/faq/general-questions/what-are-the-pricing-plans-for-dust"},{"title":"How does Dust handle user data?","href":"/docs/user-documentation/getting-started/faq/general-questions/how-does-dust-handle-user-data"}]},{"group":"Managing agents","pages":[{"title":"I don't know how to start creating an agent, what should I do?","href":"/docs/user-documentation/getting-started/faq/managing-agents/i-dont-know-how-to-start-creating-an-agent-what-should-i-do"},{"title":"How do I edit a custom agent?","href":"/docs/user-documentation/getting-started/faq/managing-agents/how-do-i-edit-a-custom-agent"},{"title":"What settings / model should I use?","href":"/docs/user-documentation/getting-started/faq/managing-agents/what-settings-model-should-i-use"},{"title":"Can agents create a new file or document directly into Notion, Google Drive or other connected platforms?","href":"/docs/user-documentation/getting-started/faq/managing-agents/can-agents-create-a-new-file-or-document-directly-into-notion-google-drive-or-other-connected-platforms"},{"title":"What data do the agents have access to?","href":"/docs/user-documentation/getting-started/faq/managing-agents/what-data-do-the-agents-have-access-to"},{"title":"Do the agents have access to the internet?","href":"/docs/user-documentation/getting-started/faq/managing-agents/do-the-agents-have-access-to-the-internet"},{"title":"Does the Dust agent give accurate and safe responses?","href":"/docs/user-documentation/getting-started/faq/managing-agents/does-the-dust-agent-give-accurate-and-safe-responses"},{"title":"Is there a Dust conversation API?","href":"/docs/user-documentation/getting-started/faq/managing-agents/is-there-a-dust-conversation-api"},{"title":"Can I share a conversation?","href":"/docs/user-documentation/getting-started/faq/managing-agents/can-i-share-a-conversation"},{"title":"Can I delete or rename a conversation?","href":"/docs/user-documentation/getting-started/faq/managing-agents/can-i-delete-or-rename-a-conversation"},{"title":"Can I use the Dust agents in different languages?","href":"/docs/user-documentation/getting-started/faq/managing-agents/can-i-use-the-dust-agents-in-different-languages"},{"title":"How can I find the ID of an agent?","href":"/docs/user-documentation/getting-started/faq/managing-agents/how-can-i-find-the-id-of-an-agent"}]},{"group":"Troubleshooting \u0026 Limitations","pages":[{"title":"When asking a question about data within Slack, the link to the thread isn't always the right one","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/when-asking-a-question-about-data-within-slack-the-link-to-the-thread-isnt-always-the-right-one"},{"title":"I haven't received a login, or I am having trouble logging in","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/i-havent-received-a-login-or-i-am-having-trouble-logging-in"},{"title":"I try to create an agent using the Table Query tool, but it doesn't work","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/i-try-to-create-an-agent-using-the-table-query-tool-but-it-doesnt-work"},{"title":"The agent is producing links that don't work and falsely claiming something untrue, what's going on?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/the-agent-is-producing-links-that-dont-work-and-falsely-claiming-something-untrue-whats-going-on"},{"title":"Why doesn't the agent remember what I said earlier in a conversation?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/why-doesnt-the-agent-remember-what-i-said-earlier-in-a-conversation"},{"title":"Why isn't my recently updated document showing in agent responses?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/why-isnt-my-recently-updated-document-showing-in-agent-responses"},{"title":"Can Dust remember and incorporate my feedback in the future?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/can-dust-remember-and-incorporate-my-feedback-in-the-future"},{"title":"Is Dust down?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/is-dust-down"},{"title":"Why is Dust slow or my agent taking too long to respond?","href":"/docs/user-documentation/getting-started/faq/troubleshooting-and-limitations/why-is-dust-slow-or-my-agent-taking-too-long-to-respond"}]},{"title":"File size limits","href":"/docs/user-documentation/getting-started/faq/file-size-limits"},{"title":"How to Change Your Email Address in Dust","href":"/docs/user-documentation/getting-started/faq/how-to-change-your-email-address-in-dust"}]}]},{"group":"Agents","pages":[{"title":"Create your first agent","href":"/docs/user-documentation/agents/create-your-first-agent"},{"title":"Conversational building","href":"/docs/user-documentation/agents/conversational-building"},{"title":"Auto models and the model picker","href":"/docs/user-documentation/agents/model-selection"},{"group":"LLM Best practices","pages":[{"title":"How to write effective instructions","href":"/docs/user-documentation/agents/llm-best-practices/how-to-write-effective-instructions"},{"title":"Choosing the Right AI Model for Your Dust Agent","href":"/docs/user-documentation/agents/llm-best-practices/choosing-the-right-ai-model"},{"title":"Understanding LLMs Context Windows","href":"/docs/user-documentation/agents/llm-best-practices/understanding-llms-context-windows"},{"title":"Understanding LLM Limitations: Counting and Parsing Structured Data","href":"/docs/user-documentation/agents/llm-best-practices/understanding-llm-limitations"},{"title":"Understanding Retrieval Augmented Generation (RAG) and the search method in Dust","href":"/docs/user-documentation/agents/llm-best-practices/understanding-rag"}]},{"title":"Templates","href":"/docs/user-documentation/agents/templates"},{"group":"Dust default agents","pages":[{"title":"@dust Agent","href":"/docs/user-documentation/agents/default-agents/dust"},{"title":"@deep-dive Agent","href":"/docs/user-documentation/agents/default-agents/deep-dive-agent"},{"title":"@help Agent","href":"/docs/user-documentation/agents/default-agents/help"},{"title":"@analyst Agent","href":"/docs/user-documentation/agents/default-agents/analyst"},{"title":"Sidekick","href":"/docs/user-documentation/agents/default-agents/agent-builder-sidekick"}]},{"title":"Troubleshooting your agent","href":"/docs/user-documentation/agents/troubleshooting-your-agent"},{"title":"Structured output format","href":"/docs/user-documentation/agents/structured-output-format"},{"title":"Steering: Conversations that keep up with you","href":"/docs/user-documentation/agents/steering-conversations"},{"title":"Branch a Conversation","href":"/docs/user-documentation/agents/branch-a-conversation"},{"title":"Context Compaction","href":"/docs/user-documentation/agents/context-compaction"}]},{"group":"Skills","pages":[{"title":"Overview","href":"/docs/user-documentation/agents/skills/skills-overview"},{"title":"Skills management","href":"/docs/user-documentation/agents/skills/skills-management"},{"title":"Skill Examples","href":"/docs/user-documentation/agents/skills/skill-examples"},{"title":"Skill Availability","href":"/docs/user-documentation/agents/skill-availability"},{"title":"Discover Knowledge","href":"/docs/user-documentation/agents/discover-knowledge"},{"title":"Discover Skills","href":"/docs/user-documentation/agents/discover-skills"},{"title":"Discover Tools","href":"/docs/user-documentation/agents/discover-tools"},{"title":"Go Deep","href":"/docs/user-documentation/agents/go-deep"},{"title":"Dust Support","href":"/docs/user-documentation/agents/dust-support"},{"title":"Self Improving Skills","href":"/docs/user-documentation/agents/self-improving-skills"}]},{"group":"Capabilities","pages":[{"group":"Knowledge","root":{"title":"Knowledge","href":"/docs/user-documentation/agents/knowledge/index"},"pages":[{"title":"Search data sources","href":"/docs/user-documentation/agents/knowledge/search-data-sources"},{"title":"Table queries","href":"/docs/user-documentation/agents/knowledge/table-queries"},{"title":"Extract data","href":"/docs/user-documentation/agents/knowledge/extract-data"},{"title":"Include data","href":"/docs/user-documentation/agents/knowledge/include-data"},{"title":"Overview","href":"/docs/user-documentation/data-sources/overview"},{"title":"Connections","href":"/docs/user-documentation/data-sources/connections"},{"title":"Websites","href":"/docs/user-documentation/data-sources/websites"},{"title":"Folders","href":"/docs/user-documentation/data-sources/folders"},{"group":"Conversation Files","pages":[{"title":"Conversation Files","href":"/docs/user-documentation/data-sources/conversation-files/conversation-files"},{"title":"Read images","href":"/docs/user-documentation/data-sources/conversation-files/read-images"}]},{"group":"Custom connections","pages":[{"title":"[Zapier] Automatically add any datasource to Dust","href":"/docs/user-documentation/data-sources/custom-connections/zapier-automatically-add-datasource"},{"title":"[Beta] Import Jira issues","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-jira-issues"},{"title":"[Beta] Import Salesforce Data","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-salesforce-data"},{"title":"[Beta] Import Hubspot Data","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-hubspot-data"},{"title":"[Beta] Import Guru Cards","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-guru-cards"},{"title":"[Beta] Import Linear Issues","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-linear-issues"},{"title":"[Beta] Import Dropbox Files","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-dropbox-files"},{"title":"[Beta] Import Front Conversations","href":"/docs/user-documentation/data-sources/custom-connections/beta-import-front-conversations"}]}]},{"group":"Tools","root":{"title":"Tools","href":"/docs/user-documentation/agents/tools/index"},"pages":[{"title":"Airtable","href":"/docs/user-documentation/agents/tools/airtable"},{"title":"Agent Memory","href":"/docs/user-documentation/agents/tools/agent-memory"},{"title":"Asana","href":"/docs/user-documentation/agents/tools/asana"},{"title":"Ashby","href":"/docs/user-documentation/agents/tools/ashby"},{"title":"Attio","href":"/docs/user-documentation/agents/tools/attio"},{"title":"BigQuery","href":"/docs/user-documentation/agents/tools/bigquery"},{"title":"Canva","href":"/docs/user-documentation/agents/tools/canva"},{"title":"Confluence","href":"/docs/user-documentation/agents/tools/confluence"},{"title":"Databricks","href":"/docs/user-documentation/agents/tools/databricks"},{"title":"Fathom","href":"/docs/user-documentation/agents/tools/fathom"},{"title":"Gong","href":"/docs/user-documentation/agents/tools/gong"},{"title":"Freshservice","href":"/docs/user-documentation/agents/tools/freshservice"},{"title":"Front","href":"/docs/user-documentation/agents/tools/front"},{"title":"GitHub","href":"/docs/user-documentation/agents/tools/github"},{"title":"Gmail","href":"/docs/user-documentation/agents/tools/gmail"},{"title":"Google Calendar","href":"/docs/user-documentation/agents/tools/google-calendar"},{"title":"Google Drive","href":"/docs/user-documentation/agents/tools/google-drive"},{"title":"[Deprecated] Google Sheets","href":"/docs/user-documentation/agents/tools/google-sheets-deprecated"},{"title":"HubSpot","href":"/docs/user-documentation/agents/tools/hubspot"},{"title":"Image Generation","href":"/docs/user-documentation/agents/tools/image-generation"},{"title":"Jira","href":"/docs/user-documentation/agents/tools/jira"},{"title":"JIT tools","href":"/docs/user-documentation/agents/tools/jit-tools"},{"title":"Microsoft Outlook","href":"/docs/user-documentation/agents/tools/microsoft-outlook"},{"title":"Microsoft Sharepoint and OneDrive tools","href":"/docs/user-documentation/agents/tools/microsoft-sharepoint-and-onedrive"},{"title":"Microsoft Teams","href":"/docs/user-documentation/agents/tools/microsoft-teams"},{"title":"Microsoft Excel","href":"/docs/user-documentation/agents/tools/microsoft-excel"},{"title":"Miro","href":"/docs/user-documentation/agents/tools/miro"},{"title":"Monday","href":"/docs/user-documentation/agents/tools/monday-com"},{"title":"NetSuite","href":"/docs/user-documentation/agents/tools/netsuite"},{"title":"Notion","href":"/docs/user-documentation/agents/tools/notion"},{"title":"Power BI","href":"/docs/user-documentation/agents/tools/power-bi"},{"title":"Productboard","href":"/docs/user-documentation/agents/tools/productboard"},{"title":"Slack tools","href":"/docs/user-documentation/agents/tools/slack-tools"},{"title":"UKG Ready","href":"/docs/user-documentation/agents/tools/ukg-ready"},{"title":"Val Town","href":"/docs/user-documentation/agents/tools/val-town"},{"title":"Vanta","href":"/docs/user-documentation/agents/tools/vanta"},{"title":"Voice and sound generation","href":"/docs/user-documentation/agents/tools/voice-and-sound-generation"},{"title":"Salesloft","href":"/docs/user-documentation/agents/tools/salesloft"},{"title":"Semrush","href":"/docs/user-documentation/agents/tools/semrush"},{"title":"ServiceNow","href":"/docs/user-documentation/agents/tools/servicenow"},{"title":"Slab","href":"/docs/user-documentation/agents/tools/slab"},{"title":"Snowflake","href":"/docs/user-documentation/agents/tools/snowflake"},{"title":"Statuspage","href":"/docs/user-documentation/agents/tools/statuspage"},{"title":"Run agent","href":"/docs/user-documentation/agents/tools/run-agent"},{"title":"Web Search \u0026 Browse","href":"/docs/user-documentation/agents/tools/web-search-and-browse"},{"title":"Zendesk","href":"/docs/user-documentation/agents/tools/zendesk"},{"title":"Wake-ups","href":"/docs/user-documentation/agents/tools/wake-ups"},{"title":"Computer","href":"/docs/user-documentation/agents/tools/computer"}]},{"group":"Triggers","root":{"title":"Triggers","href":"/docs/user-documentation/agents/triggers/index"},"pages":[{"title":"Credits usage","href":"/docs/user-documentation/agents/triggers/credits-usage"},{"title":"Schedules","href":"/docs/user-documentation/agents/triggers/schedules"},{"group":"Webhooks","root":{"title":"Webhooks","href":"/docs/user-documentation/agents/triggers/webhooks/index"},"pages":[{"title":"Filter webhooks payload","href":"/docs/user-documentation/agents/triggers/webhooks/filter-webhooks-payload"},{"title":"Rate Limiting","href":"/docs/user-documentation/agents/triggers/webhooks/rate-limiting"}]}]},{"group":"Frames","pages":[{"title":"Overview","href":"/docs/user-documentation/agents/frames/overview"},{"title":"White-labeled Frames","href":"/docs/user-documentation/agents/frames/white-labeled-frames"}]},{"group":"Integrations","root":{"title":"Integrations","href":"/docs/user-documentation/agents/integrations/index"},"pages":[{"title":"Dust MCP Server","href":"/docs/user-documentation/agents/integrations/dust-mcp-server"},{"group":"Dust in Slack","root":{"title":"Dust in Slack","href":"/docs/user-documentation/agents/integrations/dust-in-slack/index"},"pages":[{"title":"Slack Auto-Reply without @mention","href":"/docs/user-documentation/agents/integrations/dust-in-slack/slack-auto-reply"},{"title":"[Beta] Slack Auto-Join","href":"/docs/user-documentation/agents/integrations/dust-in-slack/slack-auto-join"},{"title":"Slack workflows","href":"/docs/user-documentation/agents/integrations/dust-in-slack/slack-workflows"}]},{"title":"Send and Forward Email to Agents","href":"/docs/user-documentation/agents/integrations/send-and-forward-email-to-agents"},{"title":"Zapier","href":"/docs/user-documentation/agents/integrations/zapier"},{"title":"Make.com","href":"/docs/user-documentation/agents/integrations/make-com"},{"title":"n8n","href":"/docs/user-documentation/agents/integrations/n8n"},{"title":"Power Automate","href":"/docs/user-documentation/agents/integrations/power-automate"},{"title":"Meeting transcripts","href":"/docs/user-documentation/agents/integrations/meeting-transcripts"},{"title":"Google Sheets Add-on","href":"/docs/user-documentation/agents/integrations/google-sheets-add-on"},{"title":"Dust in Zendesk","href":"/docs/user-documentation/agents/integrations/dust-in-zendesk"},{"title":"Browser Extension (Chrome, Firefox \u0026 Chromium-based browsers)","href":"/docs/user-documentation/agents/integrations/browser-extension"},{"title":"Raycast Extension","href":"/docs/user-documentation/agents/integrations/raycast-extension"},{"title":"Dust in Teams","href":"/docs/user-documentation/agents/integrations/dust-in-teams"}]}]},{"group":"Pods","pages":[{"title":"Overview","href":"/docs/user-documentation/pods/overview"},{"title":"Members and roles","href":"/docs/user-documentation/pods/members-and-roles"},{"title":"Tasks","href":"/docs/user-documentation/pods/tasks"},{"title":"Conversations","href":"/docs/user-documentation/pods/conversations"},{"title":"Files","href":"/docs/user-documentation/pods/files"},{"title":"Frames","href":"/docs/user-documentation/pods/frames"},{"title":"Agent tools","href":"/docs/user-documentation/pods/agent-tools"},{"title":"Admin controls","href":"/docs/user-documentation/pods/admin-controls"},{"group":"Examples","pages":[{"title":"Shared asset library","href":"/docs/user-documentation/pods/examples/shared-asset-library"},{"title":"Personal second brain","href":"/docs/user-documentation/pods/examples/personal-second-brain"},{"title":"Initiative and project management","href":"/docs/user-documentation/pods/examples/initiative-and-project-management"},{"title":"Ticket handling and support knowledge","href":"/docs/user-documentation/pods/examples/ticket-handling-and-support-knowledge"},{"title":"One Pod per customer","href":"/docs/user-documentation/pods/examples/one-pod-per-customer"},{"title":"Content and editorial production","href":"/docs/user-documentation/pods/examples/content-and-editorial-production"},{"title":"Competitive intelligence","href":"/docs/user-documentation/pods/examples/competitive-intelligence"}]}]},{"group":"Admins","pages":[{"title":"Quickstart","href":"/docs/user-documentation/admins/quickstart"},{"group":"Admin Governance","pages":[{"title":"Workspace Governance: Roles, Groups \u0026 Permissions ","href":"/docs/user-documentation/admins/admin-governance/workspace-governance-roles-groups-and-permissions"},{"title":"Group managers","href":"/docs/user-documentation/admins/admin-governance/group-managers"},{"title":"Access Controls and Permissions","href":"/docs/user-documentation/admins/admin-governance/access-controls-and-permissions"},{"title":"EU-hosted models","href":"/docs/user-documentation/admins/admin-governance/eu-hosted-models"},{"group":"Single Sign-On (SSO)","pages":[{"title":"Single Sign-On (SSO)","href":"/docs/user-documentation/admins/admin-governance/single-sign-on-sso/single-sign-on-sso"},{"title":"SAML SSO","href":"/docs/user-documentation/admins/admin-governance/single-sign-on-sso/saml-sso"}]},{"title":"Users and groups provisioning","href":"/docs/user-documentation/admins/admin-governance/users-and-groups-provisioning"},{"title":"Merging user accounts","href":"/docs/user-documentation/admins/admin-governance/merging-user-accounts"}]},{"title":"Spaces management","href":"/docs/user-documentation/admins/spaces-management"},{"title":"Agents management","href":"/docs/user-documentation/admins/agents-management"},{"group":"Connections Management","root":{"title":"Connections Management","href":"/docs/user-documentation/admins/connections-management/index"},"pages":[{"title":"Google Drive","href":"/docs/user-documentation/admins/connections-management/google-drive"},{"title":"Notion","href":"/docs/user-documentation/admins/connections-management/notion"},{"title":"Confluence","href":"/docs/user-documentation/admins/connections-management/confluence"},{"title":"Intercom","href":"/docs/user-documentation/admins/connections-management/intercom"},{"title":"Github","href":"/docs/user-documentation/admins/connections-management/github"},{"title":"Microsoft","href":"/docs/user-documentation/admins/connections-management/microsoft"},{"title":"Zendesk","href":"/docs/user-documentation/admins/connections-management/zendesk"},{"title":"Snowflake","href":"/docs/user-documentation/admins/connections-management/snowflake"},{"title":"BigQuery","href":"/docs/user-documentation/admins/connections-management/bigquery"},{"title":"Gong","href":"/docs/user-documentation/admins/connections-management/gong"},{"title":"Slack","href":"/docs/user-documentation/admins/connections-management/slack"}]},{"group":"Tools management","pages":[{"title":"Adding an MCP Server","href":"/docs/user-documentation/admins/tools-management/adding-an-mcp-server"},{"title":"Static egress IP addresses","href":"/docs/user-documentation/admins/tools-management/static-egress-ips"},{"title":"Personal vs Shared Credentials for Tools \u0026 MCP Servers","href":"/docs/user-documentation/admins/tools-management/personal-vs-shared-credentials"},{"group":"Salesforce","pages":[{"title":"Salesforce","href":"/docs/user-documentation/admins/tools-management/salesforce/salesforce"},{"title":"Salesforce - Notes on API limit and permissions","href":"/docs/user-documentation/admins/tools-management/salesforce/salesforce-notes-on-api-limit-and-permissions"}]},{"title":"Managing Microsoft tools","href":"/docs/user-documentation/admins/tools-management/managing-microsoft-tools"},{"title":"Computer admin setup","href":"/docs/user-documentation/admins/tools-management/computer-admin-setup"}]},{"title":"Analytics","href":"/analytics"},{"title":"API keys","href":"/docs/user-documentation/admins/api-keys"},{"group":"Audit Logs","pages":[{"title":"Audit Logs","href":"/docs/user-documentation/admins/audit-logs/audit-logs"},{"title":"Audit Logs: Events Reference","href":"/docs/user-documentation/admins/audit-logs/audit-logs-events-reference"}]},{"group":"Usage, seats \u0026 credits","pages":[{"title":"Seat management","href":"/docs/user-documentation/admins/usage-seats-and-credits/seat-management"},{"title":"Credits","href":"/docs/user-documentation/admins/usage-seats-and-credits/credits"},{"title":"Credit management","href":"/docs/user-documentation/admins/usage-seats-and-credits/credit-management"},{"title":"Optimize credit consumption","href":"/docs/user-documentation/admins/usage-seats-and-credits/optimize-credit-consumption"},{"title":"Model access tiers","href":"/docs/user-documentation/admins/usage-seats-and-credits/model-access-tiers"},{"title":"Train your team on credit optimization","href":"/docs/user-documentation/admins/usage-seats-and-credits/train-team-credit-optimization"}]},{"group":"Billing","pages":[{"title":"Subscriptions \u0026 Payments","href":"/docs/user-documentation/admins/billing/subscriptions-and-payments"}]},{"group":"Admin Troubleshooting","pages":[{"title":"Troubleshooting","href":"/docs/user-documentation/admins/admin-troubleshooting/admin-troubleshooting"},{"title":"Slack Troubleshooting","href":"/docs/user-documentation/admins/admin-troubleshooting/slack-troubleshooting"}]}]},{"group":"Developers","pages":[{"title":"Client Side MCP Server (Preview)","href":"/docs/user-documentation/developers/client-side-mcp-server"},{"group":"Overview","pages":[{"title":"Developer platform","href":"/docs/developer-platform/overview/developer-platform"},{"title":"JavaScript SDK","href":"/docs/developer-platform/overview/javascript-sdk"}]},{"group":"Core Concepts","pages":[{"title":"Datasources","href":"/docs/developer-platform/core-concepts/datasources"},{"title":"Chunks and Documents","href":"/docs/developer-platform/core-concepts/chunks-and-documents"},{"title":"Rate Limits","href":"/docs/developer-platform/core-concepts/rate-limits"}]},{"group":"Dust API Documentation","pages":[{"title":"OpenAPI \u0026 Postman","href":"/docs/developer-platform/dust-api-documentation/openapi-and-postman"},{"group":"Analytics","pages":[{"title":"Export consumption analytics","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/analytics/consumption/export","href":"/api-reference/analytics/export-consumption-analytics"},{"title":"Export workspace analytics","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/analytics/export","href":"/api-reference/analytics/export-workspace-analytics"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/agent_configurations","href":"/api-reference/agents/list-agents"},{"title":"Export agent configuration as YAML","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/agent_configurations/{sId}/export/yaml","href":"/api-reference/agents/export-agent-configuration-as-yaml"},{"title":"Get agent configuration","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/agent_configurations/{sId}","href":"/api-reference/agents/get-agent-configuration"},{"title":"Archive agent configuration","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/assistant/agent_configurations/{sId}","href":"/api-reference/agents/archive-agent-configuration"},{"title":"Update agent configuration","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc patch /api/v1/w/{wId}/assistant/agent_configurations/{sId}","href":"/api-reference/agents/update-agent-configuration"},{"title":"Import agent configuration","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/agent_configurations/import","href":"/api-reference/agents/import-agent-configuration"},{"title":"Search agents by name","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/agent_configurations/search","href":"/api-reference/agents/search-agents-by-name"}]},{"group":"Conversations","pages":[{"title":"Cancel message generation in a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/cancel","href":"/api-reference/conversations/cancel-message-generation-in-a-conversation"},{"title":"Get conversation consumption","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/consumption","href":"/api-reference/conversations/get-conversation-consumption"},{"title":"Create a content fragment","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/content_fragments","href":"/api-reference/conversations/create-a-content-fragment"},{"title":"Get the events for a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/events","href":"/api-reference/conversations/get-the-events-for-a-conversation"},{"title":"Download a conversation-scoped file by path","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/files/{rel}","href":"/api-reference/conversations/download-a-conversation-scoped-file-by-path"},{"title":"Get a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}","href":"/api-reference/conversations/get-a-conversation"},{"title":"Update a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc patch /api/v1/w/{wId}/assistant/conversations/{cId}","href":"/api-reference/conversations/update-a-conversation"},{"title":"Answer a user question in a conversation message","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/answer-question","href":"/api-reference/conversations/answer-a-user-question-in-a-conversation-message"},{"title":"Edit an existing message in a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/edit","href":"/api-reference/conversations/edit-an-existing-message-in-a-conversation"},{"title":"Get events for a message","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/events","href":"/api-reference/conversations/get-events-for-a-message"},{"title":"Validate an action in a conversation message","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/validate-action","href":"/api-reference/conversations/validate-an-action-in-a-conversation-message"},{"title":"Create a message","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/messages","href":"/api-reference/conversations/create-a-message"},{"title":"Update conversation sharing","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc patch /api/v1/w/{wId}/assistant/conversations/{cId}/sharing","href":"/api-reference/conversations/update-conversation-sharing"},{"title":"Create a new conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations","href":"/api-reference/conversations/create-a-new-conversation"},{"title":"Create a file upload URL","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/files","href":"/api-reference/conversations/create-a-file-upload-url"}]},{"group":"Feedbacks","pages":[{"title":"Get feedbacks for a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/feedbacks","href":"/api-reference/feedbacks/get-feedbacks-for-a-conversation"},{"title":"Submit feedback for a specific message in a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/feedbacks","href":"/api-reference/feedbacks/submit-feedback-for-a-specific-message-in-a-conversation"},{"title":"Delete feedback for a specific message","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/assistant/conversations/{cId}/messages/{mId}/feedbacks","href":"/api-reference/feedbacks/delete-feedback-for-a-specific-message"}]},{"group":"Mentions","pages":[{"title":"Get mention suggestions for a conversation","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/conversations/{cId}/mentions/suggestions","href":"/api-reference/mentions/get-mention-suggestions-for-a-conversation"},{"title":"Parse mentions in markdown text","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/assistant/mentions/parse","href":"/api-reference/mentions/parse-mentions-in-markdown-text"},{"title":"Get mention suggestions","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/assistant/mentions/suggestions","href":"/api-reference/mentions/get-mention-suggestions"}]},{"group":"MCP","pages":[{"title":"Deregister a client-side MCP server","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/mcp/deregister","href":"/api-reference/mcp/deregister-a-client-side-mcp-server"},{"title":"Update heartbeat for a client-side MCP server","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/mcp/heartbeat","href":"/api-reference/mcp/update-heartbeat-for-a-client-side-mcp-server"},{"title":"Register a client-side MCP server","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/mcp/register","href":"/api-reference/mcp/register-a-client-side-mcp-server"},{"title":"Stream MCP tool requests for a workspace","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/mcp/requests","href":"/api-reference/mcp/stream-mcp-tool-requests-for-a-workspace"},{"title":"Submit MCP tool execution results","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/mcp/results","href":"/api-reference/mcp/submit-mcp-tool-execution-results"}]},{"group":"Search","pages":[{"title":"Search for nodes in the workspace (streaming)","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/search","href":"/api-reference/search/search-for-nodes-in-the-workspace-streaming"},{"title":"Search for nodes in the workspace","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/search","href":"/api-reference/search/search-for-nodes-in-the-workspace"},{"title":"Upload a tool file","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/search/tools/upload","href":"/api-reference/search/upload-a-tool-file"}]},{"group":"Skills","pages":[{"title":"Archive a skill","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/skills/{skillId}","href":"/api-reference/skills/archive-a-skill"},{"title":"List skills","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/skills","href":"/api-reference/skills/list-skills"},{"title":"Import skills from uploaded files","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/skills","href":"/api-reference/skills/import-skills-from-uploaded-files"}]},{"group":"Apps","pages":[{"title":"Get an app run","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/apps/{aId}/runs/{runId}","href":"/api-reference/apps/get-an-app-run"},{"title":"Create an app run","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/spaces/{spaceId}/apps/{aId}/runs","href":"/api-reference/apps/create-an-app-run"},{"title":"List apps","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/apps","href":"/api-reference/apps/list-apps"}]},{"group":"DatasourceViews","pages":[{"title":"Get a data source view","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_source_views/{dsvId}","href":"/api-reference/datasourceviews/get-a-data-source-view"},{"title":"Delete a data source view","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/spaces/{spaceId}/data_source_views/{dsvId}","href":"/api-reference/datasourceviews/delete-a-data-source-view"},{"title":"Update a data source view","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc patch /api/v1/w/{wId}/spaces/{spaceId}/data_source_views/{dsvId}","href":"/api-reference/datasourceviews/update-a-data-source-view"},{"title":"Search the data source view","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_source_views/{dsvId}/search","href":"/api-reference/datasourceviews/search-the-data-source-view"},{"title":"List Data Source Views","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_source_views","href":"/api-reference/datasourceviews/list-data-source-views"}]},{"group":"Datasources","pages":[{"title":"Check the upsert queue status for a data source","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/check_upsert_queue","href":"/api-reference/datasources/check-the-upsert-queue-status-for-a-data-source"},{"title":"Retrieve a document from a data source","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/documents/{documentId}","href":"/api-reference/datasources/retrieve-a-document-from-a-data-source"},{"title":"Upsert a document in a data source","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/documents/{documentId}","href":"/api-reference/datasources/upsert-a-document-in-a-data-source"},{"title":"Delete a document from a data source","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/documents/{documentId}","href":"/api-reference/datasources/delete-a-document-from-a-data-source"},{"title":"Update the parents of a document","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/documents/{documentId}/parents","href":"/api-reference/datasources/update-the-parents-of-a-document"},{"title":"Get documents","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/documents","href":"/api-reference/datasources/get-documents"},{"title":"Search the data source","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/search","href":"/api-reference/datasources/search-the-data-source"},{"title":"Get a table","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}","href":"/api-reference/datasources/get-a-table"},{"title":"Delete a table","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}","href":"/api-reference/datasources/delete-a-table"},{"title":"Get a row","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}/rows/{rId}","href":"/api-reference/datasources/get-a-row"},{"title":"Delete a row","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc delete /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}/rows/{rId}","href":"/api-reference/datasources/delete-a-row"},{"title":"List rows","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}/rows","href":"/api-reference/datasources/list-rows"},{"title":"Upsert rows","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables/{tId}/rows","href":"/api-reference/datasources/upsert-rows"},{"title":"Get tables","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables","href":"/api-reference/datasources/get-tables"},{"title":"Upsert a table","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/spaces/{spaceId}/data_sources/{dsId}/tables","href":"/api-reference/datasources/upsert-a-table"},{"title":"Get data sources","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/data_sources","href":"/api-reference/datasources/get-data-sources"}]},{"group":"Tools","pages":[{"title":"List available MCP server views.","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces/{spaceId}/mcp_server_views","href":"/api-reference/tools/list-available-mcp-server-views"}]},{"group":"Spaces","pages":[{"title":"List available spaces.","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/spaces","href":"/api-reference/spaces/list-available-spaces"}]},{"group":"Triggers","pages":[{"title":"Get a trigger","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/triggers/{tId}","href":"/api-reference/triggers/get-a-trigger"},{"title":"Receive external webhook to trigger flows","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc post /api/v1/w/{wId}/triggers/hooks/{webhookSourceId}","href":"/api-reference/triggers/receive-external-webhook-to-trigger-flows"},{"title":"List triggers","deprecated":null,"version":null,"openapi":"https://dust.tt/api/doc get /api/v1/w/{wId}/triggers","href":"/api-reference/triggers/list-triggers"}]}]},{"group":"Dust Labs","pages":[{"title":"Dust-Labs repository","href":"/docs/developer-platform/dust-labs/dust-labs-repository"}]},{"group":"Dust CLI","pages":[{"title":"Dust CLI","href":"/docs/developer-platform/dust-cli/dust-cli"}]}]},{"group":"Deprecated","pages":[{"group":"[LEGACY] Dust Apps","pages":[{"title":"Creating Google Calendar events from a Dust agent","href":"/docs/user-documentation/deprecated/legacy-dust-apps/creating-google-calendar-events-from-a-dust-agent"},{"title":"Allowing an agent to send an email","href":"/docs/user-documentation/deprecated/legacy-dust-apps/allowing-an-agent-to-send-an-email"}]},{"title":"Dev : pre-configuring a custom MCP server","href":"/docs/user-documentation/deprecated/dev-pre-configuring-a-custom-mcp-server"},{"group":"[Legacy] Dust Apps","pages":[{"title":"What is a Dust App?","href":"/docs/developer-platform/legacy-dust-apps/what-is-a-dust-app"},{"title":"Dust Apps: Core Concepts","href":"/docs/developer-platform/legacy-dust-apps/dust-apps-core-concepts"},{"title":"Build your first Dust App","description":null,"href":"/docs/developer-platform/legacy-dust-apps/build-your-first-dust-app"},{"group":"Blocks","pages":[{"title":"Core Blocks","href":"/docs/developer-platform/legacy-dust-apps/blocks/core-blocks"}]}]}]}]},"title":"Core Blocks - Multiplayer AI","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}