naftiko: 1.0.0-alpha2 info: label: VirusTotal API v3 - Private Scanning — Private Scanning - Analyses description: 'VirusTotal API v3 - Private Scanning — Private Scanning - Analyses. 4 operations. Lead operation: List Private Analyses. Self-contained Naftiko capability covering one VirusTotal business surface.' tags: - VirusTotal - Private Scanning - Analyses created: '2026-05-29' modified: '2026-05-29' binds: - namespace: env keys: VIRUSTOTAL_API_KEY: VIRUSTOTAL_API_KEY capability: consumes: - type: http namespace: private-scanning-private-scanning-analyses baseUri: https://www.virustotal.com/api/v3 description: VirusTotal API v3 - Private Scanning — Private Scanning - Analyses. Self-contained, no shared references. authentication: type: apikey key: x-apikey value: '{{env.VIRUSTOTAL_API_KEY}}' placement: header resources: - name: private-analyses path: /private/analyses operations: - name: listPrivateAnalyses method: GET description: VirusTotal List Private Analyses inputParameters: - name: limit in: query type: integer required: false description: Maximum number of files to retrieve (40 max) - name: cursor in: query type: string required: false description: Continuation cursor - name: order in: query type: string required: false description: Sorting order outputRawFormat: json outputParameters: - name: result type: object value: $. - name: private-analyses-id path: /private/analyses/{id} operations: - name: privateAnalysis method: GET description: VirusTotal Get a Private Analysis inputParameters: - name: id in: path type: string required: true description: Analysis identifier outputRawFormat: json outputParameters: - name: result type: object value: $. - name: private-analyses-id-relationships-relationship path: /private/analyses/{id}/relationships/{relationship} operations: - name: analysesidrelationshipsrelationship method: GET description: VirusTotal Get Object Descriptors Related to a Private Analysis inputParameters: - name: id in: path type: string required: true description: Analysis identifier - name: relationship in: path type: string required: true description: Relationship name (see [table](ref:private-analyses-object#relationships)) outputRawFormat: json outputParameters: - name: result type: object value: $. - name: private-analyses-id-relationship path: /private/analyses/{id}/{relationship} operations: - name: analysesidrelationship method: GET description: VirusTotal Get Objects Related to a Private Analysis inputParameters: - name: id in: path type: string required: true description: Analysis identifier - name: relationship in: path type: string required: true description: Relationship name (see [table](ref:private-analyses-object#relationships)) outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: private-scanning-private-scanning-analyses-rest port: 8080 description: REST adapter for VirusTotal API v3 - Private Scanning — Private Scanning - Analyses. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/private/analyses name: private-analyses description: REST surface for /private/analyses. operations: - method: GET name: listPrivateAnalyses description: VirusTotal List Private Analyses call: private-scanning-private-scanning-analyses.listPrivateAnalyses outputParameters: - type: object mapping: $. with: limit: rest.limit cursor: rest.cursor order: rest.order - path: /v1/private/analyses/{id} name: private-analyses-id description: REST surface for /private/analyses/{id}. operations: - method: GET name: privateAnalysis description: VirusTotal Get a Private Analysis call: private-scanning-private-scanning-analyses.privateAnalysis outputParameters: - type: object mapping: $. with: id: rest.id - path: /v1/private/analyses/{id}/relationships/{relationship} name: private-analyses-id-relationships-relationship description: REST surface for /private/analyses/{id}/relationships/{relationship}. operations: - method: GET name: analysesidrelationshipsrelationship description: VirusTotal Get Object Descriptors Related to a Private Analysis call: private-scanning-private-scanning-analyses.analysesidrelationshipsrelationship outputParameters: - type: object mapping: $. with: id: rest.id relationship: rest.relationship - path: /v1/private/analyses/{id}/{relationship} name: private-analyses-id-relationship description: REST surface for /private/analyses/{id}/{relationship}. operations: - method: GET name: analysesidrelationship description: VirusTotal Get Objects Related to a Private Analysis call: private-scanning-private-scanning-analyses.analysesidrelationship outputParameters: - type: object mapping: $. with: id: rest.id relationship: rest.relationship - type: mcp namespace: private-scanning-private-scanning-analyses-mcp port: 9090 transport: http description: MCP adapter for VirusTotal API v3 - Private Scanning — Private Scanning - Analyses. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-private-analyses description: VirusTotal List Private Analyses hints: readOnly: true destructive: false idempotent: true call: private-scanning-private-scanning-analyses.listPrivateAnalyses outputParameters: - type: object mapping: $. with: limit: tools.limit cursor: tools.cursor order: tools.order - name: get-private-analysis description: VirusTotal Get a Private Analysis hints: readOnly: true destructive: false idempotent: true call: private-scanning-private-scanning-analyses.privateAnalysis outputParameters: - type: object mapping: $. with: id: tools.id - name: get-object-descriptors-related-private description: VirusTotal Get Object Descriptors Related to a Private Analysis hints: readOnly: true destructive: false idempotent: true call: private-scanning-private-scanning-analyses.analysesidrelationshipsrelationship outputParameters: - type: object mapping: $. with: id: tools.id relationship: tools.relationship - name: get-objects-related-private-analysis description: VirusTotal Get Objects Related to a Private Analysis hints: readOnly: true destructive: false idempotent: true call: private-scanning-private-scanning-analyses.analysesidrelationship outputParameters: - type: object mapping: $. with: id: tools.id relationship: tools.relationship