naftiko: 1.0.0-alpha2 info: label: Slack Chat API — Chat description: 'Slack Chat API — Chat. 10 operations. Lead operation: Slack Post Chat Delete. Self-contained Naftiko capability covering one Slack business surface.' tags: - Slack - Chat created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SLACK_API_KEY: SLACK_API_KEY capability: consumes: - type: http namespace: chat-chat baseUri: '' description: Slack Chat API — Chat business capability. Self-contained, no shared references. resources: - name: chat.delete path: /chat.delete operations: - name: postchatdelete method: POST description: Slack Post Chat Delete outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: chat.deleteScheduledMessage path: /chat.deleteScheduledMessage operations: - name: postchatdeletescheduledmessage method: POST description: Slack Post Chat Deletescheduledmessage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: chat.getPermalink path: /chat.getPermalink operations: - name: getchatgetpermalink method: GET description: Slack Get Chat Getpermalink outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: 'Authentication token. Requires scope: `none`' required: true - name: channel in: query type: string description: The ID of the conversation or channel containing the message required: true - name: message_ts in: query type: string description: A message's `ts` value, uniquely identifying it within a channel required: true - name: chat.meMessage path: /chat.meMessage operations: - name: postchatmemessage method: POST description: Slack Post Chat Memessage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: chat.postEphemeral path: /chat.postEphemeral operations: - name: postchatpostephemeral method: POST description: Slack Post Chat Postephemeral outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: chat.postMessage path: /chat.postMessage operations: - name: postchatpostmessage method: POST description: Slack Post Chat Postmessage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: chat.scheduleMessage path: /chat.scheduleMessage operations: - name: postchatschedulemessage method: POST description: Slack Post Chat Schedulemessage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' - name: body in: body type: object description: Request body (JSON). required: false - name: chat.scheduledMessages.list path: /chat.scheduledMessages.list operations: - name: getchatscheduledmessageslist method: GET description: Slack Get Chat Scheduledmessages List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `none`' - name: channel in: query type: string description: The channel of the scheduled messages - name: latest in: query type: number description: A UNIX timestamp of the latest value in the time range - name: oldest in: query type: number description: A UNIX timestamp of the oldest value in the time range - name: limit in: query type: integer description: Maximum number of original entries to return. - name: cursor in: query type: string description: 'For pagination purposes, this is the `cursor` value returned from a previous call to `chat.scheduledmessages.list` indicating where you want to start this call ' - name: chat.unfurl path: /chat.unfurl operations: - name: postchatunfurl method: POST description: Slack Post Chat Unfurl outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `links:write`' required: true - name: body in: body type: object description: Request body (JSON). required: true - name: chat.update path: /chat.update operations: - name: postchatupdate method: POST description: Slack Post Chat Update outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: header type: string description: 'Authentication token. Requires scope: `chat:write`' required: true - name: body in: body type: object description: Request body (JSON). required: true exposes: - type: rest namespace: chat-chat-rest port: 8080 description: REST adapter for Slack Chat API — Chat. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/chat-delete name: chat-delete description: REST surface for chat.delete. operations: - method: POST name: postchatdelete description: Slack Post Chat Delete call: chat-chat.postchatdelete with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-deletescheduledmessage name: chat-deletescheduledmessage description: REST surface for chat.deleteScheduledMessage. operations: - method: POST name: postchatdeletescheduledmessage description: Slack Post Chat Deletescheduledmessage call: chat-chat.postchatdeletescheduledmessage with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-getpermalink name: chat-getpermalink description: REST surface for chat.getPermalink. operations: - method: GET name: getchatgetpermalink description: Slack Get Chat Getpermalink call: chat-chat.getchatgetpermalink with: token: rest.token channel: rest.channel message_ts: rest.message_ts outputParameters: - type: object mapping: $. - path: /v1/chat-memessage name: chat-memessage description: REST surface for chat.meMessage. operations: - method: POST name: postchatmemessage description: Slack Post Chat Memessage call: chat-chat.postchatmemessage with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-postephemeral name: chat-postephemeral description: REST surface for chat.postEphemeral. operations: - method: POST name: postchatpostephemeral description: Slack Post Chat Postephemeral call: chat-chat.postchatpostephemeral with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-postmessage name: chat-postmessage description: REST surface for chat.postMessage. operations: - method: POST name: postchatpostmessage description: Slack Post Chat Postmessage call: chat-chat.postchatpostmessage with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-schedulemessage name: chat-schedulemessage description: REST surface for chat.scheduleMessage. operations: - method: POST name: postchatschedulemessage description: Slack Post Chat Schedulemessage call: chat-chat.postchatschedulemessage with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-scheduledmessages-list name: chat-scheduledmessages-list description: REST surface for chat.scheduledMessages.list. operations: - method: GET name: getchatscheduledmessageslist description: Slack Get Chat Scheduledmessages List call: chat-chat.getchatscheduledmessageslist with: token: rest.token channel: rest.channel latest: rest.latest oldest: rest.oldest limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/chat-unfurl name: chat-unfurl description: REST surface for chat.unfurl. operations: - method: POST name: postchatunfurl description: Slack Post Chat Unfurl call: chat-chat.postchatunfurl with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/chat-update name: chat-update description: REST surface for chat.update. operations: - method: POST name: postchatupdate description: Slack Post Chat Update call: chat-chat.postchatupdate with: token: rest.token body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: chat-chat-mcp port: 9090 transport: http description: MCP adapter for Slack Chat API — Chat. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: slack-post-chat-delete description: Slack Post Chat Delete hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatdelete with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-chat-deletescheduledmessage description: Slack Post Chat Deletescheduledmessage hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatdeletescheduledmessage with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-chat-getpermalink description: Slack Get Chat Getpermalink hints: readOnly: true destructive: false idempotent: true call: chat-chat.getchatgetpermalink with: token: tools.token channel: tools.channel message_ts: tools.message_ts outputParameters: - type: object mapping: $. - name: slack-post-chat-memessage description: Slack Post Chat Memessage hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatmemessage with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-chat-postephemeral description: Slack Post Chat Postephemeral hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatpostephemeral with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-chat-postmessage description: Slack Post Chat Postmessage hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatpostmessage with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-chat-schedulemessage description: Slack Post Chat Schedulemessage hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatschedulemessage with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-chat-scheduledmessages-list description: Slack Get Chat Scheduledmessages List hints: readOnly: true destructive: false idempotent: true call: chat-chat.getchatscheduledmessageslist with: token: tools.token channel: tools.channel latest: tools.latest oldest: tools.oldest limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: slack-post-chat-unfurl description: Slack Post Chat Unfurl hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatunfurl with: token: tools.token body: tools.body outputParameters: - type: object mapping: $. - name: slack-post-chat-update description: Slack Post Chat Update hints: readOnly: false destructive: false idempotent: false call: chat-chat.postchatupdate with: token: tools.token body: tools.body outputParameters: - type: object mapping: $.