naftiko: 1.0.0-alpha2 info: label: HashiCorp Consul HTTP API — KV Store description: 'HashiCorp Consul HTTP API — KV Store. 3 operations. Lead operation: Read a key. Self-contained Naftiko capability covering one Consul business surface.' tags: - Consul - KV Store created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: CONSUL_API_KEY: CONSUL_API_KEY capability: consumes: - type: http namespace: http-kv-store baseUri: http://localhost:8500/v1 description: HashiCorp Consul HTTP API — KV Store business capability. Self-contained, no shared references. resources: - name: kv-key path: /kv/{key} operations: - name: getkvkey method: GET description: Read a key outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string required: true - name: recurse in: query type: boolean description: Return all keys with the given prefix - name: raw in: query type: boolean description: Return raw value without JSON encoding - name: keys in: query type: boolean description: Return only keys (no values) - name: separator in: query type: string description: List keys up to a given separator - name: putkvkey method: PUT description: Create or update a key outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string required: true - name: flags in: query type: integer description: Unsigned value between 0 and 2^64-1 - name: cas in: query type: integer description: Check-And-Set index for optimistic locking - name: acquire in: query type: string description: Session ID to acquire a lock - name: release in: query type: string description: Session ID to release a lock - name: body in: body type: object description: Request body (JSON). required: false - name: deletekvkey method: DELETE description: Delete a key outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: key in: path type: string required: true - name: recurse in: query type: boolean - name: cas in: query type: integer authentication: type: apikey key: X-Consul-Token value: '{{env.CONSUL_API_KEY}}' placement: header exposes: - type: rest namespace: http-kv-store-rest port: 8080 description: REST adapter for HashiCorp Consul HTTP API — KV Store. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/kv/{key} name: kv-key description: REST surface for kv-key. operations: - method: GET name: getkvkey description: Read a key call: http-kv-store.getkvkey with: key: rest.key recurse: rest.recurse raw: rest.raw keys: rest.keys separator: rest.separator outputParameters: - type: object mapping: $. - method: PUT name: putkvkey description: Create or update a key call: http-kv-store.putkvkey with: key: rest.key flags: rest.flags cas: rest.cas acquire: rest.acquire release: rest.release body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletekvkey description: Delete a key call: http-kv-store.deletekvkey with: key: rest.key recurse: rest.recurse cas: rest.cas outputParameters: - type: object mapping: $. - type: mcp namespace: http-kv-store-mcp port: 9090 transport: http description: MCP adapter for HashiCorp Consul HTTP API — KV Store. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: read-key description: Read a key hints: readOnly: true destructive: false idempotent: true call: http-kv-store.getkvkey with: key: tools.key recurse: tools.recurse raw: tools.raw keys: tools.keys separator: tools.separator outputParameters: - type: object mapping: $. - name: create-update-key description: Create or update a key hints: readOnly: false destructive: false idempotent: true call: http-kv-store.putkvkey with: key: tools.key flags: tools.flags cas: tools.cas acquire: tools.acquire release: tools.release body: tools.body outputParameters: - type: object mapping: $. - name: delete-key description: Delete a key hints: readOnly: false destructive: true idempotent: true call: http-kv-store.deletekvkey with: key: tools.key recurse: tools.recurse cas: tools.cas outputParameters: - type: object mapping: $.