Nuclei · Capability
PDCP API — templates
PDCP API — templates. 16 operations. Lead operation: Get Template List. Self-contained Naftiko capability covering one Nuclei business surface.
What You Can Do
GET
Getv1templates
— Get Template List
/v1/v1/template
POST
Postv1template
— Create Template
/v1/v1/template
PATCH
Patchv1template
— Update Template
/v1/v1/template
POST
Postv1templateai
— Generate AI Template
/v1/v1/template/ai
GET
Getv1earlytemplates
— Get Early Template List
/v1/v1/template/early
GET
Getv1earlytemplatesid
— Get Early Template
/v1/v1/template/early/{id}
GET
Getv1githubtemplates
— Get Github Template List
/v1/v1/template/github
GET
Getv1githubtemplatesid
— Get Github Template
/v1/v1/template/github/{id}
GET
Getv1templatepublic
— Get Public Template List
/v1/v1/template/public
GET
Getv1publictemplatedata
— Get Public Template
/v1/v1/template/public/{template-id}
GET
Getv1templateshare
— Get Shared Template List
/v1/v1/template/share
POST
Postv1templateshare
— Share Template
/v1/v1/template/share
GET
Getv1templatesharetemplateid
— Get Shared Template
/v1/v1/template/share/{template-id}
GET
Getv1templatestats
— Get Public Template Stats
/v1/v1/template/stats
GET
Getv1templatetid
— Get Template
/v1/v1/template/{template-id}
DELETE
Deletev1templatetemplateid
— Delete Template
/v1/v1/template/{template-id}
MCP Tools
get-template-list
Get Template List
read-only
idempotent
create-template
Create Template
update-template
Update Template
idempotent
generate-ai-template
Generate AI Template
get-early-template-list
Get Early Template List
read-only
idempotent
get-early-template
Get Early Template
read-only
idempotent
get-github-template-list
Get Github Template List
read-only
idempotent
get-github-template
Get Github Template
read-only
idempotent
get-public-template-list
Get Public Template List
read-only
idempotent
get-public-template
Get Public Template
read-only
idempotent
get-shared-template-list
Get Shared Template List
read-only
idempotent
share-template
Share Template
get-shared-template
Get Shared Template
read-only
idempotent
get-public-template-stats
Get Public Template Stats
read-only
idempotent
get-template
Get Template
read-only
idempotent
delete-template
Delete Template
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: PDCP API — templates
description: 'PDCP API — templates. 16 operations. Lead operation: Get Template List. Self-contained Naftiko capability
covering one Nuclei business surface.'
tags:
- Nuclei
- templates
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
NUCLEI_API_KEY: NUCLEI_API_KEY
capability:
consumes:
- type: http
namespace: nuclei-templates
baseUri: https://api.projectdiscovery.io
description: PDCP API — templates business capability. Self-contained, no shared references.
resources:
- name: v1-template
path: /v1/template
operations:
- name: getv1templates
method: GET
description: Get Template List
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: offset
in: query
type: integer
- name: limit
in: query
type: integer
- name: fields
in: query
type: string
- name: postv1template
method: POST
description: Create Template
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: filename
in: query
type: string
description: filename for template
- name: dir
in: query
type: string
description: directories for template
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: patchv1template
method: PATCH
description: Update Template
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-template-ai
path: /v1/template/ai
operations:
- name: postv1templateai
method: POST
description: Generate AI Template
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-template-early
path: /v1/template/early
operations:
- name: getv1earlytemplates
method: GET
description: Get Early Template List
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: offset
in: query
type: integer
- name: limit
in: query
type: integer
- name: fields
in: query
type: string
- name: v1-template-early-id
path: /v1/template/early/{id}
operations:
- name: getv1earlytemplatesid
method: GET
description: Get Early Template
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-template-github
path: /v1/template/github
operations:
- name: getv1githubtemplates
method: GET
description: Get Github Template List
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: offset
in: query
type: integer
- name: limit
in: query
type: integer
- name: fields
in: query
type: string
- name: v1-template-github-id
path: /v1/template/github/{id}
operations:
- name: getv1githubtemplatesid
method: GET
description: Get Github Template
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-template-public
path: /v1/template/public
operations:
- name: getv1templatepublic
method: GET
description: Get Public Template List
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: offset
in: query
type: integer
description: Pagination offset (no. of results to skip)
- name: limit
in: query
type: integer
description: Pagination limit (max no. of results in response)
- name: fields
in: query
type: string
description: template data fields
- name: v1-template-public-template_id
path: /v1/template/public/{template_id}
operations:
- name: getv1publictemplatedata
method: GET
description: Get Public Template
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: fields
in: query
type: string
description: template data fields
- name: X-Team-Id
in: header
type: string
description: 'Retrieve the Team ID from: https://cloud.projectdiscovery.io/settings/team'
- name: v1-template-share
path: /v1/template/share
operations:
- name: getv1templateshare
method: GET
description: Get Shared Template List
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: fields
in: query
type: string
- name: limit
in: query
type: integer
description: Limit The numbers of items to return
- name: offset
in: query
type: integer
description: Offset The numbers of items to skip
- name: sort_asc
in: query
type: string
description: SortAsc Sort results in ascending order (CSV field names)
- name: sort_desc
in: query
type: string
description: SortDesc Sort results in descending order (CSV field names)
- name: postv1templateshare
method: POST
description: Share Template
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-template-share-template_id
path: /v1/template/share/{template_id}
operations:
- name: getv1templatesharetemplateid
method: GET
description: Get Shared Template
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: fields
in: query
type: string
description: get selected fields e.g. name,template_id,severity, etc
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-template-stats
path: /v1/template/stats
operations:
- name: getv1templatestats
method: GET
description: Get Public Template Stats
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: limit
in: query
type: integer
description: Limit The numbers of items to return
- name: offset
in: query
type: integer
description: Offset The numbers of items to skip
- name: fields
in: query
type: string
- name: sort_asc
in: query
type: string
description: SortAsc Sort results in ascending order (CSV field names)
- name: sort_desc
in: query
type: string
description: SortDesc Sort results in descending order (CSV field names)
- name: q
in: query
type: string
- name: highlight
in: query
type: boolean
description: Highlight Whether to highlight the search results
- name: v1-template-template_id
path: /v1/template/{template_id}
operations:
- name: getv1templatetid
method: GET
description: Get Template
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: deletev1templatetemplateid
method: DELETE
description: Delete Template
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'
authentication:
type: apikey
key: X-API-Key
value: '{{env.NUCLEI_API_KEY}}'
placement: header
exposes:
- type: rest
namespace: nuclei-templates-rest
port: 8080
description: REST adapter for PDCP API — templates. One Spectral-compliant resource per consumed operation, prefixed with
/v1.
resources:
- path: /v1/v1/template
name: v1-template
description: REST surface for v1-template.
operations:
- method: GET
name: getv1templates
description: Get Template List
call: nuclei-templates.getv1templates
with:
X-Team-Id: rest.X-Team-Id
offset: rest.offset
limit: rest.limit
fields: rest.fields
outputParameters:
- type: object
mapping: $.
- method: POST
name: postv1template
description: Create Template
call: nuclei-templates.postv1template
with:
X-Team-Id: rest.X-Team-Id
filename: rest.filename
dir: rest.dir
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: PATCH
name: patchv1template
description: Update Template
call: nuclei-templates.patchv1template
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/ai
name: v1-template-ai
description: REST surface for v1-template-ai.
operations:
- method: POST
name: postv1templateai
description: Generate AI Template
call: nuclei-templates.postv1templateai
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/early
name: v1-template-early
description: REST surface for v1-template-early.
operations:
- method: GET
name: getv1earlytemplates
description: Get Early Template List
call: nuclei-templates.getv1earlytemplates
with:
X-Team-Id: rest.X-Team-Id
offset: rest.offset
limit: rest.limit
fields: rest.fields
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/early/{id}
name: v1-template-early-id
description: REST surface for v1-template-early-id.
operations:
- method: GET
name: getv1earlytemplatesid
description: Get Early Template
call: nuclei-templates.getv1earlytemplatesid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/github
name: v1-template-github
description: REST surface for v1-template-github.
operations:
- method: GET
name: getv1githubtemplates
description: Get Github Template List
call: nuclei-templates.getv1githubtemplates
with:
X-Team-Id: rest.X-Team-Id
offset: rest.offset
limit: rest.limit
fields: rest.fields
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/github/{id}
name: v1-template-github-id
description: REST surface for v1-template-github-id.
operations:
- method: GET
name: getv1githubtemplatesid
description: Get Github Template
call: nuclei-templates.getv1githubtemplatesid
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/public
name: v1-template-public
description: REST surface for v1-template-public.
operations:
- method: GET
name: getv1templatepublic
description: Get Public Template List
call: nuclei-templates.getv1templatepublic
with:
X-Team-Id: rest.X-Team-Id
offset: rest.offset
limit: rest.limit
fields: rest.fields
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/public/{template-id}
name: v1-template-public-template-id
description: REST surface for v1-template-public-template_id.
operations:
- method: GET
name: getv1publictemplatedata
description: Get Public Template
call: nuclei-templates.getv1publictemplatedata
with:
fields: rest.fields
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/share
name: v1-template-share
description: REST surface for v1-template-share.
operations:
- method: GET
name: getv1templateshare
description: Get Shared Template List
call: nuclei-templates.getv1templateshare
with:
X-Team-Id: rest.X-Team-Id
fields: rest.fields
limit: rest.limit
offset: rest.offset
sort_asc: rest.sort_asc
sort_desc: rest.sort_desc
outputParameters:
- type: object
mapping: $.
- method: POST
name: postv1templateshare
description: Share Template
call: nuclei-templates.postv1templateshare
with:
X-Team-Id: rest.X-Team-Id
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/share/{template-id}
name: v1-template-share-template-id
description: REST surface for v1-template-share-template_id.
operations:
- method: GET
name: getv1templatesharetemplateid
description: Get Shared Template
call: nuclei-templates.getv1templatesharetemplateid
with:
fields: rest.fields
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/stats
name: v1-template-stats
description: REST surface for v1-template-stats.
operations:
- method: GET
name: getv1templatestats
description: Get Public Template Stats
call: nuclei-templates.getv1templatestats
with:
limit: rest.limit
offset: rest.offset
fields: rest.fields
sort_asc: rest.sort_asc
sort_desc: rest.sort_desc
q: rest.q
highlight: rest.highlight
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/template/{template-id}
name: v1-template-template-id
description: REST surface for v1-template-template_id.
operations:
- method: GET
name: getv1templatetid
description: Get Template
call: nuclei-templates.getv1templatetid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- method: DELETE
name: deletev1templatetemplateid
description: Delete Template
call: nuclei-templates.deletev1templatetemplateid
with:
X-Team-Id: rest.X-Team-Id
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: nuclei-templates-mcp
port: 9090
transport: http
description: MCP adapter for PDCP API — templates. One tool per consumed operation, routed inline through this capability's
consumes block.
tools:
- name: get-template-list
description: Get Template List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templates
with:
X-Team-Id: tools.X-Team-Id
offset: tools.offset
limit: tools.limit
fields: tools.fields
outputParameters:
- type: object
mapping: $.
- name: create-template
description: Create Template
hints:
readOnly: false
destructive: false
idempotent: false
call: nuclei-templates.postv1template
with:
X-Team-Id: tools.X-Team-Id
filename: tools.filename
dir: tools.dir
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: update-template
description: Update Template
hints:
readOnly: false
destructive: false
idempotent: true
call: nuclei-templates.patchv1template
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: generate-ai-template
description: Generate AI Template
hints:
readOnly: false
destructive: false
idempotent: false
call: nuclei-templates.postv1templateai
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-early-template-list
description: Get Early Template List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1earlytemplates
with:
X-Team-Id: tools.X-Team-Id
offset: tools.offset
limit: tools.limit
fields: tools.fields
outputParameters:
- type: object
mapping: $.
- name: get-early-template
description: Get Early Template
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1earlytemplatesid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: get-github-template-list
description: Get Github Template List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1githubtemplates
with:
X-Team-Id: tools.X-Team-Id
offset: tools.offset
limit: tools.limit
fields: tools.fields
outputParameters:
- type: object
mapping: $.
- name: get-github-template
description: Get Github Template
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1githubtemplatesid
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-public-template-list
description: Get Public Template List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templatepublic
with:
X-Team-Id: tools.X-Team-Id
offset: tools.offset
limit: tools.limit
fields: tools.fields
outputParameters:
- type: object
mapping: $.
- name: get-public-template
description: Get Public Template
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1publictemplatedata
with:
fields: tools.fields
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: get-shared-template-list
description: Get Shared Template List
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templateshare
with:
X-Team-Id: tools.X-Team-Id
fields: tools.fields
limit: tools.limit
offset: tools.offset
sort_asc: tools.sort_asc
sort_desc: tools.sort_desc
outputParameters:
- type: object
mapping: $.
- name: share-template
description: Share Template
hints:
readOnly: false
destructive: false
idempotent: false
call: nuclei-templates.postv1templateshare
with:
X-Team-Id: tools.X-Team-Id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-shared-template
description: Get Shared Template
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templatesharetemplateid
with:
fields: tools.fields
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-public-template-stats
description: Get Public Template Stats
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templatestats
with:
limit: tools.limit
offset: tools.offset
fields: tools.fields
sort_asc: tools.sort_asc
sort_desc: tools.sort_desc
q: tools.q
highlight: tools.highlight
outputParameters:
- type: object
mapping: $.
- name: get-template
description: Get Template
hints:
readOnly: true
destructive: false
idempotent: true
call: nuclei-templates.getv1templatetid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.
- name: delete-template
description: Delete Template
hints:
readOnly: false
destructive: true
idempotent: true
call: nuclei-templates.deletev1templatetemplateid
with:
X-Team-Id: tools.X-Team-Id
outputParameters:
- type: object
mapping: $.