{"openapi":"3.1.0","info":{"title":"Dust (BYOK) API","version":"0.1.0","description":"Dust (BYOK) lets an AI assistant read your own Dust data through the Dust API with a key you supply (Dust workspace API key). Read-only: 11 tools (list_agents, search_agents, get_agent, list_spaces, list_data_sources, list_data_source_views, list_tables, list_documents, list_apps, list_skills, list_triggers). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-dust.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-dust/docs"},"termsOfService":"https://connectorbay.com/byok-dust/terms"},"servers":[{"url":"https://byok-dust.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-dust/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_agents":{"post":{"operationId":"list_agents","summary":"List the agents of a workspace with model, status, scope, version, skills and tags; choose the view (all, workspace, pub","description":"List the agents of a workspace with model, status, scope, version, skills and tags; choose the view (all, workspace, published, global, favorites). Use for \"Which Dust agents does my workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"view":{"anyOf":[{"enum":["all","all_unrestricted","list","workspace","published","global","favorites"],"type":"string"},{"type":"null"}],"default":null,"description":"Which agents to list.","title":"View"},"with_authors":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":null,"description":"True to include the recent authors of each agent.","title":"With Authors"}},"required":["workspace_id"],"title":"list_agentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_agents":{"post":{"operationId":"search_agents","summary":"Find agents by name (case-insensitive substring) among global and accessible published agents. Use for \"Is there a Dust ","description":"Find agents by name (case-insensitive substring) among global and accessible published agents. Use for \"Is there a Dust agent called Support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"query":{"description":"Text the agent name must contain.","maxLength":200,"title":"Query","type":"string"}},"required":["workspace_id","query"],"title":"search_agentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_agent":{"post":{"operationId":"get_agent","summary":"Get one agent's configuration: name, description, instructions, model, skills, tags and step limit. Use for \"Show the co","description":"Get one agent's configuration: name, description, instructions, model, skills, tags and step limit. Use for \"Show the configuration of Dust agent agt_1a2b3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"agent_id":{"description":"Dust agent id, for example agt_1a2b3c (list_agents returns it as sId).","maxLength":200,"title":"Agent Id","type":"string"}},"required":["workspace_id","agent_id"],"title":"get_agentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_spaces":{"post":{"operationId":"list_spaces","summary":"List the spaces you can access with kind and whether access is restricted. Use for \"Which Dust spaces can I access\".","description":"List the spaces you can access with kind and whether access is restricted. Use for \"Which Dust spaces can I access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"kinds":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated space kinds to keep: system, global, regular, project.","title":"Kinds"}},"required":["workspace_id"],"title":"list_spacesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_data_sources":{"post":{"operationId":"list_data_sources","summary":"List the data sources of a space with name, description, connector provider and creation time. Use for \"Which data sourc","description":"List the data sources of a space with name, description, connector provider and creation time. Use for \"Which data sources are in Dust space vlt_1a2b3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"space_id":{"description":"Dust space id (list_spaces returns it), for example vlt_1a2b3c.","maxLength":200,"title":"Space Id","type":"string"}},"required":["workspace_id","space_id"],"title":"list_data_sourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_data_source_views":{"post":{"operationId":"list_data_source_views","summary":"List the data source views of a space with category, kind, owning data source and last update. Use for \"Which data sourc","description":"List the data source views of a space with category, kind, owning data source and last update. Use for \"Which data source views does Dust space vlt_1a2b3c have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"space_id":{"description":"Dust space id (list_spaces returns it), for example vlt_1a2b3c.","maxLength":200,"title":"Space Id","type":"string"}},"required":["workspace_id","space_id"],"title":"list_data_source_viewsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tables":{"post":{"operationId":"list_tables","summary":"List the tables of a data source with title, description, MIME type, tags, column schema and timestamp. Use for \"Which t","description":"List the tables of a data source with title, description, MIME type, tags, column schema and timestamp. Use for \"Which tables does Dust data source dts_1a2b3c hold\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"space_id":{"description":"Dust space id (list_spaces returns it), for example vlt_1a2b3c.","maxLength":200,"title":"Space Id","type":"string"},"data_source_id":{"description":"Dust data source id (list_data_sources returns it), for example dts_1a2b3c.","maxLength":200,"title":"Data Source Id","type":"string"}},"required":["workspace_id","space_id","data_source_id"],"title":"list_tablesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_documents":{"post":{"operationId":"list_documents","summary":"List the documents of a data source with title, MIME type, tags, source URL, size and chunk count (text bodies are not r","description":"List the documents of a data source with title, MIME type, tags, source URL, size and chunk count (text bodies are not returned); paged by offset. Use for \"Which documents are in Dust data source dts_1a2b3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"space_id":{"description":"Dust space id (list_spaces returns it), for example vlt_1a2b3c.","maxLength":200,"title":"Space Id","type":"string"},"data_source_id":{"description":"Dust data source id (list_data_sources returns it), for example dts_1a2b3c.","maxLength":200,"title":"Data Source Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum documents to return.","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of documents to skip.","title":"Offset"}},"required":["workspace_id","space_id","data_source_id"],"title":"list_documentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_apps":{"post":{"operationId":"list_apps","summary":"List the Dust apps of a space with name and description. Use for \"Which Dust apps are in space vlt_1a2b3c\".","description":"List the Dust apps of a space with name and description. Use for \"Which Dust apps are in space vlt_1a2b3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"space_id":{"description":"Dust space id (list_spaces returns it), for example vlt_1a2b3c.","maxLength":200,"title":"Space Id","type":"string"}},"required":["workspace_id","space_id"],"title":"list_appsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_skills":{"post":{"operationId":"list_skills","summary":"List the workspace's custom skills with status, source, availability and descriptions. Use for \"Which custom skills does","description":"List the workspace's custom skills with status, source, availability and descriptions. Use for \"Which custom skills does my Dust workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"status":{"anyOf":[{"enum":["active","archived","suggested"],"type":"string"},{"type":"null"}],"default":null,"description":"Only skills in this status (default active).","title":"Status"}},"required":["workspace_id"],"title":"list_skillsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_triggers":{"post":{"operationId":"list_triggers","summary":"List agent triggers (schedules and webhooks) with kind, status and the agent they run; needs an admin API key. Use for \"","description":"List agent triggers (schedules and webhooks) with kind, status and the agent they run; needs an admin API key. Use for \"Which triggers run my Dust agents\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"Dust workspace id, the string after /w/ in your Dust URL (for example 0ab12cd34e).","maxLength":200,"title":"Workspace Id","type":"string"},"kind":{"anyOf":[{"enum":["schedule","webhook"],"type":"string"},{"type":"null"}],"default":null,"description":"Only triggers of this kind.","title":"Kind"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Triggers per page (default 50, maximum 100).","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Number of triggers to skip.","title":"Offset"}},"required":["workspace_id"],"title":"list_triggersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}