naftiko: 1.0.0-alpha2 info: label: Nacos Open API — Service Discovery description: 'Nacos Open API — Service Discovery. 6 operations. Lead operation: Update instance health status. Self-contained Naftiko capability covering one Nacos business surface.' tags: - Nacos - Service Discovery created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: NACOS_API_KEY: NACOS_API_KEY capability: consumes: - type: http namespace: open-service-discovery baseUri: http://localhost:8848/nacos description: Nacos Open API — Service Discovery business capability. Self-contained, no shared references. resources: - name: v1-ns-health-instance path: /v1/ns/health/instance operations: - name: updateinstancehealth method: PUT description: Update instance health status outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: serviceName in: query type: string required: true - name: groupName in: query type: string - name: namespaceId in: query type: string - name: ip in: query type: string required: true - name: port in: query type: integer required: true - name: healthy in: query type: boolean required: true - name: clusterName in: query type: string - name: v1-ns-instance path: /v1/ns/instance operations: - name: registerinstance method: POST description: Register an instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: deregisterinstance method: DELETE description: Deregister an instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: serviceName in: query type: string required: true - name: groupName in: query type: string - name: namespaceId in: query type: string - name: ip in: query type: string required: true - name: port in: query type: integer required: true - name: clusterName in: query type: string - name: ephemeral in: query type: boolean - name: updateinstance method: PUT description: Update instance outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: v1-ns-instance-beat path: /v1/ns/instance/beat operations: - name: sendbeat method: PUT description: Send instance heartbeat outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: serviceName in: query type: string required: true - name: groupName in: query type: string - name: namespaceId in: query type: string - name: beat in: query type: string description: Beat info (JSON string) required: true - name: ephemeral in: query type: boolean - name: v1-ns-instance-list path: /v1/ns/instance/list operations: - name: listinstances method: GET description: List instances outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: serviceName in: query type: string required: true - name: groupName in: query type: string - name: namespaceId in: query type: string - name: clusters in: query type: string description: Comma-separated cluster names - name: healthyOnly in: query type: boolean authentication: type: apikey key: accessToken value: '{{env.NACOS_API_KEY}}' placement: query exposes: - type: rest namespace: open-service-discovery-rest port: 8080 description: REST adapter for Nacos Open API — Service Discovery. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/ns/health/instance name: v1-ns-health-instance description: REST surface for v1-ns-health-instance. operations: - method: PUT name: updateinstancehealth description: Update instance health status call: open-service-discovery.updateinstancehealth with: serviceName: rest.serviceName groupName: rest.groupName namespaceId: rest.namespaceId ip: rest.ip port: rest.port healthy: rest.healthy clusterName: rest.clusterName outputParameters: - type: object mapping: $. - path: /v1/v1/ns/instance name: v1-ns-instance description: REST surface for v1-ns-instance. operations: - method: POST name: registerinstance description: Register an instance call: open-service-discovery.registerinstance with: body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deregisterinstance description: Deregister an instance call: open-service-discovery.deregisterinstance with: serviceName: rest.serviceName groupName: rest.groupName namespaceId: rest.namespaceId ip: rest.ip port: rest.port clusterName: rest.clusterName ephemeral: rest.ephemeral outputParameters: - type: object mapping: $. - method: PUT name: updateinstance description: Update instance call: open-service-discovery.updateinstance with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/ns/instance/beat name: v1-ns-instance-beat description: REST surface for v1-ns-instance-beat. operations: - method: PUT name: sendbeat description: Send instance heartbeat call: open-service-discovery.sendbeat with: serviceName: rest.serviceName groupName: rest.groupName namespaceId: rest.namespaceId beat: rest.beat ephemeral: rest.ephemeral outputParameters: - type: object mapping: $. - path: /v1/v1/ns/instance/list name: v1-ns-instance-list description: REST surface for v1-ns-instance-list. operations: - method: GET name: listinstances description: List instances call: open-service-discovery.listinstances with: serviceName: rest.serviceName groupName: rest.groupName namespaceId: rest.namespaceId clusters: rest.clusters healthyOnly: rest.healthyOnly outputParameters: - type: object mapping: $. - type: mcp namespace: open-service-discovery-mcp port: 9090 transport: http description: MCP adapter for Nacos Open API — Service Discovery. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: update-instance-health-status description: Update instance health status hints: readOnly: false destructive: false idempotent: true call: open-service-discovery.updateinstancehealth with: serviceName: tools.serviceName groupName: tools.groupName namespaceId: tools.namespaceId ip: tools.ip port: tools.port healthy: tools.healthy clusterName: tools.clusterName outputParameters: - type: object mapping: $. - name: register-instance description: Register an instance hints: readOnly: false destructive: false idempotent: false call: open-service-discovery.registerinstance with: body: tools.body outputParameters: - type: object mapping: $. - name: deregister-instance description: Deregister an instance hints: readOnly: false destructive: true idempotent: true call: open-service-discovery.deregisterinstance with: serviceName: tools.serviceName groupName: tools.groupName namespaceId: tools.namespaceId ip: tools.ip port: tools.port clusterName: tools.clusterName ephemeral: tools.ephemeral outputParameters: - type: object mapping: $. - name: update-instance description: Update instance hints: readOnly: false destructive: false idempotent: true call: open-service-discovery.updateinstance with: body: tools.body outputParameters: - type: object mapping: $. - name: send-instance-heartbeat description: Send instance heartbeat hints: readOnly: false destructive: false idempotent: true call: open-service-discovery.sendbeat with: serviceName: tools.serviceName groupName: tools.groupName namespaceId: tools.namespaceId beat: tools.beat ephemeral: tools.ephemeral outputParameters: - type: object mapping: $. - name: list-instances description: List instances hints: readOnly: true destructive: false idempotent: true call: open-service-discovery.listinstances with: serviceName: tools.serviceName groupName: tools.groupName namespaceId: tools.namespaceId clusters: tools.clusters healthyOnly: tools.healthyOnly outputParameters: - type: object mapping: $.