naftiko: 1.0.0-alpha2 info: label: OpenCost API — CustomCost description: 'OpenCost API — CustomCost. 2 operations. Lead operation: Custom cost timeseries data. Self-contained Naftiko capability covering one Opencost business surface.' tags: - Opencost - CustomCost created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: OPENCOST_API_KEY: OPENCOST_API_KEY capability: consumes: - type: http namespace: opencost-customcost baseUri: http://localhost:9003 description: OpenCost API — CustomCost business capability. Self-contained, no shared references. resources: - name: customCost-timeseries path: /customCost/timeseries operations: - name: getcustomcosttimeseries method: GET description: Custom cost timeseries data outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: window in: query type: string required: true - name: aggregate in: query type: string - name: accumulate in: query type: string - name: filter in: query type: string - name: customCost-total path: /customCost/total operations: - name: getcustomcosttotal method: GET description: Custom cost totals outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: window in: query type: string required: true - name: aggregate in: query type: string - name: accumulate in: query type: string - name: filter in: query type: string exposes: - type: rest namespace: opencost-customcost-rest port: 8080 description: REST adapter for OpenCost API — CustomCost. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/customcost/timeseries name: customcost-timeseries description: REST surface for customCost-timeseries. operations: - method: GET name: getcustomcosttimeseries description: Custom cost timeseries data call: opencost-customcost.getcustomcosttimeseries with: window: rest.window aggregate: rest.aggregate accumulate: rest.accumulate filter: rest.filter outputParameters: - type: object mapping: $. - path: /v1/customcost/total name: customcost-total description: REST surface for customCost-total. operations: - method: GET name: getcustomcosttotal description: Custom cost totals call: opencost-customcost.getcustomcosttotal with: window: rest.window aggregate: rest.aggregate accumulate: rest.accumulate filter: rest.filter outputParameters: - type: object mapping: $. - type: mcp namespace: opencost-customcost-mcp port: 9090 transport: http description: MCP adapter for OpenCost API — CustomCost. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: custom-cost-timeseries-data description: Custom cost timeseries data hints: readOnly: true destructive: false idempotent: true call: opencost-customcost.getcustomcosttimeseries with: window: tools.window aggregate: tools.aggregate accumulate: tools.accumulate filter: tools.filter outputParameters: - type: object mapping: $. - name: custom-cost-totals description: Custom cost totals hints: readOnly: true destructive: false idempotent: true call: opencost-customcost.getcustomcosttotal with: window: tools.window aggregate: tools.aggregate accumulate: tools.accumulate filter: tools.filter outputParameters: - type: object mapping: $.