naftiko: 1.0.0-alpha2 info: label: Drift — Conversations and Messages description: 'Drift — Conversations and Messages. 9 operations. Lead operation: Drift Fetch a conversation''s attachments. Self-contained Naftiko capability covering one Drift business surface.' tags: - Drift - Conversations and Messages created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: DRIFT_API_KEY: DRIFT_API_KEY capability: consumes: - type: http namespace: drift-conversations-and-messages baseUri: http://{{base_url}} description: Drift — Conversations and Messages business capability. Self-contained, no shared references. resources: - name: attachments-id-data path: /attachments/{id}/data operations: - name: get method: GET description: Drift Fetch a conversation's attachments outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The Drift documentId required: true - name: conversations-list path: /conversations/list operations: - name: get method: GET description: Drift List conversations outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: string description: Max number of conversations to retrieve (max 100, default 25). - name: statusId in: query type: string description: 'Return only conversations that match the provided status code. Uses the following values: OPEN, CLOSED, PENDING' - name: page_token in: query type: string description: Allows you to move to the next page - name: conversations-new path: /conversations/new operations: - name: post method: POST description: Drift Create a conversation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: conversations-stats path: /conversations/stats operations: - name: get method: GET description: Drift List conversation statuses outputRawFormat: json outputParameters: - name: result type: object value: $. - name: conversations-id path: /conversations/{id} operations: - name: get method: GET description: Drift Fetch a conversation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The Drift conversationId required: true - name: conversations-id-json_transcript path: /conversations/{id}/json_transcript operations: - name: get method: GET description: Drift Fetch a conversation's transcript as a JSON object outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The Drift conversationId required: true - name: conversations-id-messages path: /conversations/{id}/messages operations: - name: post method: POST description: Drift Create a message outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The Drift conversationId required: true - name: body in: body type: object description: Request body (JSON). required: false - name: get method: GET description: Drift Fetch a conversation's messages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: next in: query type: string description: Page number where page sizes are always 50 - name: id in: path type: string description: The Drift conversationId required: true - name: conversations-id-transcript path: /conversations/{id}/transcript operations: - name: get method: GET description: Drift Fetch a conversation's transcript as a string outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The Drift conversationId required: true authentication: type: bearer token: '{{env.DRIFT_API_KEY}}' exposes: - type: rest namespace: drift-conversations-and-messages-rest port: 8080 description: REST adapter for Drift — Conversations and Messages. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/attachments/{id}/data name: attachments-id-data description: REST surface for attachments-id-data. operations: - method: GET name: get description: Drift Fetch a conversation's attachments call: drift-conversations-and-messages.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/conversations/list name: conversations-list description: REST surface for conversations-list. operations: - method: GET name: get description: Drift List conversations call: drift-conversations-and-messages.get with: limit: rest.limit statusId: rest.statusId page_token: rest.page_token outputParameters: - type: object mapping: $. - path: /v1/conversations/new name: conversations-new description: REST surface for conversations-new. operations: - method: POST name: post description: Drift Create a conversation call: drift-conversations-and-messages.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations/stats name: conversations-stats description: REST surface for conversations-stats. operations: - method: GET name: get description: Drift List conversation statuses call: drift-conversations-and-messages.get outputParameters: - type: object mapping: $. - path: /v1/conversations/{id} name: conversations-id description: REST surface for conversations-id. operations: - method: GET name: get description: Drift Fetch a conversation call: drift-conversations-and-messages.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/conversations/{id}/json-transcript name: conversations-id-json-transcript description: REST surface for conversations-id-json_transcript. operations: - method: GET name: get description: Drift Fetch a conversation's transcript as a JSON object call: drift-conversations-and-messages.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/conversations/{id}/messages name: conversations-id-messages description: REST surface for conversations-id-messages. operations: - method: POST name: post description: Drift Create a message call: drift-conversations-and-messages.post with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - method: GET name: get description: Drift Fetch a conversation's messages call: drift-conversations-and-messages.get with: next: rest.next id: rest.id outputParameters: - type: object mapping: $. - path: /v1/conversations/{id}/transcript name: conversations-id-transcript description: REST surface for conversations-id-transcript. operations: - method: GET name: get description: Drift Fetch a conversation's transcript as a string call: drift-conversations-and-messages.get with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: drift-conversations-and-messages-mcp port: 9090 transport: http description: MCP adapter for Drift — Conversations and Messages. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: drift-fetch-conversation-s-attachments description: Drift Fetch a conversation's attachments hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: id: tools.id outputParameters: - type: object mapping: $. - name: drift-list-conversations description: Drift List conversations hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: limit: tools.limit statusId: tools.statusId page_token: tools.page_token outputParameters: - type: object mapping: $. - name: drift-create-conversation description: Drift Create a conversation hints: readOnly: false destructive: false idempotent: false call: drift-conversations-and-messages.post with: body: tools.body outputParameters: - type: object mapping: $. - name: drift-list-conversation-statuses description: Drift List conversation statuses hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get outputParameters: - type: object mapping: $. - name: drift-fetch-conversation description: Drift Fetch a conversation hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: id: tools.id outputParameters: - type: object mapping: $. - name: drift-fetch-conversation-s-transcript-json description: Drift Fetch a conversation's transcript as a JSON object hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: id: tools.id outputParameters: - type: object mapping: $. - name: drift-create-message description: Drift Create a message hints: readOnly: false destructive: false idempotent: false call: drift-conversations-and-messages.post with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: drift-fetch-conversation-s-messages description: Drift Fetch a conversation's messages hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: next: tools.next id: tools.id outputParameters: - type: object mapping: $. - name: drift-fetch-conversation-s-transcript-string description: Drift Fetch a conversation's transcript as a string hints: readOnly: true destructive: false idempotent: true call: drift-conversations-and-messages.get with: id: tools.id outputParameters: - type: object mapping: $.