naftiko: 1.0.0-alpha2 info: label: HashiCorp Consul HTTP API — Catalog description: 'HashiCorp Consul HTTP API — Catalog. 7 operations. Lead operation: List datacenters. Self-contained Naftiko capability covering one Consul business surface.' tags: - Consul - Catalog created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: CONSUL_API_KEY: CONSUL_API_KEY capability: consumes: - type: http namespace: http-catalog baseUri: http://localhost:8500/v1 description: HashiCorp Consul HTTP API — Catalog business capability. Self-contained, no shared references. resources: - name: catalog-datacenters path: /catalog/datacenters operations: - name: listdatacenters method: GET description: List datacenters outputRawFormat: json outputParameters: - name: result type: object value: $. - name: catalog-deregister path: /catalog/deregister operations: - name: catalogderegister method: PUT description: Deregister entity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: catalog-node-node path: /catalog/node/{node} operations: - name: getcatalognode method: GET description: List services for a node outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: node in: path type: string required: true - name: filter in: query type: string - name: catalog-nodes path: /catalog/nodes operations: - name: listcatalognodes method: GET description: List nodes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: near in: query type: string - name: filter in: query type: string - name: catalog-register path: /catalog/register operations: - name: catalogregister method: PUT description: Register entity outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: catalog-service-serviceName path: /catalog/service/{serviceName} operations: - name: getcatalogservice method: GET description: List nodes for a service outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: serviceName in: path type: string required: true - name: tag in: query type: string - name: near in: query type: string - name: filter in: query type: string - name: catalog-services path: /catalog/services operations: - name: listcatalogservices method: GET description: List services outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ns in: query type: string authentication: type: apikey key: X-Consul-Token value: '{{env.CONSUL_API_KEY}}' placement: header exposes: - type: rest namespace: http-catalog-rest port: 8080 description: REST adapter for HashiCorp Consul HTTP API — Catalog. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/catalog/datacenters name: catalog-datacenters description: REST surface for catalog-datacenters. operations: - method: GET name: listdatacenters description: List datacenters call: http-catalog.listdatacenters outputParameters: - type: object mapping: $. - path: /v1/catalog/deregister name: catalog-deregister description: REST surface for catalog-deregister. operations: - method: PUT name: catalogderegister description: Deregister entity call: http-catalog.catalogderegister with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/catalog/node/{node} name: catalog-node-node description: REST surface for catalog-node-node. operations: - method: GET name: getcatalognode description: List services for a node call: http-catalog.getcatalognode with: node: rest.node filter: rest.filter outputParameters: - type: object mapping: $. - path: /v1/catalog/nodes name: catalog-nodes description: REST surface for catalog-nodes. operations: - method: GET name: listcatalognodes description: List nodes call: http-catalog.listcatalognodes with: near: rest.near filter: rest.filter outputParameters: - type: object mapping: $. - path: /v1/catalog/register name: catalog-register description: REST surface for catalog-register. operations: - method: PUT name: catalogregister description: Register entity call: http-catalog.catalogregister with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/catalog/service/{servicename} name: catalog-service-servicename description: REST surface for catalog-service-serviceName. operations: - method: GET name: getcatalogservice description: List nodes for a service call: http-catalog.getcatalogservice with: serviceName: rest.serviceName tag: rest.tag near: rest.near filter: rest.filter outputParameters: - type: object mapping: $. - path: /v1/catalog/services name: catalog-services description: REST surface for catalog-services. operations: - method: GET name: listcatalogservices description: List services call: http-catalog.listcatalogservices with: ns: rest.ns outputParameters: - type: object mapping: $. - type: mcp namespace: http-catalog-mcp port: 9090 transport: http description: MCP adapter for HashiCorp Consul HTTP API — Catalog. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-datacenters description: List datacenters hints: readOnly: true destructive: false idempotent: true call: http-catalog.listdatacenters outputParameters: - type: object mapping: $. - name: deregister-entity description: Deregister entity hints: readOnly: false destructive: false idempotent: true call: http-catalog.catalogderegister with: body: tools.body outputParameters: - type: object mapping: $. - name: list-services-node description: List services for a node hints: readOnly: true destructive: false idempotent: true call: http-catalog.getcatalognode with: node: tools.node filter: tools.filter outputParameters: - type: object mapping: $. - name: list-nodes description: List nodes hints: readOnly: true destructive: false idempotent: true call: http-catalog.listcatalognodes with: near: tools.near filter: tools.filter outputParameters: - type: object mapping: $. - name: register-entity description: Register entity hints: readOnly: false destructive: false idempotent: true call: http-catalog.catalogregister with: body: tools.body outputParameters: - type: object mapping: $. - name: list-nodes-service description: List nodes for a service hints: readOnly: true destructive: false idempotent: true call: http-catalog.getcatalogservice with: serviceName: tools.serviceName tag: tools.tag near: tools.near filter: tools.filter outputParameters: - type: object mapping: $. - name: list-services description: List services hints: readOnly: true destructive: false idempotent: true call: http-catalog.listcatalogservices with: ns: tools.ns outputParameters: - type: object mapping: $.