Dust MCP API

Register a client-side Model Context Protocol server with a Dust workspace, stream MCP tool-call requests over SSE, return tool execution results back to Dust agents, and keep the server's heartbeat alive. Also lists the MCP server views available in a space.

OpenAPI Specification

dust-mcp-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Dust MCP API
  version: 1.0.2
  description: Register client-side Model Context Protocol servers, stream tool requests over SSE, return results, and list
    MCP server views available in a space.
  contact:
    name: Dust Support
    url: https://docs.dust.tt
  license:
    name: MIT
    url: https://github.com/dust-tt/dust/blob/main/LICENSE
servers:
- url: https://dust.tt
  description: Dust.tt API (us-central1)
- url: https://eu.dust.tt
  description: Dust.tt API (europe-west1)
tags:
- name: MCP
  description: MCP servers
- name: Tools
  description: Tools
paths:
  /api/v1/w/{wId}/mcp/heartbeat:
    post:
      summary: Update Heartbeat for a Client-Side MCP Server
      description: '[Documentation](https://docs.dust.tt/docs/client-side-mcp-server)

        Update the heartbeat for a previously registered client-side MCP server.

        This extends the TTL for the server registration.

        '
      tags:
      - MCP
      security:
      - BearerAuth: []
      parameters:
      - in: path
        name: wId
        required: true
        description: ID of the workspace
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - serverId
              properties:
                serverId:
                  type: string
                  description: The ID of the registered MCP server
      responses:
        '200':
          description: Heartbeat updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  expiresAt:
                    type: string
                    format: date-time
        '400':
          description: Bad Request. Missing or invalid parameters.
        '401':
          description: Unauthorized. Invalid or missing authentication token.
        '403':
          description: Forbidden. User does not have access to the workspace.
        '404':
          description: Not Found. MCP server not registered or expired.
  /api/v1/w/{wId}/mcp/register:
    post:
      summary: Register a Client-Side MCP Server
      description: '[Documentation](https://docs.dust.tt/docs/client-side-mcp-server)

        Register a client-side MCP server to Dust.

        The registration is scoped to the current user and workspace.

        A serverId identifier is generated and returned in the response.

        '
      tags:
      - MCP
      security:
      - BearerAuth: []
      parameters:
      - in: path
        name: wId
        required: true
        description: ID of the workspace
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - serverName
              properties:
                serverName:
                  type: string
                  description: Name of the MCP server
      responses:
        '200':
          description: Server registered successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  serverId:
                    type: string
                  expiresAt:
                    type: string
                    format: date-time
        '400':
          description: Bad Request. Missing or invalid parameters.
        '401':
          description: Unauthorized. Invalid or missing authentication token.
        '403':
          description: Forbidden. User does not have access to the workspace.
  /api/v1/w/{wId}/mcp/requests:
    get:
      summary: Stream MCP Tool Requests for a Workspace
      description: '[Documentation](https://docs.dust.tt/docs/client-side-mcp-server)

        Server-Sent Events (SSE) endpoint that streams MCP tool requests for a workspace.

        This endpoint is used by client-side MCP servers to listen for tool requests in real-time.

        The connection will remain open and events will be sent as new tool requests are made.

        '
      tags:
      - MCP
      security:
      - BearerAuth: []
      parameters:
      - in: path
        name: wId
        required: true
        description: ID of the workspace
        schema:
          type: string
      - in: query
        name: serverId
        required: true
        description: ID of the MCP server to filter events for
        schema:
          type: string
      - in: query
        name: lastEventId
        required: false
        description: ID of the last event to filter events for
        schema:
          type: string
      responses:
        '200':
          description: 'Connection established successfully. Events will be streamed in Server-Sent Events format.

            Each event will contain a tool request that needs to be processed by the MCP server.

            '
          content:
            text/event-stream:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    description: Type of the event (e.g. "tool_request")
                  data:
                    type: object
                    description: The tool request data
        '400':
          description: Bad Request. Missing or invalid parameters.
        '401':
          description: Unauthorized. Invalid or missing authentication token.
        '403':
          description: Forbidden. You don't have access to this workspace or MCP server.
        '500':
          description: Internal Server Error.
  /api/v1/w/{wId}/mcp/results:
    post:
      summary: Submit MCP Tool Execution Results
      description: '[Documentation](https://docs.dust.tt/docs/client-side-mcp-server)

        Endpoint for client-side MCP servers to submit the results of tool executions.

        This endpoint accepts the output from tools that were executed locally.

        '
      tags:
      - MCP
      security:
      - BearerAuth: []
      parameters:
      - in: path
        name: wId
        required: true
        description: ID of the workspace
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - result
              - serverId
              properties:
                result:
                  type: object
                  description: The result data from the tool execution
                serverId:
                  type: string
                  description: ID of the MCP server submitting the results
      responses:
        '200':
          description: Tool execution results successfully submitted
        '400':
          description: Bad Request. Missing or invalid parameters.
        '401':
          description: Unauthorized. Invalid or missing authentication token.
        '403':
          description: Forbidden. You don't have access to this workspace or MCP server.
        '404':
          description: Conversation or message not found.
        '500':
          description: Internal Server Error.
  /api/v1/w/{wId}/spaces/{spaceId}/mcp_server_views:
    get:
      summary: List Available MCP Server Views.
      description: Retrieves a list of enabled MCP server views (aka tools) for a specific space of the authenticated workspace.
      tags:
      - Tools
      security:
      - BearerAuth: []
      parameters:
      - in: path
        name: wId
        required: true
        description: Unique string identifier for the workspace
        schema:
          type: string
      - in: path
        name: spaceId
        required: true
        description: ID of the space
        schema:
          type: string
      responses:
        '200':
          description: MCP server views of the space
          content:
            application/json:
              schema:
                type: object
                properties:
                  spaces:
                    type: array
                    items:
                      $ref: '#/components/schemas/MCPServerView'
        '400':
          description: Bad Request. Missing or invalid parameters.
        '401':
          description: Unauthorized. Invalid or missing authentication token.
        '404':
          description: Workspace not found.
        '405':
          description: Method not supported.
        '500':
          description: Internal Server Error.
components:
  schemas:
    MCPServerView:
      type: object
      properties:
        id:
          type: integer
          description: Unique identifier for the MCP server view
          example: 123
        sId:
          type: string
          description: Unique string identifier for the MCP server view
          example: mcp_sv_abc123
        name:
          type: string
          nullable: true
          description: Custom name for the MCP server view (null if not set)
          example: My Custom MCP Server
        description:
          type: string
          nullable: true
          description: Custom description for the MCP server view (null if not set)
          example: This MCP server handles customer data operations
        createdAt:
          type: number
          description: Unix timestamp of when the MCP server view was created
          example: 1625097600
        updatedAt:
          type: number
          description: Unix timestamp of when the MCP server view was last updated
          example: 1625184000
        spaceId:
          type: string
          description: ID of the space containing the MCP server view
          example: spc_xyz789
        serverType:
          type: string
          enum:
          - remote
          - internal
          description: Type of the MCP server
          example: remote
        server:
          type: object
          properties:
            sId:
              type: string
              description: Unique string identifier for the MCP server
              example: mcp_srv_def456
            name:
              type: string
              description: Name of the MCP server
              example: Customer Data Server
            version:
              type: string
              description: Version of the MCP server
              example: 1.0.0
            description:
              type: string
              description: Description of the MCP server
              example: Handles customer data operations and queries
            icon:
              type: string
              description: Icon identifier for the MCP server
              example: database
            authorization:
              type: object
              nullable: true
              properties:
                provider:
                  type: string
                  description: OAuth provider for authorization
                  example: github
                supported_use_cases:
                  type: array
                  items:
                    type: string
                    enum:
                    - platform_actions
                    - personal_actions
                  description: Supported use cases for the authorization
                  example:
                  - platform_actions
                scope:
                  type: string
                  description: OAuth scope required
                  example: repo:read
            tools:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Name of the tool
                    example: query_customers
                  description:
                    type: string
                    description: Description of what the tool does
                    example: Query customer database for information
                  inputSchema:
                    type: object
                    description: JSON Schema for the tool's input parameters
                    example:
                      type: object
                      properties:
                        customerId:
                          type: string
            availability:
              type: string
              description: Availability status of the MCP server
              example: production
            allowMultipleInstances:
              type: boolean
              description: Whether multiple instances of this server can be created
              example: false
            documentationUrl:
              type: string
              nullable: true
              description: URL to the server's documentation
              example: https://docs.example.com/mcp-server
        oAuthUseCase:
          type: string
          nullable: true
          enum:
          - platform_actions
          - personal_actions
          description: OAuth use case for the MCP server view
          example: platform_actions
        editedByUser:
          type: object
          nullable: true
          description: Information about the user who last edited the MCP server view
          properties:
            editedAt:
              type: number
              nullable: true
              description: Unix timestamp of when the edit occurred
              example: 1625184000
            fullName:
              type: string
              nullable: true
              description: Full name of the editor
              example: John Doe
            imageUrl:
              type: string
              nullable: true
              description: Profile image URL of the editor
              example: https://example.com/profile/johndoe.jpg
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Your DUST API key is a Bearer token.