Schematic · Capability

Schematic API — billing

Schematic API — billing. 20 operations. Lead operation: List coupons. Self-contained Naftiko capability covering one Schematic business surface.

Run with Naftiko Schematicbilling

What You Can Do

GET
Listcoupons — List coupons
/v1/billing/coupons
POST
Upsertbillingcoupon — Upsert billing coupon
/v1/billing/coupons
POST
Upsertbillingcustomer — Upsert billing customer
/v1/billing/customer/upsert
GET
Listcustomerswithsubscriptions — List customers with subscriptions
/v1/billing/customers
GET
Countcustomers — Count customers
/v1/billing/customers/count
GET
Listinvoices — List invoices
/v1/billing/invoices
POST
Upsertinvoice — Upsert invoice
/v1/billing/invoices
GET
Listmeters — List meters
/v1/billing/meter
POST
Upsertbillingmeter — Upsert billing meter
/v1/billing/meter/upsert
GET
Listpaymentmethods — List payment methods
/v1/billing/payment-methods
POST
Upsertpaymentmethod — Upsert payment method
/v1/billing/payment-methods
GET
Listbillingprices — List billing prices
/v1/billing/price
POST
Upsertbillingprice — Upsert billing price
/v1/billing/price/upsert
GET
Listbillingproductprices — List billing product prices
/v1/billing/product/prices
DELETE
Deleteproductprice — Delete product price
/v1/billing/product/prices/{billing-id}
POST
Upsertbillingproduct — Upsert billing product
/v1/billing/product/upsert
DELETE
Deletebillingproduct — Delete billing product
/v1/billing/product/{billing-id}
GET
Listbillingproducts — List billing products
/v1/billing/products
GET
Countbillingproducts — Count billing products
/v1/billing/products/count
POST
Upsertbillingsubscription — Upsert billing subscription
/v1/billing/subscription/upsert

MCP Tools

list-coupons

List coupons

read-only idempotent
upsert-billing-coupon

Upsert billing coupon

upsert-billing-customer

Upsert billing customer

list-customers-subscriptions

List customers with subscriptions

read-only idempotent
count-customers

Count customers

read-only idempotent
list-invoices

List invoices

read-only idempotent
upsert-invoice

Upsert invoice

list-meters

List meters

read-only idempotent
upsert-billing-meter

Upsert billing meter

list-payment-methods

List payment methods

read-only idempotent
upsert-payment-method

Upsert payment method

list-billing-prices

List billing prices

read-only idempotent
upsert-billing-price

Upsert billing price

list-billing-product-prices

List billing product prices

read-only idempotent
delete-product-price

Delete product price

idempotent
upsert-billing-product

Upsert billing product

delete-billing-product

Delete billing product

idempotent
list-billing-products

List billing products

read-only idempotent
count-billing-products

Count billing products

read-only idempotent
upsert-billing-subscription

Upsert billing subscription

Capability Spec

schematic-billing.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Schematic API — billing
  description: 'Schematic API — billing. 20 operations. Lead operation: List coupons. Self-contained Naftiko capability covering
    one Schematic business surface.'
  tags:
  - Schematic
  - billing
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SCHEMATIC_API_KEY: SCHEMATIC_API_KEY
capability:
  consumes:
  - type: http
    namespace: schematic-billing
    baseUri: https://api.schematichq.com
    description: Schematic API — billing business capability. Self-contained, no shared references.
    resources:
    - name: billing-coupons
      path: /billing/coupons
      operations:
      - name: listcoupons
        method: GET
        description: List coupons
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: is_active
          in: query
          type: boolean
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: upsertbillingcoupon
        method: POST
        description: Upsert billing coupon
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-customer-upsert
      path: /billing/customer/upsert
      operations:
      - name: upsertbillingcustomer
        method: POST
        description: Upsert billing customer
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-customers
      path: /billing/customers
      operations:
      - name: listcustomerswithsubscriptions
        method: GET
        description: List customers with subscriptions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_ids
          in: query
          type: array
        - name: name
          in: query
          type: string
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-customers-count
      path: /billing/customers/count
      operations:
      - name: countcustomers
        method: GET
        description: Count customers
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_ids
          in: query
          type: array
        - name: name
          in: query
          type: string
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-invoices
      path: /billing/invoices
      operations:
      - name: listinvoices
        method: GET
        description: List invoices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
        - name: customer_external_id
          in: query
          type: string
          required: true
        - name: subscription_external_id
          in: query
          type: string
          required: true
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: upsertinvoice
        method: POST
        description: Upsert invoice
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-meter
      path: /billing/meter
      operations:
      - name: listmeters
        method: GET
        description: List meters
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: display_name
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-meter-upsert
      path: /billing/meter/upsert
      operations:
      - name: upsertbillingmeter
        method: POST
        description: Upsert billing meter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-payment-methods
      path: /billing/payment-methods
      operations:
      - name: listpaymentmethods
        method: GET
        description: List payment methods
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
        - name: customer_external_id
          in: query
          type: string
          required: true
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: upsertpaymentmethod
        method: POST
        description: Upsert payment method
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-price
      path: /billing/price
      operations:
      - name: listbillingprices
        method: GET
        description: List billing prices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: currency
          in: query
          type: string
          description: Filter for prices in a specific currency (e.g. usd, eur)
        - name: for_initial_plan
          in: query
          type: boolean
          description: Filter for prices valid for initial plans (free prices only)
        - name: for_trial_expiry_plan
          in: query
          type: boolean
          description: Filter for prices valid for trial expiry plans (free prices only)
        - name: ids
          in: query
          type: array
        - name: interval
          in: query
          type: string
        - name: is_active
          in: query
          type: boolean
          description: Filter for active prices on active products (defaults to true if not specified)
        - name: price
          in: query
          type: integer
        - name: product_id
          in: query
          type: string
        - name: product_ids
          in: query
          type: array
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: tiers_mode
          in: query
          type: string
        - name: usage_type
          in: query
          type: string
        - name: with_meter
          in: query
          type: boolean
          description: Filter for prices with a meter
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-price-upsert
      path: /billing/price/upsert
      operations:
      - name: upsertbillingprice
        method: POST
        description: Upsert billing price
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-product-prices
      path: /billing/product/prices
      operations:
      - name: listbillingproductprices
        method: GET
        description: List billing product prices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: currency
          in: query
          type: string
          description: Filter for prices in a specific currency (e.g. usd, eur)
        - name: for_initial_plan
          in: query
          type: boolean
          description: Filter for prices valid for initial plans (free prices only)
        - name: for_trial_expiry_plan
          in: query
          type: boolean
          description: Filter for prices valid for trial expiry plans (free prices only)
        - name: ids
          in: query
          type: array
        - name: interval
          in: query
          type: string
        - name: is_active
          in: query
          type: boolean
          description: Filter for active prices on active products (defaults to true if not specified)
        - name: price
          in: query
          type: integer
        - name: product_id
          in: query
          type: string
        - name: product_ids
          in: query
          type: array
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: tiers_mode
          in: query
          type: string
        - name: usage_type
          in: query
          type: string
        - name: with_meter
          in: query
          type: boolean
          description: Filter for prices with a meter
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-product-prices-billing_id
      path: /billing/product/prices/{billing_id}
      operations:
      - name: deleteproductprice
        method: DELETE
        description: Delete product price
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: billing_id
          in: path
          type: string
          description: billing_id
          required: true
    - name: billing-product-upsert
      path: /billing/product/upsert
      operations:
      - name: upsertbillingproduct
        method: POST
        description: Upsert billing product
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: billing-product-billing_id
      path: /billing/product/{billing_id}
      operations:
      - name: deletebillingproduct
        method: DELETE
        description: Delete billing product
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: billing_id
          in: path
          type: string
          description: billing_id
          required: true
    - name: billing-products
      path: /billing/products
      operations:
      - name: listbillingproducts
        method: GET
        description: List billing products
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ids
          in: query
          type: array
        - name: is_active
          in: query
          type: boolean
          description: Filter products that are active. Defaults to true if not specified
        - name: name
          in: query
          type: string
        - name: price_usage_type
          in: query
          type: string
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: recurring_charges_only
          in: query
          type: boolean
          description: Filter to products that have at least one recurring price
        - name: with_one_time_charges
          in: query
          type: boolean
          description: Filter products that are one time charges
        - name: with_prices_only
          in: query
          type: boolean
          description: Filter products that have prices
        - name: with_zero_price
          in: query
          type: boolean
          description: Filter products that have zero price for free subscription type
        - name: without_linked_to_plan
          in: query
          type: boolean
          description: Filter products that are not linked to any plan
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-products-count
      path: /billing/products/count
      operations:
      - name: countbillingproducts
        method: GET
        description: Count billing products
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ids
          in: query
          type: array
        - name: is_active
          in: query
          type: boolean
          description: Filter products that are active. Defaults to true if not specified
        - name: name
          in: query
          type: string
        - name: price_usage_type
          in: query
          type: string
        - name: provider_type
          in: query
          type: string
        - name: q
          in: query
          type: string
        - name: recurring_charges_only
          in: query
          type: boolean
          description: Filter to products that have at least one recurring price
        - name: with_one_time_charges
          in: query
          type: boolean
          description: Filter products that are one time charges
        - name: with_prices_only
          in: query
          type: boolean
          description: Filter products that have prices
        - name: with_zero_price
          in: query
          type: boolean
          description: Filter products that have zero price for free subscription type
        - name: without_linked_to_plan
          in: query
          type: boolean
          description: Filter products that are not linked to any plan
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: billing-subscription-upsert
      path: /billing/subscription/upsert
      operations:
      - name: upsertbillingsubscription
        method: POST
        description: Upsert billing subscription
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: apikey
      key: X-Schematic-Api-Key
      value: '{{env.SCHEMATIC_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: schematic-billing-rest
    port: 8080
    description: REST adapter for Schematic API — billing. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/billing/coupons
      name: billing-coupons
      description: REST surface for billing-coupons.
      operations:
      - method: GET
        name: listcoupons
        description: List coupons
        call: schematic-billing.listcoupons
        with:
          is_active: rest.is_active
          q: rest.q
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: upsertbillingcoupon
        description: Upsert billing coupon
        call: schematic-billing.upsertbillingcoupon
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/customer/upsert
      name: billing-customer-upsert
      description: REST surface for billing-customer-upsert.
      operations:
      - method: POST
        name: upsertbillingcustomer
        description: Upsert billing customer
        call: schematic-billing.upsertbillingcustomer
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/customers
      name: billing-customers
      description: REST surface for billing-customers.
      operations:
      - method: GET
        name: listcustomerswithsubscriptions
        description: List customers with subscriptions
        call: schematic-billing.listcustomerswithsubscriptions
        with:
          company_ids: rest.company_ids
          name: rest.name
          provider_type: rest.provider_type
          q: rest.q
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/customers/count
      name: billing-customers-count
      description: REST surface for billing-customers-count.
      operations:
      - method: GET
        name: countcustomers
        description: Count customers
        call: schematic-billing.countcustomers
        with:
          company_ids: rest.company_ids
          name: rest.name
          provider_type: rest.provider_type
          q: rest.q
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/invoices
      name: billing-invoices
      description: REST surface for billing-invoices.
      operations:
      - method: GET
        name: listinvoices
        description: List invoices
        call: schematic-billing.listinvoices
        with:
          company_id: rest.company_id
          customer_external_id: rest.customer_external_id
          subscription_external_id: rest.subscription_external_id
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: upsertinvoice
        description: Upsert invoice
        call: schematic-billing.upsertinvoice
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/meter
      name: billing-meter
      description: REST surface for billing-meter.
      operations:
      - method: GET
        name: listmeters
        description: List meters
        call: schematic-billing.listmeters
        with:
          display_name: rest.display_name
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/meter/upsert
      name: billing-meter-upsert
      description: REST surface for billing-meter-upsert.
      operations:
      - method: POST
        name: upsertbillingmeter
        description: Upsert billing meter
        call: schematic-billing.upsertbillingmeter
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/payment-methods
      name: billing-payment-methods
      description: REST surface for billing-payment-methods.
      operations:
      - method: GET
        name: listpaymentmethods
        description: List payment methods
        call: schematic-billing.listpaymentmethods
        with:
          company_id: rest.company_id
          customer_external_id: rest.customer_external_id
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: upsertpaymentmethod
        description: Upsert payment method
        call: schematic-billing.upsertpaymentmethod
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/price
      name: billing-price
      description: REST surface for billing-price.
      operations:
      - method: GET
        name: listbillingprices
        description: List billing prices
        call: schematic-billing.listbillingprices
        with:
          currency: rest.currency
          for_initial_plan: rest.for_initial_plan
          for_trial_expiry_plan: rest.for_trial_expiry_plan
          ids: rest.ids
          interval: rest.interval
          is_active: rest.is_active
          price: rest.price
          product_id: rest.product_id
          product_ids: rest.product_ids
          provider_type: rest.provider_type
          q: rest.q
          tiers_mode: rest.tiers_mode
          usage_type: rest.usage_type
          with_meter: rest.with_meter
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/price/upsert
      name: billing-price-upsert
      description: REST surface for billing-price-upsert.
      operations:
      - method: POST
        name: upsertbillingprice
        description: Upsert billing price
        call: schematic-billing.upsertbillingprice
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/product/prices
      name: billing-product-prices
      description: REST surface for billing-product-prices.
      operations:
      - method: GET
        name: listbillingproductprices
        description: List billing product prices
        call: schematic-billing.listbillingproductprices
        with:
          currency: rest.currency
          for_initial_plan: rest.for_initial_plan
          for_trial_expiry_plan: rest.for_trial_expiry_plan
          ids: rest.ids
          interval: rest.interval
          is_active: rest.is_active
          price: rest.price
          product_id: rest.product_id
          product_ids: rest.product_ids
          provider_type: rest.provider_type
          q: rest.q
          tiers_mode: rest.tiers_mode
          usage_type: rest.usage_type
          with_meter: rest.with_meter
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/product/prices/{billing-id}
      name: billing-product-prices-billing-id
      description: REST surface for billing-product-prices-billing_id.
      operations:
      - method: DELETE
        name: deleteproductprice
        description: Delete product price
        call: schematic-billing.deleteproductprice
        with:
          billing_id: rest.billing_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/product/upsert
      name: billing-product-upsert
      description: REST surface for billing-product-upsert.
      operations:
      - method: POST
        name: upsertbillingproduct
        description: Upsert billing product
        call: schematic-billing.upsertbillingproduct
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/product/{billing-id}
      name: billing-product-billing-id
      description: REST surface for billing-product-billing_id.
      operations:
      - method: DELETE
        name: deletebillingproduct
        description: Delete billing product
        call: schematic-billing.deletebillingproduct
        with:
          billing_id: rest.billing_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/products
      name: billing-products
      description: REST surface for billing-products.
      operations:
      - method: GET
        name: listbillingproducts
        description: List billing products
        call: schematic-billing.listbillingproducts
        with:
          ids: rest.ids
          is_active: rest.is_active
          name: rest.name
          price_usage_type: rest.price_usage_type
          provider_type: rest.provider_type
          q: rest.q
          recurring_charges_only: rest.recurring_charges_only
          with_one_time_charges: rest.with_one_time_charges
          with_prices_only: rest.with_prices_only
          with_zero_price: rest.with_zero_price
          without_linked_to_plan: rest.without_linked_to_plan
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/products/count
      name: billing-products-count
      description: REST surface for billing-products-count.
      operations:
      - method: GET
        name: countbillingproducts
        description: Count billing products
        call: schematic-billing.countbillingproducts
        with:
          ids: rest.ids
          is_active: rest.is_active
          name: rest.name
          price_usage_type: rest.price_usage_type
          provider_type: rest.provider_type
          q: rest.q
          recurring_charges_only: rest.recurring_charges_only
          with_one_time_charges: rest.with_one_time_charges
          with_prices_only: rest.with_prices_only
          with_zero_price: rest.with_zero_price
          without_linked_to_plan: rest.without_linked_to_plan
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/billing/subscription/upsert
      name: billing-subscription-upsert
      description: REST surface for billing-subscription-upsert.
      operations:
      - method: POST
        name: upsertbillingsubscription
        description: Upsert billing subscription
        call: schematic-billing.upsertbillingsubscription
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: schematic-billing-mcp
    port: 9090
    transport: http
    description: MCP adapter for Schematic API — billing. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-coupons
      description: List coupons
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listcoupons
      with:
        is_active: tools.is_active
        q: tools.q
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-billing-coupon
      description: Upsert billing coupon
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-billing.upsertbillingcoupon
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-billing-customer
      description: Upsert billing customer
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-billing.upsertbillingcustomer
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-customers-subscriptions
      description: List customers with subscriptions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listcustomerswithsubscriptions
      with:
        company_ids: tools.company_ids
        name: tools.name
        provider_type: tools.provider_type
        q: tools.q
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: count-customers
      description: Count customers
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.countcustomers
      with:
        company_ids: tools.company_ids
        name: tools.name
        provider_type: tools.provider_type
        q: tools.q
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: list-invoices
      description: List invoices
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listinvoices
      with:
        company_id: tools.company_id
        customer_external_id: tools.customer_external_id
        subscription_external_id: tools.subscription_external_id
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-invoice
      description: Upsert invoice
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-billing.upsertinvoice
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-meters
      description: List meters
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listmeters
      with:
        display_name: tools.display_name
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-billing-meter
      description: Upsert billing meter
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-billing.upsertbillingmeter
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-payment-methods
      description: List payment methods
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listpaymentmethods
      with:
        company_id: tools.company_id
        customer_external_id: tools.customer_external_id
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-payment-method
      description: Upsert payment method
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-billing.upsertpaymentmethod
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-billing-prices
      description: List billing prices
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-billing.listbillingprices
      with:
        currency: tools.currency
        for_initial_plan: tool

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/schematic/refs/heads/main/capabilities/schematic-billing.yaml