Suger · Capability

Suger API — Billing

Suger API — Billing. 15 operations. Lead operation: List Addons. Self-contained Naftiko capability covering one Suger business surface.

Run with Naftiko SugerBilling

What You Can Do

GET
Listaddons — List Addons
/v1/org/{orgid}/addon
POST
Createaddon — Create Addon
/v1/org/{orgid}/addon
DELETE
Deleteaddon — Delete Addon
/v1/org/{orgid}/addon/{addonid}
GET
Getaddon — Get Addon
/v1/org/{orgid}/addon/{addonid}
PATCH
Updateaddon — Update Addon
/v1/org/{orgid}/addon/{addonid}
GET
Listrefundofpaymenttransaction — List Refunds.
/v1/org/{orgid}/buyer/{buyerid}/paymenttransaction/{paymenttransactionid}/refund
POST
Createrefund — Create Refund.
/v1/org/{orgid}/buyer/{buyerid}/paymenttransaction/{paymenttransactionid}/refund
GET
Listinvoices — List Invoices
/v1/org/{orgid}/invoice
GET
Getinvoice — Get Invoice
/v1/org/{orgid}/invoice/{invoiceid}
PATCH
Updateinvoiceinfo — Update Invoice Info
/v1/org/{orgid}/invoice/{invoiceid}/info
PATCH
Issueinvoice — Issue Invoice
/v1/org/{orgid}/invoice/{invoiceid}/issue
PATCH
Payinvoice — Pay Invoice
/v1/org/{orgid}/invoice/{invoiceid}/pay
GET
Previewinvoiceemail — Preview Invoice Email
/v1/org/{orgid}/invoice/{invoiceid}/preview
PATCH
Voidinvoice — Void Invoice
/v1/org/{orgid}/invoice/{invoiceid}/void
GET
Listpaymenttransactions — List Payment Transactions
/v1/org/{orgid}/paymenttransaction

MCP Tools

list-addons

List Addons

read-only idempotent
create-addon

Create Addon

delete-addon

Delete Addon

idempotent
get-addon

Get Addon

read-only idempotent
update-addon

Update Addon

idempotent
list-refunds

List Refunds.

read-only idempotent
create-refund

Create Refund.

list-invoices

List Invoices

read-only idempotent
get-invoice

Get Invoice

read-only idempotent
update-invoice-info

Update Invoice Info

idempotent
issue-invoice

Issue Invoice

idempotent
pay-invoice

Pay Invoice

idempotent
preview-invoice-email

Preview Invoice Email

read-only idempotent
void-invoice

Void Invoice

idempotent
list-payment-transactions

List Payment Transactions

read-only idempotent

Capability Spec

suger-billing.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Suger API — Billing
  description: 'Suger API — Billing. 15 operations. Lead operation: List Addons. Self-contained Naftiko capability covering
    one Suger business surface.'
  tags:
  - Suger
  - Billing
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SUGER_API_KEY: SUGER_API_KEY
capability:
  consumes:
  - type: http
    namespace: suger-billing
    baseUri: https://api.suger.cloud
    description: Suger API — Billing business capability. Self-contained, no shared references.
    resources:
    - name: org-orgId-addon
      path: /org/{orgId}/addon
      operations:
      - name: listaddons
        method: GET
        description: List Addons
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: limit
          in: query
          type: integer
          description: List pagination size, default 1000, max value is 1000
        - name: offset
          in: query
          type: integer
          description: List pagination offset, default 0
      - name: createaddon
        method: POST
        description: Create Addon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-addon-addonId
      path: /org/{orgId}/addon/{addonId}
      operations:
      - name: deleteaddon
        method: DELETE
        description: Delete Addon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: addonId
          in: path
          type: string
          description: Addon ID
          required: true
      - name: getaddon
        method: GET
        description: Get Addon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: addonId
          in: path
          type: string
          description: Addon ID
          required: true
      - name: updateaddon
        method: PATCH
        description: Update Addon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: addonId
          in: path
          type: string
          description: Addon ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-buyer-buyerId-paymentTransaction-paymentTransactionId-refund
      path: /org/{orgId}/buyer/{buyerId}/paymentTransaction/{paymentTransactionId}/refund
      operations:
      - name: listrefundofpaymenttransaction
        method: GET
        description: List Refunds.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: buyerId
          in: path
          type: string
          description: Buyer ID
          required: true
        - name: paymentTransactionId
          in: path
          type: string
          description: Payment transaction ID
          required: true
      - name: createrefund
        method: POST
        description: Create Refund.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: buyerId
          in: path
          type: string
          description: Buyer ID
          required: true
        - name: paymentTransactionId
          in: path
          type: string
          description: Payment transaction ID
          required: true
        - name: amount
          in: query
          type: number
          description: Refund amount
          required: true
    - name: org-orgId-invoice
      path: /org/{orgId}/invoice
      operations:
      - name: listinvoices
        method: GET
        description: List Invoices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: entitlementId
          in: query
          type: string
          description: Optional, filter by the entitlement ID
        - name: buyerId
          in: query
          type: string
          description: Optional, filter by the given buyer ID
        - name: status
          in: query
          type: string
          description: Optional, filter by invoice status as filter, if not provided, all status invoices are returned
        - name: limit
          in: query
          type: integer
          description: List pagination size, default 1000, max value is 1000
        - name: offset
          in: query
          type: integer
          description: List pagination offset, default 0
    - name: org-orgId-invoice-invoiceId
      path: /org/{orgId}/invoice/{invoiceId}
      operations:
      - name: getinvoice
        method: GET
        description: Get Invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
    - name: org-orgId-invoice-invoiceId-info
      path: /org/{orgId}/invoice/{invoiceId}/info
      operations:
      - name: updateinvoiceinfo
        method: PATCH
        description: Update Invoice Info
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: org-orgId-invoice-invoiceId-issue
      path: /org/{orgId}/invoice/{invoiceId}/issue
      operations:
      - name: issueinvoice
        method: PATCH
        description: Issue Invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: org-orgId-invoice-invoiceId-pay
      path: /org/{orgId}/invoice/{invoiceId}/pay
      operations:
      - name: payinvoice
        method: PATCH
        description: Pay Invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
    - name: org-orgId-invoice-invoiceId-preview
      path: /org/{orgId}/invoice/{invoiceId}/preview
      operations:
      - name: previewinvoiceemail
        method: GET
        description: Preview Invoice Email
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
    - name: org-orgId-invoice-invoiceId-void
      path: /org/{orgId}/invoice/{invoiceId}/void
      operations:
      - name: voidinvoice
        method: PATCH
        description: Void Invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: invoiceId
          in: path
          type: string
          description: Invoice ID
          required: true
    - name: org-orgId-paymentTransaction
      path: /org/{orgId}/paymentTransaction
      operations:
      - name: listpaymenttransactions
        method: GET
        description: List Payment Transactions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: orgId
          in: path
          type: string
          description: Organization ID
          required: true
        - name: buyerId
          in: query
          type: string
          description: Optional, filter by the given buyer ID
        - name: entitlementId
          in: query
          type: string
          description: Optional, filter by the given entitlement ID
        - name: invoiceId
          in: query
          type: string
          description: Optional, filter by the given invoice ID
        - name: status
          in: query
          type: string
          description: Optional, filter by status
        - name: type
          in: query
          type: string
          description: Optional, filter by transaction type
        - name: limit
          in: query
          type: integer
          description: List pagination size, default 1000, max value is 1000
        - name: offset
          in: query
          type: integer
          description: List pagination offset, default 0
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.SUGER_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: suger-billing-rest
    port: 8080
    description: REST adapter for Suger API — Billing. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/org/{orgid}/addon
      name: org-orgid-addon
      description: REST surface for org-orgId-addon.
      operations:
      - method: GET
        name: listaddons
        description: List Addons
        call: suger-billing.listaddons
        with:
          orgId: rest.orgId
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createaddon
        description: Create Addon
        call: suger-billing.createaddon
        with:
          orgId: rest.orgId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/addon/{addonid}
      name: org-orgid-addon-addonid
      description: REST surface for org-orgId-addon-addonId.
      operations:
      - method: DELETE
        name: deleteaddon
        description: Delete Addon
        call: suger-billing.deleteaddon
        with:
          orgId: rest.orgId
          addonId: rest.addonId
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getaddon
        description: Get Addon
        call: suger-billing.getaddon
        with:
          orgId: rest.orgId
          addonId: rest.addonId
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updateaddon
        description: Update Addon
        call: suger-billing.updateaddon
        with:
          orgId: rest.orgId
          addonId: rest.addonId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/buyer/{buyerid}/paymenttransaction/{paymenttransactionid}/refund
      name: org-orgid-buyer-buyerid-paymenttransaction-paymenttransactionid-refund
      description: REST surface for org-orgId-buyer-buyerId-paymentTransaction-paymentTransactionId-refund.
      operations:
      - method: GET
        name: listrefundofpaymenttransaction
        description: List Refunds.
        call: suger-billing.listrefundofpaymenttransaction
        with:
          orgId: rest.orgId
          buyerId: rest.buyerId
          paymentTransactionId: rest.paymentTransactionId
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createrefund
        description: Create Refund.
        call: suger-billing.createrefund
        with:
          orgId: rest.orgId
          buyerId: rest.buyerId
          paymentTransactionId: rest.paymentTransactionId
          amount: rest.amount
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice
      name: org-orgid-invoice
      description: REST surface for org-orgId-invoice.
      operations:
      - method: GET
        name: listinvoices
        description: List Invoices
        call: suger-billing.listinvoices
        with:
          orgId: rest.orgId
          entitlementId: rest.entitlementId
          buyerId: rest.buyerId
          status: rest.status
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}
      name: org-orgid-invoice-invoiceid
      description: REST surface for org-orgId-invoice-invoiceId.
      operations:
      - method: GET
        name: getinvoice
        description: Get Invoice
        call: suger-billing.getinvoice
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}/info
      name: org-orgid-invoice-invoiceid-info
      description: REST surface for org-orgId-invoice-invoiceId-info.
      operations:
      - method: PATCH
        name: updateinvoiceinfo
        description: Update Invoice Info
        call: suger-billing.updateinvoiceinfo
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}/issue
      name: org-orgid-invoice-invoiceid-issue
      description: REST surface for org-orgId-invoice-invoiceId-issue.
      operations:
      - method: PATCH
        name: issueinvoice
        description: Issue Invoice
        call: suger-billing.issueinvoice
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}/pay
      name: org-orgid-invoice-invoiceid-pay
      description: REST surface for org-orgId-invoice-invoiceId-pay.
      operations:
      - method: PATCH
        name: payinvoice
        description: Pay Invoice
        call: suger-billing.payinvoice
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}/preview
      name: org-orgid-invoice-invoiceid-preview
      description: REST surface for org-orgId-invoice-invoiceId-preview.
      operations:
      - method: GET
        name: previewinvoiceemail
        description: Preview Invoice Email
        call: suger-billing.previewinvoiceemail
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/invoice/{invoiceid}/void
      name: org-orgid-invoice-invoiceid-void
      description: REST surface for org-orgId-invoice-invoiceId-void.
      operations:
      - method: PATCH
        name: voidinvoice
        description: Void Invoice
        call: suger-billing.voidinvoice
        with:
          orgId: rest.orgId
          invoiceId: rest.invoiceId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/org/{orgid}/paymenttransaction
      name: org-orgid-paymenttransaction
      description: REST surface for org-orgId-paymentTransaction.
      operations:
      - method: GET
        name: listpaymenttransactions
        description: List Payment Transactions
        call: suger-billing.listpaymenttransactions
        with:
          orgId: rest.orgId
          buyerId: rest.buyerId
          entitlementId: rest.entitlementId
          invoiceId: rest.invoiceId
          status: rest.status
          type: rest.type
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: suger-billing-mcp
    port: 9090
    transport: http
    description: MCP adapter for Suger API — Billing. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-addons
      description: List Addons
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.listaddons
      with:
        orgId: tools.orgId
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: create-addon
      description: Create Addon
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-billing.createaddon
      with:
        orgId: tools.orgId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-addon
      description: Delete Addon
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: suger-billing.deleteaddon
      with:
        orgId: tools.orgId
        addonId: tools.addonId
      outputParameters:
      - type: object
        mapping: $.
    - name: get-addon
      description: Get Addon
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.getaddon
      with:
        orgId: tools.orgId
        addonId: tools.addonId
      outputParameters:
      - type: object
        mapping: $.
    - name: update-addon
      description: Update Addon
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-billing.updateaddon
      with:
        orgId: tools.orgId
        addonId: tools.addonId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-refunds
      description: List Refunds.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.listrefundofpaymenttransaction
      with:
        orgId: tools.orgId
        buyerId: tools.buyerId
        paymentTransactionId: tools.paymentTransactionId
      outputParameters:
      - type: object
        mapping: $.
    - name: create-refund
      description: Create Refund.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: suger-billing.createrefund
      with:
        orgId: tools.orgId
        buyerId: tools.buyerId
        paymentTransactionId: tools.paymentTransactionId
        amount: tools.amount
      outputParameters:
      - type: object
        mapping: $.
    - name: list-invoices
      description: List Invoices
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.listinvoices
      with:
        orgId: tools.orgId
        entitlementId: tools.entitlementId
        buyerId: tools.buyerId
        status: tools.status
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: get-invoice
      description: Get Invoice
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.getinvoice
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
      outputParameters:
      - type: object
        mapping: $.
    - name: update-invoice-info
      description: Update Invoice Info
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-billing.updateinvoiceinfo
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: issue-invoice
      description: Issue Invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-billing.issueinvoice
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: pay-invoice
      description: Pay Invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-billing.payinvoice
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
      outputParameters:
      - type: object
        mapping: $.
    - name: preview-invoice-email
      description: Preview Invoice Email
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.previewinvoiceemail
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
      outputParameters:
      - type: object
        mapping: $.
    - name: void-invoice
      description: Void Invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: suger-billing.voidinvoice
      with:
        orgId: tools.orgId
        invoiceId: tools.invoiceId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-payment-transactions
      description: List Payment Transactions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: suger-billing.listpaymenttransactions
      with:
        orgId: tools.orgId
        buyerId: tools.buyerId
        entitlementId: tools.entitlementId
        invoiceId: tools.invoiceId
        status: tools.status
        type: tools.type
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.