naftiko: 1.0.0-alpha2 info: label: Metal API — OTPs description: 'Metal API — OTPs. 4 operations. Lead operation: Retrieve my recovery codes. Self-contained Naftiko capability covering one Equinix business surface.' tags: - Equinix - OTPs created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: EQUINIX_API_KEY: EQUINIX_API_KEY capability: consumes: - type: http namespace: metal-otps baseUri: https://api.equinix.com/metal/v1 description: Metal API — OTPs business capability. Self-contained, no shared references. resources: - name: user-otp-recovery-codes path: /user/otp/recovery-codes operations: - name: findrecoverycodes method: GET description: Retrieve my recovery codes outputRawFormat: json outputParameters: - name: result type: object value: $. - name: regeneratecodes method: POST description: Generate new recovery codes outputRawFormat: json outputParameters: - name: result type: object value: $. - name: user-otp-sms-receive path: /user/otp/sms/receive operations: - name: receivecodes method: POST description: Receive an OTP per sms outputRawFormat: json outputParameters: - name: result type: object value: $. - name: user-otp-verify-otp path: /user/otp/verify/{otp} operations: - name: findensureotp method: POST description: Verify user by providing an OTP outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: otp in: path type: string description: OTP required: true authentication: type: apikey key: X-Auth-Token value: '{{env.EQUINIX_API_KEY}}' placement: header exposes: - type: rest namespace: metal-otps-rest port: 8080 description: REST adapter for Metal API — OTPs. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/user/otp/recovery-codes name: user-otp-recovery-codes description: REST surface for user-otp-recovery-codes. operations: - method: GET name: findrecoverycodes description: Retrieve my recovery codes call: metal-otps.findrecoverycodes outputParameters: - type: object mapping: $. - method: POST name: regeneratecodes description: Generate new recovery codes call: metal-otps.regeneratecodes outputParameters: - type: object mapping: $. - path: /v1/user/otp/sms/receive name: user-otp-sms-receive description: REST surface for user-otp-sms-receive. operations: - method: POST name: receivecodes description: Receive an OTP per sms call: metal-otps.receivecodes outputParameters: - type: object mapping: $. - path: /v1/user/otp/verify/{otp} name: user-otp-verify-otp description: REST surface for user-otp-verify-otp. operations: - method: POST name: findensureotp description: Verify user by providing an OTP call: metal-otps.findensureotp with: otp: rest.otp outputParameters: - type: object mapping: $. - type: mcp namespace: metal-otps-mcp port: 9090 transport: http description: MCP adapter for Metal API — OTPs. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: retrieve-my-recovery-codes description: Retrieve my recovery codes hints: readOnly: true destructive: false idempotent: true call: metal-otps.findrecoverycodes outputParameters: - type: object mapping: $. - name: generate-new-recovery-codes description: Generate new recovery codes hints: readOnly: false destructive: false idempotent: false call: metal-otps.regeneratecodes outputParameters: - type: object mapping: $. - name: receive-otp-per-sms description: Receive an OTP per sms hints: readOnly: false destructive: false idempotent: false call: metal-otps.receivecodes outputParameters: - type: object mapping: $. - name: verify-user-providing-otp description: Verify user by providing an OTP hints: readOnly: false destructive: false idempotent: false call: metal-otps.findensureotp with: otp: tools.otp outputParameters: - type: object mapping: $.