naftiko: 1.0.0-alpha2 info: label: Wise Platform API — sca-otp description: 'Wise Platform API — sca-otp. 8 operations. Lead operation: Create Phone Number. Self-contained Naftiko capability covering one Wise business surface.' tags: - Wise - sca-otp created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: WISE_API_KEY: WISE_API_KEY capability: consumes: - type: http namespace: platform-sca-otp baseUri: https://api.wise.com description: Wise Platform API — sca-otp business capability. Self-contained, no shared references. resources: - name: v1-application-users-userId-phone-numbers path: /v1/application/users/{userId}/phone-numbers operations: - name: usersecurityphonenumbercreate method: POST description: Create Phone Number outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: userId in: path type: integer description: User ID. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-application-users-userId-phone-numbers-phoneNumberId path: /v1/application/users/{userId}/phone-numbers/{phoneNumberId} operations: - name: usersecurityphonenumberdelete method: DELETE description: Delete Phone Number outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: userId in: path type: integer description: User ID. required: true - name: phoneNumberId in: path type: integer description: ID of a phone number. required: true - name: v1-one-time-token-sms-trigger path: /v1/one-time-token/sms/trigger operations: - name: ottsmstrigger method: POST description: Trigger SMS Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: v1-one-time-token-sms-verify path: /v1/one-time-token/sms/verify operations: - name: ottsmsverify method: POST description: Verify SMS Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-one-time-token-voice-trigger path: /v1/one-time-token/voice/trigger operations: - name: ottvoicetrigger method: POST description: Trigger Voice Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: v1-one-time-token-voice-verify path: /v1/one-time-token/voice/verify operations: - name: ottvoiceverify method: POST description: Verify Voice Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-one-time-token-whatsapp-trigger path: /v1/one-time-token/whatsapp/trigger operations: - name: ottwhatsapptrigger method: POST description: Trigger WhatsApp Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: v1-one-time-token-whatsapp-verify path: /v1/one-time-token/whatsapp/verify operations: - name: ottwhatsappverify method: POST description: Verify WhatsApp Challenge outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: One-Time-Token in: header type: string description: Text value of a OTT. required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.WISE_API_KEY}}' exposes: - type: rest namespace: platform-sca-otp-rest port: 8080 description: REST adapter for Wise Platform API — sca-otp. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/application/users/{userid}/phone-numbers name: v1-application-users-userid-phone-numbers description: REST surface for v1-application-users-userId-phone-numbers. operations: - method: POST name: usersecurityphonenumbercreate description: Create Phone Number call: platform-sca-otp.usersecurityphonenumbercreate with: userId: rest.userId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/application/users/{userid}/phone-numbers/{phonenumberid} name: v1-application-users-userid-phone-numbers-phonenumberid description: REST surface for v1-application-users-userId-phone-numbers-phoneNumberId. operations: - method: DELETE name: usersecurityphonenumberdelete description: Delete Phone Number call: platform-sca-otp.usersecurityphonenumberdelete with: userId: rest.userId phoneNumberId: rest.phoneNumberId outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/sms/trigger name: v1-one-time-token-sms-trigger description: REST surface for v1-one-time-token-sms-trigger. operations: - method: POST name: ottsmstrigger description: Trigger SMS Challenge call: platform-sca-otp.ottsmstrigger with: One-Time-Token: rest.One-Time-Token outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/sms/verify name: v1-one-time-token-sms-verify description: REST surface for v1-one-time-token-sms-verify. operations: - method: POST name: ottsmsverify description: Verify SMS Challenge call: platform-sca-otp.ottsmsverify with: One-Time-Token: rest.One-Time-Token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/voice/trigger name: v1-one-time-token-voice-trigger description: REST surface for v1-one-time-token-voice-trigger. operations: - method: POST name: ottvoicetrigger description: Trigger Voice Challenge call: platform-sca-otp.ottvoicetrigger with: One-Time-Token: rest.One-Time-Token outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/voice/verify name: v1-one-time-token-voice-verify description: REST surface for v1-one-time-token-voice-verify. operations: - method: POST name: ottvoiceverify description: Verify Voice Challenge call: platform-sca-otp.ottvoiceverify with: One-Time-Token: rest.One-Time-Token body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/whatsapp/trigger name: v1-one-time-token-whatsapp-trigger description: REST surface for v1-one-time-token-whatsapp-trigger. operations: - method: POST name: ottwhatsapptrigger description: Trigger WhatsApp Challenge call: platform-sca-otp.ottwhatsapptrigger with: One-Time-Token: rest.One-Time-Token outputParameters: - type: object mapping: $. - path: /v1/v1/one-time-token/whatsapp/verify name: v1-one-time-token-whatsapp-verify description: REST surface for v1-one-time-token-whatsapp-verify. operations: - method: POST name: ottwhatsappverify description: Verify WhatsApp Challenge call: platform-sca-otp.ottwhatsappverify with: One-Time-Token: rest.One-Time-Token body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: platform-sca-otp-mcp port: 9090 transport: http description: MCP adapter for Wise Platform API — sca-otp. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: create-phone-number description: Create Phone Number hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.usersecurityphonenumbercreate with: userId: tools.userId body: tools.body outputParameters: - type: object mapping: $. - name: delete-phone-number description: Delete Phone Number hints: readOnly: false destructive: true idempotent: true call: platform-sca-otp.usersecurityphonenumberdelete with: userId: tools.userId phoneNumberId: tools.phoneNumberId outputParameters: - type: object mapping: $. - name: trigger-sms-challenge description: Trigger SMS Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottsmstrigger with: One-Time-Token: tools.One-Time-Token outputParameters: - type: object mapping: $. - name: verify-sms-challenge description: Verify SMS Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottsmsverify with: One-Time-Token: tools.One-Time-Token body: tools.body outputParameters: - type: object mapping: $. - name: trigger-voice-challenge description: Trigger Voice Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottvoicetrigger with: One-Time-Token: tools.One-Time-Token outputParameters: - type: object mapping: $. - name: verify-voice-challenge description: Verify Voice Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottvoiceverify with: One-Time-Token: tools.One-Time-Token body: tools.body outputParameters: - type: object mapping: $. - name: trigger-whatsapp-challenge description: Trigger WhatsApp Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottwhatsapptrigger with: One-Time-Token: tools.One-Time-Token outputParameters: - type: object mapping: $. - name: verify-whatsapp-challenge description: Verify WhatsApp Challenge hints: readOnly: false destructive: false idempotent: false call: platform-sca-otp.ottwhatsappverify with: One-Time-Token: tools.One-Time-Token body: tools.body outputParameters: - type: object mapping: $.