Terraform · Capability

Terraform Registry API — Modules

Terraform Registry API — Modules. 10 operations. Lead operation: List Modules. Self-contained Naftiko capability covering one Terraform business surface.

Run with Naftiko TerraformModules

What You Can Do

GET
Listmodules — List Modules
/v1/v1/modules
GET
Searchmodules — Search Modules
/v1/v1/modules/search
GET
Listmodulesbynamespace — List Modules by Namespace
/v1/v1/modules/{namespace}
GET
Getmodulelatestversions — Get Module Latest Versions
/v1/v1/modules/{namespace}/{name}
GET
Getmodulelatestversion — Get Module Latest Version for Provider
/v1/v1/modules/{namespace}/{name}/{provider}
GET
Downloadmodulelatestversion — Download Module Latest Version
/v1/v1/modules/{namespace}/{name}/{provider}/download
GET
Listmoduleversions — List Module Versions
/v1/v1/modules/{namespace}/{name}/{provider}/versions
GET
Getmoduleversion — Get a Module Version
/v1/v1/modules/{namespace}/{name}/{provider}/{version}
GET
Downloadmoduleversion — Download a Module Version
/v1/v1/modules/{namespace}/{name}/{provider}/{version}/download
GET
Getmoduledownloadsummary — Get Module Download Summary
/v1/v2/modules/{namespace}/{name}/{provider}/downloads/summary

MCP Tools

list-modules

List Modules

read-only idempotent
search-modules

Search Modules

read-only idempotent
list-modules-namespace

List Modules by Namespace

read-only idempotent
get-module-latest-versions

Get Module Latest Versions

read-only idempotent
get-module-latest-version-provider

Get Module Latest Version for Provider

read-only idempotent
download-module-latest-version

Download Module Latest Version

read-only idempotent
list-module-versions

List Module Versions

read-only idempotent
get-module-version

Get a Module Version

read-only idempotent
download-module-version

Download a Module Version

read-only idempotent
get-module-download-summary

Get Module Download Summary

read-only idempotent

Capability Spec

registry-modules.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Terraform Registry API — Modules
  description: 'Terraform Registry API — Modules. 10 operations. Lead operation: List Modules. Self-contained Naftiko capability
    covering one Terraform business surface.'
  tags:
  - Terraform
  - Modules
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    TERRAFORM_API_KEY: TERRAFORM_API_KEY
capability:
  consumes:
  - type: http
    namespace: registry-modules
    baseUri: https://registry.terraform.io
    description: Terraform Registry API — Modules business capability. Self-contained, no shared references.
    resources:
    - name: v1-modules
      path: /v1/modules
      operations:
      - name: listmodules
        method: GET
        description: List Modules
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: limit
          in: query
          type: integer
          description: Maximum number of results to return
        - name: offset
          in: query
          type: integer
          description: Starting position for pagination
        - name: provider
          in: query
          type: string
          description: Filter modules by provider (e.g., aws, azurerm, google)
        - name: verified
          in: query
          type: boolean
          description: Filter to show only HashiCorp-verified modules
    - name: v1-modules-search
      path: /v1/modules/search
      operations:
      - name: searchmodules
        method: GET
        description: Search Modules
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: q
          in: query
          type: string
          description: The search query keyword or phrase
          required: true
        - name: limit
          in: query
          type: integer
          description: Maximum number of results to return
        - name: offset
          in: query
          type: integer
          description: Starting position for pagination
        - name: provider
          in: query
          type: string
          description: Filter results by provider
        - name: verified
          in: query
          type: boolean
          description: Show only verified modules
    - name: v1-modules-namespace
      path: /v1/modules/{namespace}
      operations:
      - name: listmodulesbynamespace
        method: GET
        description: List Modules by Namespace
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          description: The namespace (username or organization) to filter by
          required: true
        - name: limit
          in: query
          type: integer
          description: Maximum number of results to return
        - name: offset
          in: query
          type: integer
          description: Starting position for pagination
    - name: v1-modules-namespace-name
      path: /v1/modules/{namespace}/{name}
      operations:
      - name: getmodulelatestversions
        method: GET
        description: Get Module Latest Versions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
    - name: v1-modules-namespace-name-provider
      path: /v1/modules/{namespace}/{name}/{provider}
      operations:
      - name: getmodulelatestversion
        method: GET
        description: Get Module Latest Version for Provider
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
    - name: v1-modules-namespace-name-provider-download
      path: /v1/modules/{namespace}/{name}/{provider}/download
      operations:
      - name: downloadmodulelatestversion
        method: GET
        description: Download Module Latest Version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
    - name: v1-modules-namespace-name-provider-versions
      path: /v1/modules/{namespace}/{name}/{provider}/versions
      operations:
      - name: listmoduleversions
        method: GET
        description: List Module Versions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
    - name: v1-modules-namespace-name-provider-version
      path: /v1/modules/{namespace}/{name}/{provider}/{version}
      operations:
      - name: getmoduleversion
        method: GET
        description: Get a Module Version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
        - name: version
          in: path
          type: string
          required: true
    - name: v1-modules-namespace-name-provider-version-download
      path: /v1/modules/{namespace}/{name}/{provider}/{version}/download
      operations:
      - name: downloadmoduleversion
        method: GET
        description: Download a Module Version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
        - name: version
          in: path
          type: string
          required: true
    - name: v2-modules-namespace-name-provider-downloads-summary
      path: /v2/modules/{namespace}/{name}/{provider}/downloads/summary
      operations:
      - name: getmoduledownloadsummary
        method: GET
        description: Get Module Download Summary
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: namespace
          in: path
          type: string
          required: true
        - name: name
          in: path
          type: string
          required: true
        - name: provider
          in: path
          type: string
          required: true
  exposes:
  - type: rest
    namespace: registry-modules-rest
    port: 8080
    description: REST adapter for Terraform Registry API — Modules. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/v1/modules
      name: v1-modules
      description: REST surface for v1-modules.
      operations:
      - method: GET
        name: listmodules
        description: List Modules
        call: registry-modules.listmodules
        with:
          limit: rest.limit
          offset: rest.offset
          provider: rest.provider
          verified: rest.verified
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/search
      name: v1-modules-search
      description: REST surface for v1-modules-search.
      operations:
      - method: GET
        name: searchmodules
        description: Search Modules
        call: registry-modules.searchmodules
        with:
          q: rest.q
          limit: rest.limit
          offset: rest.offset
          provider: rest.provider
          verified: rest.verified
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}
      name: v1-modules-namespace
      description: REST surface for v1-modules-namespace.
      operations:
      - method: GET
        name: listmodulesbynamespace
        description: List Modules by Namespace
        call: registry-modules.listmodulesbynamespace
        with:
          namespace: rest.namespace
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}
      name: v1-modules-namespace-name
      description: REST surface for v1-modules-namespace-name.
      operations:
      - method: GET
        name: getmodulelatestversions
        description: Get Module Latest Versions
        call: registry-modules.getmodulelatestversions
        with:
          namespace: rest.namespace
          name: rest.name
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}/{provider}
      name: v1-modules-namespace-name-provider
      description: REST surface for v1-modules-namespace-name-provider.
      operations:
      - method: GET
        name: getmodulelatestversion
        description: Get Module Latest Version for Provider
        call: registry-modules.getmodulelatestversion
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}/{provider}/download
      name: v1-modules-namespace-name-provider-download
      description: REST surface for v1-modules-namespace-name-provider-download.
      operations:
      - method: GET
        name: downloadmodulelatestversion
        description: Download Module Latest Version
        call: registry-modules.downloadmodulelatestversion
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}/{provider}/versions
      name: v1-modules-namespace-name-provider-versions
      description: REST surface for v1-modules-namespace-name-provider-versions.
      operations:
      - method: GET
        name: listmoduleversions
        description: List Module Versions
        call: registry-modules.listmoduleversions
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}/{provider}/{version}
      name: v1-modules-namespace-name-provider-version
      description: REST surface for v1-modules-namespace-name-provider-version.
      operations:
      - method: GET
        name: getmoduleversion
        description: Get a Module Version
        call: registry-modules.getmoduleversion
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
          version: rest.version
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/modules/{namespace}/{name}/{provider}/{version}/download
      name: v1-modules-namespace-name-provider-version-download
      description: REST surface for v1-modules-namespace-name-provider-version-download.
      operations:
      - method: GET
        name: downloadmoduleversion
        description: Download a Module Version
        call: registry-modules.downloadmoduleversion
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
          version: rest.version
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v2/modules/{namespace}/{name}/{provider}/downloads/summary
      name: v2-modules-namespace-name-provider-downloads-summary
      description: REST surface for v2-modules-namespace-name-provider-downloads-summary.
      operations:
      - method: GET
        name: getmoduledownloadsummary
        description: Get Module Download Summary
        call: registry-modules.getmoduledownloadsummary
        with:
          namespace: rest.namespace
          name: rest.name
          provider: rest.provider
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: registry-modules-mcp
    port: 9090
    transport: http
    description: MCP adapter for Terraform Registry API — Modules. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-modules
      description: List Modules
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.listmodules
      with:
        limit: tools.limit
        offset: tools.offset
        provider: tools.provider
        verified: tools.verified
      outputParameters:
      - type: object
        mapping: $.
    - name: search-modules
      description: Search Modules
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.searchmodules
      with:
        q: tools.q
        limit: tools.limit
        offset: tools.offset
        provider: tools.provider
        verified: tools.verified
      outputParameters:
      - type: object
        mapping: $.
    - name: list-modules-namespace
      description: List Modules by Namespace
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.listmodulesbynamespace
      with:
        namespace: tools.namespace
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: get-module-latest-versions
      description: Get Module Latest Versions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.getmodulelatestversions
      with:
        namespace: tools.namespace
        name: tools.name
      outputParameters:
      - type: object
        mapping: $.
    - name: get-module-latest-version-provider
      description: Get Module Latest Version for Provider
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.getmodulelatestversion
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
      outputParameters:
      - type: object
        mapping: $.
    - name: download-module-latest-version
      description: Download Module Latest Version
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.downloadmodulelatestversion
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
      outputParameters:
      - type: object
        mapping: $.
    - name: list-module-versions
      description: List Module Versions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.listmoduleversions
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
      outputParameters:
      - type: object
        mapping: $.
    - name: get-module-version
      description: Get a Module Version
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.getmoduleversion
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
        version: tools.version
      outputParameters:
      - type: object
        mapping: $.
    - name: download-module-version
      description: Download a Module Version
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.downloadmoduleversion
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
        version: tools.version
      outputParameters:
      - type: object
        mapping: $.
    - name: get-module-download-summary
      description: Get Module Download Summary
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: registry-modules.getmoduledownloadsummary
      with:
        namespace: tools.namespace
        name: tools.name
        provider: tools.provider
      outputParameters:
      - type: object
        mapping: $.