naftiko: 1.0.0-alpha2 info: label: Gandi LiveDNS API — Records description: 'Gandi LiveDNS API — Records. 5 operations. Lead operation: List DNS records. Self-contained Naftiko capability covering one Gandi business surface.' tags: - Gandi - Records created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GANDI_API_KEY: GANDI_API_KEY capability: consumes: - type: http namespace: livedns-records baseUri: https://api.gandi.net/v5/livedns description: Gandi LiveDNS API — Records business capability. Self-contained, no shared references. resources: - name: domains-fqdn-records path: /domains/{fqdn}/records operations: - name: get method: GET description: List DNS records outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fqdn in: path type: string required: true - name: post method: POST description: Create DNS record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fqdn in: path type: string required: true - name: put method: PUT description: Replace DNS records outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fqdn in: path type: string required: true - name: delete method: DELETE description: Delete all DNS records outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fqdn in: path type: string required: true - name: domains-fqdn-records-rrset_name path: /domains/{fqdn}/records/{rrset_name} operations: - name: get method: GET description: Get records by name outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: fqdn in: path type: string required: true - name: rrset_name in: path type: string required: true authentication: type: apikey key: Authorization value: '{{env.GANDI_API_KEY}}' placement: header exposes: - type: rest namespace: livedns-records-rest port: 8080 description: REST adapter for Gandi LiveDNS API — Records. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/domains/{fqdn}/records name: domains-fqdn-records description: REST surface for domains-fqdn-records. operations: - method: GET name: get description: List DNS records call: livedns-records.get with: fqdn: rest.fqdn outputParameters: - type: object mapping: $. - method: POST name: post description: Create DNS record call: livedns-records.post with: fqdn: rest.fqdn outputParameters: - type: object mapping: $. - method: PUT name: put description: Replace DNS records call: livedns-records.put with: fqdn: rest.fqdn outputParameters: - type: object mapping: $. - method: DELETE name: delete description: Delete all DNS records call: livedns-records.delete with: fqdn: rest.fqdn outputParameters: - type: object mapping: $. - path: /v1/domains/{fqdn}/records/{rrset-name} name: domains-fqdn-records-rrset-name description: REST surface for domains-fqdn-records-rrset_name. operations: - method: GET name: get description: Get records by name call: livedns-records.get with: fqdn: rest.fqdn rrset_name: rest.rrset_name outputParameters: - type: object mapping: $. - type: mcp namespace: livedns-records-mcp port: 9090 transport: http description: MCP adapter for Gandi LiveDNS API — Records. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-dns-records description: List DNS records hints: readOnly: true destructive: false idempotent: true call: livedns-records.get with: fqdn: tools.fqdn outputParameters: - type: object mapping: $. - name: create-dns-record description: Create DNS record hints: readOnly: false destructive: false idempotent: false call: livedns-records.post with: fqdn: tools.fqdn outputParameters: - type: object mapping: $. - name: replace-dns-records description: Replace DNS records hints: readOnly: false destructive: false idempotent: true call: livedns-records.put with: fqdn: tools.fqdn outputParameters: - type: object mapping: $. - name: delete-all-dns-records description: Delete all DNS records hints: readOnly: false destructive: true idempotent: true call: livedns-records.delete with: fqdn: tools.fqdn outputParameters: - type: object mapping: $. - name: get-records-name description: Get records by name hints: readOnly: true destructive: false idempotent: true call: livedns-records.get with: fqdn: tools.fqdn rrset_name: tools.rrset_name outputParameters: - type: object mapping: $.