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