Courier · Capability
Courier — Bulk
Courier — Bulk. 5 operations. Lead operation: Create a bulk job. Self-contained Naftiko capability covering one Courier business surface.
What You Can Do
POST
Bulkcreatejob
— Create a bulk job
/v1/bulk
POST
Bulkingestusers
— Add users
/v1/bulk/{job-id}
GET
Bulkgetjob
— Get a Job
/v1/bulk/{job-id}
POST
Bulkrunjob
— Run a job
/v1/bulk/{job-id}/run
GET
Bulkgetusers
— Get users
/v1/bulk/{job-id}/users
MCP Tools
create-bulk-job
Create a bulk job
add-users
Add users
get-job
Get a Job
read-only
idempotent
run-job
Run a job
get-users
Get users
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Courier — Bulk
description: 'Courier — Bulk. 5 operations. Lead operation: Create a bulk job. Self-contained Naftiko capability covering
one Courier business surface.'
tags:
- Courier
- Bulk
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
COURIER_API_KEY: COURIER_API_KEY
capability:
consumes:
- type: http
namespace: courier-bulk
baseUri: https://api.courier.com
description: Courier — Bulk business capability. Self-contained, no shared references.
resources:
- name: bulk
path: /bulk
operations:
- name: bulkcreatejob
method: POST
description: Create a bulk job
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: bulk-job_id
path: /bulk/{job_id}
operations:
- name: bulkingestusers
method: POST
description: Add users
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: job_id
in: path
type: string
description: A unique identifier representing the bulk job
required: true
- name: body
in: body
type: object
description: Request body (JSON).
required: true
- name: bulkgetjob
method: GET
description: Get a Job
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: job_id
in: path
type: string
description: A unique identifier representing the bulk job
required: true
- name: bulk-job_id-run
path: /bulk/{job_id}/run
operations:
- name: bulkrunjob
method: POST
description: Run a job
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: job_id
in: path
type: string
description: A unique identifier representing the bulk job
required: true
- name: bulk-job_id-users
path: /bulk/{job_id}/users
operations:
- name: bulkgetusers
method: GET
description: Get users
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: job_id
in: path
type: string
description: A unique identifier representing the bulk job
required: true
- name: cursor
in: query
type: string
description: A unique identifier that allows for fetching the next set of users added to the bulk job
authentication:
type: bearer
token: '{{env.COURIER_API_KEY}}'
exposes:
- type: rest
namespace: courier-bulk-rest
port: 8080
description: REST adapter for Courier — Bulk. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/bulk
name: bulk
description: REST surface for bulk.
operations:
- method: POST
name: bulkcreatejob
description: Create a bulk job
call: courier-bulk.bulkcreatejob
with:
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/bulk/{job-id}
name: bulk-job-id
description: REST surface for bulk-job_id.
operations:
- method: POST
name: bulkingestusers
description: Add users
call: courier-bulk.bulkingestusers
with:
job_id: rest.job_id
body: rest.body
outputParameters:
- type: object
mapping: $.
- method: GET
name: bulkgetjob
description: Get a Job
call: courier-bulk.bulkgetjob
with:
job_id: rest.job_id
outputParameters:
- type: object
mapping: $.
- path: /v1/bulk/{job-id}/run
name: bulk-job-id-run
description: REST surface for bulk-job_id-run.
operations:
- method: POST
name: bulkrunjob
description: Run a job
call: courier-bulk.bulkrunjob
with:
job_id: rest.job_id
outputParameters:
- type: object
mapping: $.
- path: /v1/bulk/{job-id}/users
name: bulk-job-id-users
description: REST surface for bulk-job_id-users.
operations:
- method: GET
name: bulkgetusers
description: Get users
call: courier-bulk.bulkgetusers
with:
job_id: rest.job_id
cursor: rest.cursor
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: courier-bulk-mcp
port: 9090
transport: http
description: MCP adapter for Courier — Bulk. One tool per consumed operation, routed inline through this capability's
consumes block.
tools:
- name: create-bulk-job
description: Create a bulk job
hints:
readOnly: false
destructive: false
idempotent: false
call: courier-bulk.bulkcreatejob
with:
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: add-users
description: Add users
hints:
readOnly: false
destructive: false
idempotent: false
call: courier-bulk.bulkingestusers
with:
job_id: tools.job_id
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: get-job
description: Get a Job
hints:
readOnly: true
destructive: false
idempotent: true
call: courier-bulk.bulkgetjob
with:
job_id: tools.job_id
outputParameters:
- type: object
mapping: $.
- name: run-job
description: Run a job
hints:
readOnly: false
destructive: false
idempotent: false
call: courier-bulk.bulkrunjob
with:
job_id: tools.job_id
outputParameters:
- type: object
mapping: $.
- name: get-users
description: Get users
hints:
readOnly: true
destructive: false
idempotent: true
call: courier-bulk.bulkgetusers
with:
job_id: tools.job_id
cursor: tools.cursor
outputParameters:
- type: object
mapping: $.