Gremlin · Capability

Gremlin API — attacks

Gremlin API — attacks. 14 operations. Lead operation: List all attacks.. Self-contained Naftiko capability covering one Gremlin business surface.

Run with Naftiko Gremlinattacks

What You Can Do

GET
All — List all attacks.
/v1/attacks
POST
Createnewattack — Create a new attack.
/v1/attacks
DELETE
Halt — Idempotently halt all active attacks
/v1/attacks
GET
Active — List all active attacks.
/v1/attacks/active
GET
Activepaged — Return a page of active ad-hoc experiments.
/v1/attacks/active/paged
GET
Completed — List all completed attacks.
/v1/attacks/completed
GET
Completedpaged — Return a page of completed ad-hoc experiments.
/v1/attacks/completed/paged
POST
Haltaspost — Idempotently halt all active attacks. This is a POST version of the DELETE operation.
/v1/attacks/halt
POST
Create — Legacy Create Attack.
/v1/attacks/new
GET
Allattacksinrange — List all attacks in a given time range (defaults to all attacks up to now)
/v1/attacks/range
GET
Get — Get details about an attack.
/v1/attacks/{guid}
DELETE
Halt1 — Idempotently halt the specified active attack.
/v1/attacks/{guid}
PUT
Addannotations — Add annotations to an attack
/v1/attacks/{guid}/annotations
POST
Haltaspost1 — Idempotently halt the specified active attack.
/v1/attacks/{guid}/halt

MCP Tools

list-all-attacks

List all attacks.

read-only idempotent
create-new-attack

Create a new attack.

idempotently-halt-all-active-attacks

Idempotently halt all active attacks

idempotent
list-all-active-attacks

List all active attacks.

read-only idempotent
return-page-active-ad-hoc

Return a page of active ad-hoc experiments.

read-only idempotent
list-all-completed-attacks

List all completed attacks.

read-only idempotent
return-page-completed-ad-hoc

Return a page of completed ad-hoc experiments.

read-only idempotent
idempotently-halt-all-active-attacks-2

Idempotently halt all active attacks. This is a POST version of the DELETE operation.

legacy-create-attack

Legacy Create Attack.

list-all-attacks-given-time

List all attacks in a given time range (defaults to all attacks up to now)

read-only idempotent
get-details-about-attack

Get details about an attack.

read-only idempotent
idempotently-halt-specified-active-attack

Idempotently halt the specified active attack.

idempotent
add-annotations-attack

Add annotations to an attack

idempotent
idempotently-halt-specified-active-attack-2

Idempotently halt the specified active attack.

Capability Spec

gremlin-attacks.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Gremlin API — attacks
  description: 'Gremlin API — attacks. 14 operations. Lead operation: List all attacks.. Self-contained Naftiko capability
    covering one Gremlin business surface.'
  tags:
  - Gremlin
  - attacks
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    GREMLIN_API_KEY: GREMLIN_API_KEY
capability:
  consumes:
  - type: http
    namespace: gremlin-attacks
    baseUri: https://api.gremlin.com/v1
    description: Gremlin API — attacks business capability. Self-contained, no shared references.
    resources:
    - name: attacks
      path: /attacks
      operations:
      - name: all
        method: GET
        description: List all attacks.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: source
          in: query
          type: string
          description: Filter attacks to either adhoc or scenario.
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
      - name: createnewattack
        method: POST
        description: Create a new attack.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: halt
        method: DELETE
        description: Idempotently halt all active attacks
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: attacks-active
      path: /attacks/active
      operations:
      - name: active
        method: GET
        description: List all active attacks.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: source
          in: query
          type: string
          description: Filter attacks to either adhoc or scenario.
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-active-paged
      path: /attacks/active/paged
      operations:
      - name: activepaged
        method: GET
        description: Return a page of active ad-hoc experiments.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: pageToken
          in: query
          type: string
          description: Pass the pageToken to get the next page of active ad-hoc experiments
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-completed
      path: /attacks/completed
      operations:
      - name: completed
        method: GET
        description: List all completed attacks.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: source
          in: query
          type: string
          description: Filter attacks to either adhoc or scenario.
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-completed-paged
      path: /attacks/completed/paged
      operations:
      - name: completedpaged
        method: GET
        description: Return a page of completed ad-hoc experiments.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: pageToken
          in: query
          type: string
          description: Pass the pageToken to get the next page of completed ad-hoc experiments
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-halt
      path: /attacks/halt
      operations:
      - name: haltaspost
        method: POST
        description: Idempotently halt all active attacks.  This is a POST version of the DELETE operation.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: attacks-new
      path: /attacks/new
      operations:
      - name: create
        method: POST
        description: Legacy Create Attack.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: attacks-range
      path: /attacks/range
      operations:
      - name: allattacksinrange
        method: GET
        description: List all attacks in a given time range (defaults to all attacks up to now)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: startTime
          in: query
          type: string
        - name: endTime
          in: query
          type: string
        - name: pageSize
          in: query
          type: integer
          description: This value determines how many results will be returned per call.
        - name: pageToken
          in: query
          type: string
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-guid
      path: /attacks/{guid}
      operations:
      - name: get
        method: GET
        description: Get details about an attack.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: guid
          in: path
          type: string
          description: This value represents the globally unique identifier of the record to fetch.
          required: true
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
      - name: halt1
        method: DELETE
        description: Idempotently halt the specified active attack.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: guid
          in: path
          type: string
          description: This value represents the globally unique identifier of the record to fetch.
          required: true
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
    - name: attacks-guid-annotations
      path: /attacks/{guid}/annotations
      operations:
      - name: addannotations
        method: PUT
        description: Add annotations to an attack
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: guid
          in: path
          type: string
          description: This value represents the globally unique identifier of the record to fetch.
          required: true
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: attacks-guid-halt
      path: /attacks/{guid}/halt
      operations:
      - name: haltaspost1
        method: POST
        description: Idempotently halt the specified active attack.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: guid
          in: path
          type: string
          description: This value represents the globally unique identifier of the record to fetch.
          required: true
        - name: teamId
          in: query
          type: string
          description: Required when using company session token.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
  exposes:
  - type: rest
    namespace: gremlin-attacks-rest
    port: 8080
    description: REST adapter for Gremlin API — attacks. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/attacks
      name: attacks
      description: REST surface for attacks.
      operations:
      - method: GET
        name: all
        description: List all attacks.
        call: gremlin-attacks.all
        with:
          source: rest.source
          pageSize: rest.pageSize
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createnewattack
        description: Create a new attack.
        call: gremlin-attacks.createnewattack
        with:
          teamId: rest.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: halt
        description: Idempotently halt all active attacks
        call: gremlin-attacks.halt
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/active
      name: attacks-active
      description: REST surface for attacks-active.
      operations:
      - method: GET
        name: active
        description: List all active attacks.
        call: gremlin-attacks.active
        with:
          source: rest.source
          pageSize: rest.pageSize
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/active/paged
      name: attacks-active-paged
      description: REST surface for attacks-active-paged.
      operations:
      - method: GET
        name: activepaged
        description: Return a page of active ad-hoc experiments.
        call: gremlin-attacks.activepaged
        with:
          pageSize: rest.pageSize
          pageToken: rest.pageToken
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/completed
      name: attacks-completed
      description: REST surface for attacks-completed.
      operations:
      - method: GET
        name: completed
        description: List all completed attacks.
        call: gremlin-attacks.completed
        with:
          source: rest.source
          pageSize: rest.pageSize
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/completed/paged
      name: attacks-completed-paged
      description: REST surface for attacks-completed-paged.
      operations:
      - method: GET
        name: completedpaged
        description: Return a page of completed ad-hoc experiments.
        call: gremlin-attacks.completedpaged
        with:
          pageSize: rest.pageSize
          pageToken: rest.pageToken
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/halt
      name: attacks-halt
      description: REST surface for attacks-halt.
      operations:
      - method: POST
        name: haltaspost
        description: Idempotently halt all active attacks.  This is a POST version of the DELETE operation.
        call: gremlin-attacks.haltaspost
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/new
      name: attacks-new
      description: REST surface for attacks-new.
      operations:
      - method: POST
        name: create
        description: Legacy Create Attack.
        call: gremlin-attacks.create
        with:
          teamId: rest.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/range
      name: attacks-range
      description: REST surface for attacks-range.
      operations:
      - method: GET
        name: allattacksinrange
        description: List all attacks in a given time range (defaults to all attacks up to now)
        call: gremlin-attacks.allattacksinrange
        with:
          startTime: rest.startTime
          endTime: rest.endTime
          pageSize: rest.pageSize
          pageToken: rest.pageToken
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/{guid}
      name: attacks-guid
      description: REST surface for attacks-guid.
      operations:
      - method: GET
        name: get
        description: Get details about an attack.
        call: gremlin-attacks.get
        with:
          guid: rest.guid
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: halt1
        description: Idempotently halt the specified active attack.
        call: gremlin-attacks.halt1
        with:
          guid: rest.guid
          teamId: rest.teamId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/{guid}/annotations
      name: attacks-guid-annotations
      description: REST surface for attacks-guid-annotations.
      operations:
      - method: PUT
        name: addannotations
        description: Add annotations to an attack
        call: gremlin-attacks.addannotations
        with:
          guid: rest.guid
          teamId: rest.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/attacks/{guid}/halt
      name: attacks-guid-halt
      description: REST surface for attacks-guid-halt.
      operations:
      - method: POST
        name: haltaspost1
        description: Idempotently halt the specified active attack.
        call: gremlin-attacks.haltaspost1
        with:
          guid: rest.guid
          teamId: rest.teamId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: gremlin-attacks-mcp
    port: 9090
    transport: http
    description: MCP adapter for Gremlin API — attacks. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-all-attacks
      description: List all attacks.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.all
      with:
        source: tools.source
        pageSize: tools.pageSize
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: create-new-attack
      description: Create a new attack.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gremlin-attacks.createnewattack
      with:
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: idempotently-halt-all-active-attacks
      description: Idempotently halt all active attacks
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: gremlin-attacks.halt
      outputParameters:
      - type: object
        mapping: $.
    - name: list-all-active-attacks
      description: List all active attacks.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.active
      with:
        source: tools.source
        pageSize: tools.pageSize
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: return-page-active-ad-hoc
      description: Return a page of active ad-hoc experiments.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.activepaged
      with:
        pageSize: tools.pageSize
        pageToken: tools.pageToken
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-all-completed-attacks
      description: List all completed attacks.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.completed
      with:
        source: tools.source
        pageSize: tools.pageSize
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: return-page-completed-ad-hoc
      description: Return a page of completed ad-hoc experiments.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.completedpaged
      with:
        pageSize: tools.pageSize
        pageToken: tools.pageToken
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: idempotently-halt-all-active-attacks-2
      description: Idempotently halt all active attacks.  This is a POST version of the DELETE operation.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gremlin-attacks.haltaspost
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: legacy-create-attack
      description: Legacy Create Attack.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gremlin-attacks.create
      with:
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-all-attacks-given-time
      description: List all attacks in a given time range (defaults to all attacks up to now)
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.allattacksinrange
      with:
        startTime: tools.startTime
        endTime: tools.endTime
        pageSize: tools.pageSize
        pageToken: tools.pageToken
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: get-details-about-attack
      description: Get details about an attack.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: gremlin-attacks.get
      with:
        guid: tools.guid
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: idempotently-halt-specified-active-attack
      description: Idempotently halt the specified active attack.
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: gremlin-attacks.halt1
      with:
        guid: tools.guid
        teamId: tools.teamId
      outputParameters:
      - type: object
        mapping: $.
    - name: add-annotations-attack
      description: Add annotations to an attack
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: gremlin-attacks.addannotations
      with:
        guid: tools.guid
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: idempotently-halt-specified-active-attack-2
      description: Idempotently halt the specified active attack.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: gremlin-attacks.haltaspost1
      with:
        guid: tools.guid
        teamId: tools.teamId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.