naftiko: 1.0.0-alpha2 info: label: Slack Web API — Reactions description: 'Slack Web API — Reactions. 4 operations. Lead operation: Slack Add an Emoji Reaction. Self-contained Naftiko capability covering one Slack business surface.' tags: - Slack - Reactions created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SLACK_API_KEY: SLACK_API_KEY capability: consumes: - type: http namespace: web-reactions baseUri: https://slack.com/api description: Slack Web API — Reactions business capability. Self-contained, no shared references. resources: - name: reactions.add path: /reactions.add operations: - name: reactionsadd method: POST description: Slack Add an Emoji Reaction outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: reactions.get path: /reactions.get operations: - name: reactionsget method: GET description: Slack Get Reactions for an Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: channel in: query type: string description: Channel where the message to get reactions for was posted. - name: file in: query type: string description: File to get reactions for. - name: file_comment in: query type: string description: File comment to get reactions for. - name: full in: query type: boolean description: If true, return complete reaction list. - name: timestamp in: query type: string description: Timestamp of the message to get reactions for. - name: reactions.list path: /reactions.list operations: - name: reactionslist method: GET description: Slack List Reactions Made by a User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: count in: query type: integer - name: cursor in: query type: string - name: full in: query type: boolean - name: limit in: query type: integer - name: page in: query type: integer - name: user in: query type: string description: Show reactions made by this user. - name: reactions.remove path: /reactions.remove operations: - name: reactionsremove method: POST description: Slack Remove an Emoji Reaction outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.SLACK_API_KEY}}' exposes: - type: rest namespace: web-reactions-rest port: 8080 description: REST adapter for Slack Web API — Reactions. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/reactions-add name: reactions-add description: REST surface for reactions.add. operations: - method: POST name: reactionsadd description: Slack Add an Emoji Reaction call: web-reactions.reactionsadd with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/reactions-get name: reactions-get description: REST surface for reactions.get. operations: - method: GET name: reactionsget description: Slack Get Reactions for an Item call: web-reactions.reactionsget with: channel: rest.channel file: rest.file file_comment: rest.file_comment full: rest.full timestamp: rest.timestamp outputParameters: - type: object mapping: $. - path: /v1/reactions-list name: reactions-list description: REST surface for reactions.list. operations: - method: GET name: reactionslist description: Slack List Reactions Made by a User call: web-reactions.reactionslist with: count: rest.count cursor: rest.cursor full: rest.full limit: rest.limit page: rest.page user: rest.user outputParameters: - type: object mapping: $. - path: /v1/reactions-remove name: reactions-remove description: REST surface for reactions.remove. operations: - method: POST name: reactionsremove description: Slack Remove an Emoji Reaction call: web-reactions.reactionsremove with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: web-reactions-mcp port: 9090 transport: http description: MCP adapter for Slack Web API — Reactions. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: slack-add-emoji-reaction description: Slack Add an Emoji Reaction hints: readOnly: false destructive: false idempotent: false call: web-reactions.reactionsadd with: body: tools.body outputParameters: - type: object mapping: $. - name: slack-get-reactions-item description: Slack Get Reactions for an Item hints: readOnly: true destructive: false idempotent: true call: web-reactions.reactionsget with: channel: tools.channel file: tools.file file_comment: tools.file_comment full: tools.full timestamp: tools.timestamp outputParameters: - type: object mapping: $. - name: slack-list-reactions-made-user description: Slack List Reactions Made by a User hints: readOnly: true destructive: false idempotent: true call: web-reactions.reactionslist with: count: tools.count cursor: tools.cursor full: tools.full limit: tools.limit page: tools.page user: tools.user outputParameters: - type: object mapping: $. - name: slack-remove-emoji-reaction description: Slack Remove an Emoji Reaction hints: readOnly: false destructive: false idempotent: false call: web-reactions.reactionsremove with: body: tools.body outputParameters: - type: object mapping: $.