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.
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
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: $.