naftiko: 1.0.0-alpha2 info: label: Spring Initializr API — Generation description: 'Spring Initializr API — Generation. 2 operations. Lead operation: Generate Project Archive (TGZ). Self-contained Naftiko capability covering one Spring Framework business surface.' tags: - Spring Framework - Generation created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SPRING_FRAMEWORK_API_KEY: SPRING_FRAMEWORK_API_KEY capability: consumes: - type: http namespace: spring-initializr-generation baseUri: https://start.spring.io description: Spring Initializr API — Generation business capability. Self-contained, no shared references. resources: - name: starter.tgz path: /starter.tgz operations: - name: generateprojecttgz method: GET description: Generate Project Archive (TGZ) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: type in: query type: string - name: language in: query type: string - name: bootVersion in: query type: string - name: groupId in: query type: string - name: artifactId in: query type: string - name: dependencies in: query type: array - name: starter.zip path: /starter.zip operations: - name: generateproject method: GET description: Generate Project Archive outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: type in: query type: string description: Build system type - name: language in: query type: string - name: bootVersion in: query type: string description: Spring Boot version (e.g., 3.3.0) - name: baseDir in: query type: string description: Base directory name within the ZIP - name: groupId in: query type: string - name: artifactId in: query type: string - name: name in: query type: string - name: description in: query type: string - name: packageName in: query type: string - name: packaging in: query type: string - name: javaVersion in: query type: string - name: dependencies in: query type: array description: Comma-separated dependency IDs (e.g., web,data-jpa,security) exposes: - type: rest namespace: spring-initializr-generation-rest port: 8080 description: REST adapter for Spring Initializr API — Generation. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/starter-tgz name: starter-tgz description: REST surface for starter.tgz. operations: - method: GET name: generateprojecttgz description: Generate Project Archive (TGZ) call: spring-initializr-generation.generateprojecttgz with: type: rest.type language: rest.language bootVersion: rest.bootVersion groupId: rest.groupId artifactId: rest.artifactId dependencies: rest.dependencies outputParameters: - type: object mapping: $. - path: /v1/starter-zip name: starter-zip description: REST surface for starter.zip. operations: - method: GET name: generateproject description: Generate Project Archive call: spring-initializr-generation.generateproject with: type: rest.type language: rest.language bootVersion: rest.bootVersion baseDir: rest.baseDir groupId: rest.groupId artifactId: rest.artifactId name: rest.name description: rest.description packageName: rest.packageName packaging: rest.packaging javaVersion: rest.javaVersion dependencies: rest.dependencies outputParameters: - type: object mapping: $. - type: mcp namespace: spring-initializr-generation-mcp port: 9090 transport: http description: MCP adapter for Spring Initializr API — Generation. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: generate-project-archive-tgz description: Generate Project Archive (TGZ) hints: readOnly: true destructive: false idempotent: true call: spring-initializr-generation.generateprojecttgz with: type: tools.type language: tools.language bootVersion: tools.bootVersion groupId: tools.groupId artifactId: tools.artifactId dependencies: tools.dependencies outputParameters: - type: object mapping: $. - name: generate-project-archive description: Generate Project Archive hints: readOnly: true destructive: false idempotent: true call: spring-initializr-generation.generateproject with: type: tools.type language: tools.language bootVersion: tools.bootVersion baseDir: tools.baseDir groupId: tools.groupId artifactId: tools.artifactId name: tools.name description: tools.description packageName: tools.packageName packaging: tools.packaging javaVersion: tools.javaVersion dependencies: tools.dependencies outputParameters: - type: object mapping: $.