Userpilot · Capability
Userpilot API
Userpilot API. 6 operations. Lead operation: List jobs. Self-contained Naftiko capability covering one Userpilot business surface.
Run with Naftiko
Userpilot
What You Can Do
GET
Get
— List jobs
/v1/v1/background-jobs
GET
Get
— Check job status
/v1/v1/background-jobs/{job-id}
POST
Post
— Companies - Bulk Identify and Update
/v1/v1/companies/bulk-identify
POST
Post
— Identify Company
/v1/v1/companies/identify
POST
Post
— Request Data Import
/v1/v1/imports
POST
Post
— Track Events
/v1/v1/track
MCP Tools
list-jobs
List jobs
read-only
idempotent
check-job-status
Check job status
read-only
idempotent
companies-bulk-identify-and-update
Companies - Bulk Identify and Update
identify-company
Identify Company
request-data-import
Request Data Import
track-events
Track Events
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Userpilot API
description: 'Userpilot API. 6 operations. Lead operation: List jobs. Self-contained Naftiko capability covering one Userpilot
business surface.'
tags:
- Userpilot
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
USERPILOT_API_KEY: USERPILOT_API_KEY
capability:
consumes:
- type: http
namespace: analytex-general
baseUri: https://{environment}.userpilot.io
description: Userpilot API business capability. Self-contained, no shared references.
resources:
- name: v1-background_jobs
path: /v1/background_jobs
operations:
- name: get
method: GET
description: List jobs
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-background_jobs-job_id
path: /v1/background_jobs/{{job_id}}
operations:
- name: get
method: GET
description: Check job status
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: job_id
in: path
type: string
required: true
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-companies-bulk_identify
path: /v1/companies/bulk_identify
operations:
- name: post
method: POST
description: Companies - Bulk Identify and Update
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-companies-identify
path: /v1/companies/identify
operations:
- name: post
method: POST
description: Identify Company
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-imports
path: /v1/imports
operations:
- name: post
method: POST
description: Request Data Import
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
- name: v1-track
path: /v1/track
operations:
- name: post
method: POST
description: Track Events
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: Content-Type
in: header
type: string
- name: Accept
in: header
type: string
- name: body
in: body
type: object
description: Request body (JSON).
required: false
exposes:
- type: rest
namespace: analytex-general-rest
port: 8080
description: REST adapter for Userpilot API. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/v1/background-jobs
name: v1-background-jobs
description: REST surface for v1-background_jobs.
operations:
- method: GET
name: get
description: List jobs
call: analytex-general.get
with:
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/background-jobs/{job-id}
name: v1-background-jobs-job-id
description: REST surface for v1-background_jobs-job_id.
operations:
- method: GET
name: get
description: Check job status
call: analytex-general.get
with:
job_id: rest.job_id
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/companies/bulk-identify
name: v1-companies-bulk-identify
description: REST surface for v1-companies-bulk_identify.
operations:
- method: POST
name: post
description: Companies - Bulk Identify and Update
call: analytex-general.post
with:
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/companies/identify
name: v1-companies-identify
description: REST surface for v1-companies-identify.
operations:
- method: POST
name: post
description: Identify Company
call: analytex-general.post
with:
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/imports
name: v1-imports
description: REST surface for v1-imports.
operations:
- method: POST
name: post
description: Request Data Import
call: analytex-general.post
with:
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- path: /v1/v1/track
name: v1-track
description: REST surface for v1-track.
operations:
- method: POST
name: post
description: Track Events
call: analytex-general.post
with:
Content-Type: rest.Content-Type
Accept: rest.Accept
body: rest.body
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: analytex-general-mcp
port: 9090
transport: http
description: MCP adapter for Userpilot API. One tool per consumed operation, routed inline through this capability's consumes
block.
tools:
- name: list-jobs
description: List jobs
hints:
readOnly: true
destructive: false
idempotent: true
call: analytex-general.get
with:
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: check-job-status
description: Check job status
hints:
readOnly: true
destructive: false
idempotent: true
call: analytex-general.get
with:
job_id: tools.job_id
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: companies-bulk-identify-and-update
description: Companies - Bulk Identify and Update
hints:
readOnly: false
destructive: false
idempotent: false
call: analytex-general.post
with:
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: identify-company
description: Identify Company
hints:
readOnly: false
destructive: false
idempotent: false
call: analytex-general.post
with:
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: request-data-import
description: Request Data Import
hints:
readOnly: false
destructive: false
idempotent: false
call: analytex-general.post
with:
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.
- name: track-events
description: Track Events
hints:
readOnly: false
destructive: false
idempotent: false
call: analytex-general.post
with:
Content-Type: tools.Content-Type
Accept: tools.Accept
body: tools.body
outputParameters:
- type: object
mapping: $.