naftiko: 1.0.0-alpha2 info: label: PDCP API — scan description: 'PDCP API — scan. 5 operations. Lead operation: Get remediation efficiency stats. Self-contained Naftiko capability covering one Nuclei business surface.' tags: - Nuclei - scan created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: NUCLEI_API_KEY: NUCLEI_API_KEY capability: consumes: - type: http namespace: nuclei-scan baseUri: https://api.projectdiscovery.io description: PDCP API — scan business capability. Self-contained, no shared references. resources: - name: v1-scans-remediation-efficiency path: /v1/scans/remediation-efficiency operations: - name: getv1scansremediationefficiency method: GET description: Get remediation efficiency stats outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: X-Team-Id in: header type: string description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team' - name: v1-scans-validate path: /v1/scans/validate operations: - name: postv1scansvalidate method: POST description: Validate scan token before starting scan outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: X-Team-Id in: header type: string description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team' - name: body in: body type: object description: Request body (JSON). required: false - name: v1-scans-vulns-exposures-metrics path: /v1/scans/vulns/exposures/metrics operations: - name: getv1scansvulnsexposuresmetrics method: GET description: Get scan vuln exposure metrics outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: interval in: query type: string description: The time interval for the metrics required: true - name: X-Team-Id in: header type: string description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team' - name: v1-scans-vulns-regression-metrics path: /v1/scans/vulns/regression/metrics operations: - name: getv1scansvulnsregressionmetrics method: GET description: Get scan vuln regression metrics outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: interval in: query type: string description: The time interval for the metrics required: true - name: X-Team-Id in: header type: string description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team' - name: v1-scans-vulns-remediation-metrics path: /v1/scans/vulns/remediation/metrics operations: - name: getv1scansvulnsremediationmetrics method: GET description: Get scan vuln remediation metrics outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: interval in: query type: string description: The time interval for the metrics required: true - name: X-Team-Id in: header type: string description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team' authentication: type: apikey key: X-API-Key value: '{{env.NUCLEI_API_KEY}}' placement: header exposes: - type: rest namespace: nuclei-scan-rest port: 8080 description: REST adapter for PDCP API — scan. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/scans/remediation-efficiency name: v1-scans-remediation-efficiency description: REST surface for v1-scans-remediation-efficiency. operations: - method: GET name: getv1scansremediationefficiency description: Get remediation efficiency stats call: nuclei-scan.getv1scansremediationefficiency with: X-Team-Id: rest.X-Team-Id outputParameters: - type: object mapping: $. - path: /v1/v1/scans/validate name: v1-scans-validate description: REST surface for v1-scans-validate. operations: - method: POST name: postv1scansvalidate description: Validate scan token before starting scan call: nuclei-scan.postv1scansvalidate with: X-Team-Id: rest.X-Team-Id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/scans/vulns/exposures/metrics name: v1-scans-vulns-exposures-metrics description: REST surface for v1-scans-vulns-exposures-metrics. operations: - method: GET name: getv1scansvulnsexposuresmetrics description: Get scan vuln exposure metrics call: nuclei-scan.getv1scansvulnsexposuresmetrics with: interval: rest.interval X-Team-Id: rest.X-Team-Id outputParameters: - type: object mapping: $. - path: /v1/v1/scans/vulns/regression/metrics name: v1-scans-vulns-regression-metrics description: REST surface for v1-scans-vulns-regression-metrics. operations: - method: GET name: getv1scansvulnsregressionmetrics description: Get scan vuln regression metrics call: nuclei-scan.getv1scansvulnsregressionmetrics with: interval: rest.interval X-Team-Id: rest.X-Team-Id outputParameters: - type: object mapping: $. - path: /v1/v1/scans/vulns/remediation/metrics name: v1-scans-vulns-remediation-metrics description: REST surface for v1-scans-vulns-remediation-metrics. operations: - method: GET name: getv1scansvulnsremediationmetrics description: Get scan vuln remediation metrics call: nuclei-scan.getv1scansvulnsremediationmetrics with: interval: rest.interval X-Team-Id: rest.X-Team-Id outputParameters: - type: object mapping: $. - type: mcp namespace: nuclei-scan-mcp port: 9090 transport: http description: MCP adapter for PDCP API — scan. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-remediation-efficiency-stats description: Get remediation efficiency stats hints: readOnly: true destructive: false idempotent: true call: nuclei-scan.getv1scansremediationefficiency with: X-Team-Id: tools.X-Team-Id outputParameters: - type: object mapping: $. - name: validate-scan-token-before-starting description: Validate scan token before starting scan hints: readOnly: true destructive: false idempotent: false call: nuclei-scan.postv1scansvalidate with: X-Team-Id: tools.X-Team-Id body: tools.body outputParameters: - type: object mapping: $. - name: get-scan-vuln-exposure-metrics description: Get scan vuln exposure metrics hints: readOnly: true destructive: false idempotent: true call: nuclei-scan.getv1scansvulnsexposuresmetrics with: interval: tools.interval X-Team-Id: tools.X-Team-Id outputParameters: - type: object mapping: $. - name: get-scan-vuln-regression-metrics description: Get scan vuln regression metrics hints: readOnly: true destructive: false idempotent: true call: nuclei-scan.getv1scansvulnsregressionmetrics with: interval: tools.interval X-Team-Id: tools.X-Team-Id outputParameters: - type: object mapping: $. - name: get-scan-vuln-remediation-metrics description: Get scan vuln remediation metrics hints: readOnly: true destructive: false idempotent: true call: nuclei-scan.getv1scansvulnsremediationmetrics with: interval: tools.interval X-Team-Id: tools.X-Team-Id outputParameters: - type: object mapping: $.