naftiko: 1.0.0-alpha2 info: label: Slack Conversations API — Conversations description: 'Slack Conversations API — Conversations. 18 operations. Lead operation: Slack Post Conversations Archive. Self-contained Naftiko capability covering one Slack business surface.' tags: - Slack - Conversations created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SLACK_API_KEY: SLACK_API_KEY capability: consumes: - type: http namespace: conversations-conversations baseUri: '' description: Slack Conversations API — Conversations business capability. Self-contained, no shared references. resources: - name: conversations.archive path: /conversations.archive operations: - name: postconversationsarchive method: POST description: Slack Post Conversations Archive outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.close path: /conversations.close operations: - name: postconversationsclose method: POST description: Slack Post Conversations Close outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.create path: /conversations.create operations: - name: postconversationscreate method: POST description: Slack Post Conversations Create outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.history path: /conversations.history operations: - name: getconversationshistory method: GET description: Slack Get Conversations History outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `conversations:history`' - name: channel in: query type: string description: Conversation ID to fetch history for. - name: latest in: query type: number description: End of time range of messages to include in results. - name: oldest in: query type: number description: Start of time range of messages to include in results. - name: inclusive in: query type: boolean description: Include messages with latest or oldest timestamp in results only when either timestamp is specified. - name: limit in: query type: integer description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached. - name: cursor in: query type: string description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Defaul - name: conversations.info path: /conversations.info operations: - name: getconversationsinfo method: GET description: Slack Get Conversations Info outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `conversations:read`' - name: channel in: query type: string description: Conversation ID to learn more about - name: include_locale in: query type: boolean description: Set this to `true` to receive the locale for this conversation. Defaults to `false` - name: include_num_members in: query type: boolean description: Set to `true` to include the member count for the specified conversation. Defaults to `false` - name: conversations.invite path: /conversations.invite operations: - name: postconversationsinvite method: POST description: Slack Post Conversations Invite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.join path: /conversations.join operations: - name: postconversationsjoin method: POST description: Slack Post Conversations Join outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `channels:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.kick path: /conversations.kick operations: - name: postconversationskick method: POST description: Slack Post Conversations Kick outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.leave path: /conversations.leave operations: - name: postconversationsleave method: POST description: Slack Post Conversations Leave outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.list path: /conversations.list operations: - name: getconversationslist method: GET description: Slack Get Conversations List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `conversations:read`' - name: exclude_archived in: query type: boolean description: Set to `true` to exclude archived channels from the list - name: types in: query type: string description: Mix and match channel types by providing a comma-separated list of any combination of `public_channel`, `private_channel`, `mpim`, `im` - name: limit in: query type: integer description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an int - name: cursor in: query type: string description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Defaul - name: conversations.mark path: /conversations.mark operations: - name: postconversationsmark method: POST description: Slack Post Conversations Mark outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.members path: /conversations.members operations: - name: getconversationsmembers method: GET description: Slack Get Conversations Members outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `conversations:read`' - name: channel in: query type: string description: ID of the conversation to retrieve members for - name: limit in: query type: integer description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached. - name: cursor in: query type: string description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Defaul - name: conversations.open path: /conversations.open operations: - name: postconversationsopen method: POST description: Slack Post Conversations Open outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.rename path: /conversations.rename operations: - name: postconversationsrename method: POST description: Slack Post Conversations Rename outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.replies path: /conversations.replies operations: - name: getconversationsreplies method: GET description: Slack Get Conversations Replies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `conversations:history`' - name: channel in: query type: string description: Conversation ID to fetch thread from. - name: ts in: query type: number description: 'Unique identifier of a thread''s parent message. `ts` must be the timestamp of an existing message with 0 or more replies. If there are no replies then just the ' - name: latest in: query type: number description: End of time range of messages to include in results. - name: oldest in: query type: number description: Start of time range of messages to include in results. - name: inclusive in: query type: boolean description: Include messages with latest or oldest timestamp in results only when either timestamp is specified. - name: limit in: query type: integer description: The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached. - name: cursor in: query type: string description: Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Defaul - name: conversations.setPurpose path: /conversations.setPurpose operations: - name: postconversationssetpurpose method: POST description: Slack Post Conversations Setpurpose outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.setTopic path: /conversations.setTopic operations: - name: postconversationssettopic method: POST description: Slack Post Conversations Settopic outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: conversations.unarchive path: /conversations.unarchive operations: - name: postconversationsunarchive method: POST description: Slack Post Conversations Unarchive outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `conversations:write`' - name: body in: body type: object description: Request body (JSON). required: false exposes: - type: rest namespace: conversations-conversations-rest port: 8080 description: REST adapter for Slack Conversations API — Conversations. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/conversations-archive name: conversations-archive description: REST surface for conversations.archive. operations: - method: POST name: postconversationsarchive description: Slack Post Conversations Archive call: conversations-conversations.postconversationsarchive with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-close name: conversations-close description: REST surface for conversations.close. operations: - method: POST name: postconversationsclose description: Slack Post Conversations Close call: conversations-conversations.postconversationsclose with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-create name: conversations-create description: REST surface for conversations.create. operations: - method: POST name: postconversationscreate description: Slack Post Conversations Create call: conversations-conversations.postconversationscreate with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-history name: conversations-history description: REST surface for conversations.history. operations: - method: GET name: getconversationshistory description: Slack Get Conversations History call: conversations-conversations.getconversationshistory with: token: rest.token channel: rest.channel latest: rest.latest oldest: rest.oldest inclusive: rest.inclusive limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/conversations-info name: conversations-info description: REST surface for conversations.info. operations: - method: GET name: getconversationsinfo description: Slack Get Conversations Info call: conversations-conversations.getconversationsinfo with: token: rest.token channel: rest.channel include_locale: rest.include_locale include_num_members: rest.include_num_members outputParameters: - type: object mapping: $. - path: /v1/conversations-invite name: conversations-invite description: REST surface for conversations.invite. operations: - method: POST name: postconversationsinvite description: Slack Post Conversations Invite call: conversations-conversations.postconversationsinvite with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-join name: conversations-join description: REST surface for conversations.join. operations: - method: POST name: postconversationsjoin description: Slack Post Conversations Join call: conversations-conversations.postconversationsjoin with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-kick name: conversations-kick description: REST surface for conversations.kick. operations: - method: POST name: postconversationskick description: Slack Post Conversations Kick call: conversations-conversations.postconversationskick with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-leave name: conversations-leave description: REST surface for conversations.leave. operations: - method: POST name: postconversationsleave description: Slack Post Conversations Leave call: conversations-conversations.postconversationsleave with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-list name: conversations-list description: REST surface for conversations.list. operations: - method: GET name: getconversationslist description: Slack Get Conversations List call: conversations-conversations.getconversationslist with: token: rest.token exclude_archived: rest.exclude_archived types: rest.types limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/conversations-mark name: conversations-mark description: REST surface for conversations.mark. operations: - method: POST name: postconversationsmark description: Slack Post Conversations Mark call: conversations-conversations.postconversationsmark with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-members name: conversations-members description: REST surface for conversations.members. operations: - method: GET name: getconversationsmembers description: Slack Get Conversations Members call: conversations-conversations.getconversationsmembers with: token: rest.token channel: rest.channel limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/conversations-open name: conversations-open description: REST surface for conversations.open. operations: - method: POST name: postconversationsopen description: Slack Post Conversations Open call: conversations-conversations.postconversationsopen with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-rename name: conversations-rename description: REST surface for conversations.rename. operations: - method: POST name: postconversationsrename description: Slack Post Conversations Rename call: conversations-conversations.postconversationsrename with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-replies name: conversations-replies description: REST surface for conversations.replies. operations: - method: GET name: getconversationsreplies description: Slack Get Conversations Replies call: conversations-conversations.getconversationsreplies with: token: rest.token channel: rest.channel ts: rest.ts latest: rest.latest oldest: rest.oldest inclusive: rest.inclusive limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/conversations-setpurpose name: conversations-setpurpose description: REST surface for conversations.setPurpose. operations: - method: POST name: postconversationssetpurpose description: Slack Post Conversations Setpurpose call: conversations-conversations.postconversationssetpurpose with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-settopic name: conversations-settopic description: REST surface for conversations.setTopic. operations: - method: POST name: postconversationssettopic description: Slack Post Conversations Settopic call: conversations-conversations.postconversationssettopic with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/conversations-unarchive name: conversations-unarchive description: REST surface for conversations.unarchive. operations: - method: POST name: postconversationsunarchive description: Slack Post Conversations Unarchive call: conversations-conversations.postconversationsunarchive with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: conversations-conversations-mcp port: 9090 transport: http description: MCP adapter for Slack Conversations API — Conversations. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: slack-post-conversations-archive description: Slack Post Conversations Archive hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsarchive with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-close description: Slack Post Conversations Close hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsclose with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-create description: Slack Post Conversations Create hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationscreate with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-conversations-history description: Slack Get Conversations History hints: readOnly: true destructive: false idempotent: true call: conversations-conversations.getconversationshistory with: token: tools.token channel: tools.channel latest: tools.latest oldest: tools.oldest inclusive: tools.inclusive limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: slack-get-conversations-info description: Slack Get Conversations Info hints: readOnly: true destructive: false idempotent: true call: conversations-conversations.getconversationsinfo with: token: tools.token channel: tools.channel include_locale: tools.include_locale include_num_members: tools.include_num_members outputParameters: - type: object mapping: $. - name: slack-post-conversations-invite description: Slack Post Conversations Invite hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsinvite with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-join description: Slack Post Conversations Join hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsjoin with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-kick description: Slack Post Conversations Kick hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationskick with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-leave description: Slack Post Conversations Leave hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsleave with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-conversations-list description: Slack Get Conversations List hints: readOnly: true destructive: false idempotent: true call: conversations-conversations.getconversationslist with: token: tools.token exclude_archived: tools.exclude_archived types: tools.types limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: slack-post-conversations-mark description: Slack Post Conversations Mark hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsmark with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-conversations-members description: Slack Get Conversations Members hints: readOnly: true destructive: false idempotent: true call: conversations-conversations.getconversationsmembers with: token: tools.token channel: tools.channel limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: slack-post-conversations-open description: Slack Post Conversations Open hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsopen with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-rename description: Slack Post Conversations Rename hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsrename with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-conversations-replies description: Slack Get Conversations Replies hints: readOnly: true destructive: false idempotent: true call: conversations-conversations.getconversationsreplies with: token: tools.token channel: tools.channel ts: tools.ts latest: tools.latest oldest: tools.oldest inclusive: tools.inclusive limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: slack-post-conversations-setpurpose description: Slack Post Conversations Setpurpose hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationssetpurpose with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-settopic description: Slack Post Conversations Settopic hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationssettopic with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-conversations-unarchive description: Slack Post Conversations Unarchive hints: readOnly: false destructive: false idempotent: false call: conversations-conversations.postconversationsunarchive with: token: tools.token body: tools.body outputParameters: - type: object mapping: $.