HashiCorp Consul · Capability

HashiCorp Consul HTTP API — Catalog

HashiCorp Consul HTTP API — Catalog. 7 operations. Lead operation: List datacenters. Self-contained Naftiko capability covering one Consul business surface.

Run with Naftiko ConsulCatalog

What You Can Do

GET
Listdatacenters — List datacenters
/v1/catalog/datacenters
PUT
Catalogderegister — Deregister entity
/v1/catalog/deregister
GET
Getcatalognode — List services for a node
/v1/catalog/node/{node}
GET
Listcatalognodes — List nodes
/v1/catalog/nodes
PUT
Catalogregister — Register entity
/v1/catalog/register
GET
Getcatalogservice — List nodes for a service
/v1/catalog/service/{servicename}
GET
Listcatalogservices — List services
/v1/catalog/services

MCP Tools

list-datacenters

List datacenters

read-only idempotent
deregister-entity

Deregister entity

idempotent
list-services-node

List services for a node

read-only idempotent
list-nodes

List nodes

read-only idempotent
register-entity

Register entity

idempotent
list-nodes-service

List nodes for a service

read-only idempotent
list-services

List services

read-only idempotent

Capability Spec

http-catalog.yaml Raw ↑
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: $.