Zylo · Capability

Zylo Enterprise API

The Zylo Enterprise API provides a modern, RESTful API to work with your SaaS subscription data. The API is built using resource-oriented URLs that are protected by HTTPS transport security and authenticated via secure tokens. It enables the export of SaaS usage and subscription data to reporting tools outside of Zylo, as well as the import of additional unintegrated usage data.

Run with Naftiko ZyloAPI

What You Can Do

GET
Listsubscriptions — Zylo List subscriptions
/subscriptions
GET
Getsubscription — Zylo Get a subscription
/subscriptions/{subscriptionId}
GET
Listapplications — Zylo List applications
/applications
GET
Getapplication — Zylo Get an application
/applications/{applicationId}
PUT
Updateapplication — Zylo Update an application
/applications/{applicationId}
POST
Createexportjob — Zylo Create an export job
/subscriptions/-/exportJobs
GET
Getexportjob — Zylo Get an export job
/subscriptions/-/exportJobs/{exportJobId}
GET
Listimportjobs — Zylo List import jobs
/subscriptions/{subscriptionId}/importJob
POST
Createimportjob — Zylo Create an import job
/subscriptions/{subscriptionId}/importJob
GET
Getimportjob — Zylo Get an import job
/subscriptions/{subscriptionId}/importJob/{importJobId}

MCP Tools

listsubscriptions

Zylo List subscriptions

read-only idempotent
getsubscription

Zylo Get a subscription

read-only idempotent
listapplications

Zylo List applications

read-only idempotent
getapplication

Zylo Get an application

read-only idempotent
updateapplication

Zylo Update an application

idempotent
createexportjob

Zylo Create an export job

getexportjob

Zylo Get an export job

read-only idempotent
listimportjobs

Zylo List import jobs

read-only idempotent
createimportjob

Zylo Create an import job

getimportjob

Zylo Get an import job

read-only idempotent

Capability Spec

zylo-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Zylo Enterprise API
  description: The Zylo Enterprise API provides a modern, RESTful API to work with your SaaS subscription data. The API is
    built using resource-oriented URLs that are protected by HTTPS transport security and authenticated via secure tokens.
    It enables the export of SaaS usage and subscription data to reporting tools outside of Zylo, as well as the import of
    additional unintegrated usage data.
  tags:
  - Zylo
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: zylo
    baseUri: https://api.zylo.com/v1
    description: Zylo Enterprise API HTTP API.
    authentication:
      type: bearer
      token: '{{ZYLO_TOKEN}}'
    resources:
    - name: subscriptions
      path: /subscriptions
      operations:
      - name: listsubscriptions
        method: GET
        description: Zylo List subscriptions
        inputParameters:
        - name: pageSize
          in: query
          type: integer
          description: The maximum number of results to return per page.
        - name: pageToken
          in: query
          type: string
          description: A token returned from a previous list request to retrieve the next page of results.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: subscriptions-subscriptionid
      path: /subscriptions/{subscriptionId}
      operations:
      - name: getsubscription
        method: GET
        description: Zylo Get a subscription
        inputParameters:
        - name: subscriptionId
          in: path
          type: string
          required: true
          description: The unique identifier of the subscription.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications
      path: /applications
      operations:
      - name: listapplications
        method: GET
        description: Zylo List applications
        inputParameters:
        - name: pageSize
          in: query
          type: integer
          description: The maximum number of results to return per page.
        - name: pageToken
          in: query
          type: string
          description: A token returned from a previous list request to retrieve the next page of results.
        - name: custom_fields
          in: query
          type: object
          description: Filter applications by custom field values. Uses bracket notation such as custom_fields[boolean]=true.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications-applicationid
      path: /applications/{applicationId}
      operations:
      - name: getapplication
        method: GET
        description: Zylo Get an application
        inputParameters:
        - name: applicationId
          in: path
          type: string
          required: true
          description: The unique identifier of the application.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: updateapplication
        method: PUT
        description: Zylo Update an application
        inputParameters:
        - name: applicationId
          in: path
          type: string
          required: true
          description: The unique identifier of the application.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: subscriptions-exportjobs
      path: /subscriptions/-/exportJobs
      operations:
      - name: createexportjob
        method: POST
        description: Zylo Create an export job
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: subscriptions-exportjobs-exportjobid
      path: /subscriptions/-/exportJobs/{exportJobId}
      operations:
      - name: getexportjob
        method: GET
        description: Zylo Get an export job
        inputParameters:
        - name: exportJobId
          in: path
          type: string
          required: true
          description: The unique identifier of the export job.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: subscriptions-subscriptionid-importjob
      path: /subscriptions/{subscriptionId}/importJob
      operations:
      - name: listimportjobs
        method: GET
        description: Zylo List import jobs
        inputParameters:
        - name: subscriptionId
          in: path
          type: string
          required: true
          description: The unique identifier of the subscription.
        - name: pageSize
          in: query
          type: integer
          description: The maximum number of results to return per page.
        - name: pageToken
          in: query
          type: string
          description: A token returned from a previous list request to retrieve the next page of results.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: createimportjob
        method: POST
        description: Zylo Create an import job
        inputParameters:
        - name: subscriptionId
          in: path
          type: string
          required: true
          description: The unique identifier of the subscription.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: subscriptions-subscriptionid-importjob-importjob
      path: /subscriptions/{subscriptionId}/importJob/{importJobId}
      operations:
      - name: getimportjob
        method: GET
        description: Zylo Get an import job
        inputParameters:
        - name: subscriptionId
          in: path
          type: string
          required: true
          description: The unique identifier of the subscription.
        - name: importJobId
          in: path
          type: string
          required: true
          description: The unique identifier of the import job.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: zylo-rest
    description: REST adapter for Zylo Enterprise API.
    resources:
    - path: /subscriptions
      name: listsubscriptions
      operations:
      - method: GET
        name: listsubscriptions
        description: Zylo List subscriptions
        call: zylo.listsubscriptions
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/{subscriptionId}
      name: getsubscription
      operations:
      - method: GET
        name: getsubscription
        description: Zylo Get a subscription
        call: zylo.getsubscription
        with:
          subscriptionId: rest.subscriptionId
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications
      name: listapplications
      operations:
      - method: GET
        name: listapplications
        description: Zylo List applications
        call: zylo.listapplications
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{applicationId}
      name: getapplication
      operations:
      - method: GET
        name: getapplication
        description: Zylo Get an application
        call: zylo.getapplication
        with:
          applicationId: rest.applicationId
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{applicationId}
      name: updateapplication
      operations:
      - method: PUT
        name: updateapplication
        description: Zylo Update an application
        call: zylo.updateapplication
        with:
          applicationId: rest.applicationId
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/-/exportJobs
      name: createexportjob
      operations:
      - method: POST
        name: createexportjob
        description: Zylo Create an export job
        call: zylo.createexportjob
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/-/exportJobs/{exportJobId}
      name: getexportjob
      operations:
      - method: GET
        name: getexportjob
        description: Zylo Get an export job
        call: zylo.getexportjob
        with:
          exportJobId: rest.exportJobId
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/{subscriptionId}/importJob
      name: listimportjobs
      operations:
      - method: GET
        name: listimportjobs
        description: Zylo List import jobs
        call: zylo.listimportjobs
        with:
          subscriptionId: rest.subscriptionId
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/{subscriptionId}/importJob
      name: createimportjob
      operations:
      - method: POST
        name: createimportjob
        description: Zylo Create an import job
        call: zylo.createimportjob
        with:
          subscriptionId: rest.subscriptionId
        outputParameters:
        - type: object
          mapping: $.
    - path: /subscriptions/{subscriptionId}/importJob/{importJobId}
      name: getimportjob
      operations:
      - method: GET
        name: getimportjob
        description: Zylo Get an import job
        call: zylo.getimportjob
        with:
          subscriptionId: rest.subscriptionId
          importJobId: rest.importJobId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: zylo-mcp
    transport: http
    description: MCP adapter for Zylo Enterprise API for AI agent use.
    tools:
    - name: listsubscriptions
      description: Zylo List subscriptions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.listsubscriptions
      with:
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      inputParameters:
      - name: pageSize
        type: integer
        description: The maximum number of results to return per page.
      - name: pageToken
        type: string
        description: A token returned from a previous list request to retrieve the next page of results.
      outputParameters:
      - type: object
        mapping: $.
    - name: getsubscription
      description: Zylo Get a subscription
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.getsubscription
      with:
        subscriptionId: tools.subscriptionId
      inputParameters:
      - name: subscriptionId
        type: string
        description: The unique identifier of the subscription.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: listapplications
      description: Zylo List applications
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.listapplications
      with:
        pageSize: tools.pageSize
        pageToken: tools.pageToken
        custom_fields: tools.custom_fields
      inputParameters:
      - name: pageSize
        type: integer
        description: The maximum number of results to return per page.
      - name: pageToken
        type: string
        description: A token returned from a previous list request to retrieve the next page of results.
      - name: custom_fields
        type: object
        description: Filter applications by custom field values. Uses bracket notation such as custom_fields[boolean]=true.
      outputParameters:
      - type: object
        mapping: $.
    - name: getapplication
      description: Zylo Get an application
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.getapplication
      with:
        applicationId: tools.applicationId
      inputParameters:
      - name: applicationId
        type: string
        description: The unique identifier of the application.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: updateapplication
      description: Zylo Update an application
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: zylo.updateapplication
      with:
        applicationId: tools.applicationId
      inputParameters:
      - name: applicationId
        type: string
        description: The unique identifier of the application.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: createexportjob
      description: Zylo Create an export job
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: zylo.createexportjob
      outputParameters:
      - type: object
        mapping: $.
    - name: getexportjob
      description: Zylo Get an export job
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.getexportjob
      with:
        exportJobId: tools.exportJobId
      inputParameters:
      - name: exportJobId
        type: string
        description: The unique identifier of the export job.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: listimportjobs
      description: Zylo List import jobs
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.listimportjobs
      with:
        subscriptionId: tools.subscriptionId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      inputParameters:
      - name: subscriptionId
        type: string
        description: The unique identifier of the subscription.
        required: true
      - name: pageSize
        type: integer
        description: The maximum number of results to return per page.
      - name: pageToken
        type: string
        description: A token returned from a previous list request to retrieve the next page of results.
      outputParameters:
      - type: object
        mapping: $.
    - name: createimportjob
      description: Zylo Create an import job
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: zylo.createimportjob
      with:
        subscriptionId: tools.subscriptionId
      inputParameters:
      - name: subscriptionId
        type: string
        description: The unique identifier of the subscription.
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getimportjob
      description: Zylo Get an import job
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: zylo.getimportjob
      with:
        subscriptionId: tools.subscriptionId
        importJobId: tools.importJobId
      inputParameters:
      - name: subscriptionId
        type: string
        description: The unique identifier of the subscription.
        required: true
      - name: importJobId
        type: string
        description: The unique identifier of the import job.
        required: true
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    ZYLO_TOKEN: ZYLO_TOKEN