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

analytex-general.yaml Raw ↑
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: $.