Stripe · Capability

Stripe Products API — Products

Stripe Products API — Products. 6 operations. Lead operation: Products. Self-contained Naftiko capability covering one Stripe business surface.

Run with Naftiko StripeProducts

What You Can Do

GET
Getproducts

Returns a list of your products. The products are returned sorted by creation date, with the most recently created products appearing first.

/v1/v1/products
POST
Postproducts

Creates a new product object.

/v1/v1/products
GET
Getproductssearch

Search for products you’ve previously created using Stripe’s Search Query Language.

/v1/v1/products/search
DELETE
Deleteproductsid

Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with type=good is only possible if it has no SKUs associated with it.

/v1/v1/products/{id}
GET
Getproductsid

Retrieves the details of an existing product. Supply the unique product ID from either a product creation request or the product list, and Stripe will return the corresponding product information.

/v1/v1/products/{id}
POST
Postproductsid

Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

/v1/v1/products/{id}

MCP Tools

p-returns-list-your-products-products

Returns a list of your products. The products are returned sorted by creation date, with the most recently created products appearing first.

read-only idempotent
p-creates-new-product-object-p

Creates a new product object.

p-search-products-you-ve-previously-created

Search for products you’ve previously created using Stripe’s Search Query Language.

read-only idempotent
p-delete-product-deleting-product-is

Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with type=good is only possible if it has no SKUs associated with it.

idempotent
p-retrieves-details-existing-product-supply

Retrieves the details of an existing product. Supply the unique product ID from either a product creation request or the product list, and Stripe will return the corresponding product information.

read-only idempotent
p-updates-specific-product-setting-values

Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged.

Capability Spec

products-products.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Stripe Products API — Products
  description: 'Stripe Products API — Products. 6 operations. Lead operation: Products. Self-contained Naftiko capability
    covering one Stripe business surface.'
  tags:
  - Stripe
  - Products
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    STRIPE_API_KEY: STRIPE_API_KEY
capability:
  consumes:
  - type: http
    namespace: products-products
    baseUri: https://api.stripe.com
    description: Stripe Products API — Products business capability. Self-contained, no shared references.
    resources:
    - name: v1-products
      path: /v1/products
      operations:
      - name: getproducts
        method: GET
        description: <p>Returns a list of your products. The products are returned sorted by creation date, with the most
          recently created products appearing first.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: active
          in: query
          type: boolean
          description: Only return products that are active or inactive (e.g., pass `false` to list all inactive products).
        - name: created
          in: query
          type: string
          description: Only return products that were created during the given date interval.
        - name: ending_before
          in: query
          type: string
          description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 ob
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: ids
          in: query
          type: array
          description: Only return products with the given IDs. Cannot be used with [starting_after](https://stripe.com/docs/api#list_products-starting_after)
            or [ending_before](https
        - name: limit
          in: query
          type: integer
          description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default
            is 10.
        - name: shippable
          in: query
          type: boolean
          description: Only return products that can be shipped (i.e., physical, not digital products).
        - name: starting_after
          in: query
          type: string
          description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list.
            For instance, if you make a list request and receive 100 o
        - name: url
          in: query
          type: string
          description: Only return products with the given url.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: postproducts
        method: POST
        description: <p>Creates a new product object.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: v1-products-search
      path: /v1/products/search
      operations:
      - name: getproductssearch
        method: GET
        description: <p>Search for products you’ve previously created using Stripe’s <a href="/docs/search#search-query-language">Search
          Query Language</a>.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: limit
          in: query
          type: integer
          description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default
            is 10.
        - name: page
          in: query
          type: string
          description: A cursor for pagination across multiple pages of results. Don't include this parameter on the first
            call. Use the next_page value returned in a previous respons
        - name: query
          in: query
          type: string
          description: The search query string. See [search query language](https://stripe.com/docs/search#search-query-language)
            and the list of supported [query fields for products]
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-products-id
      path: /v1/products/{id}
      operations:
      - name: deleteproductsid
        method: DELETE
        description: <p>Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally,
          deleting a product with <code>type=good</code> is only possible if it has no SKUs associated with it.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: getproductsid
        method: GET
        description: <p>Retrieves the details of an existing product. Supply the unique product ID from either a product creation
          request or the product list, and Stripe will return the corresponding product information.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: expand
          in: query
          type: array
          description: Specifies which fields in the response should be expanded.
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: postproductsid
        method: POST
        description: <p>Updates the specific product by setting the values of the parameters passed. Any parameters not provided
          will be left unchanged.</p>
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    authentication:
      type: bearer
      token: '{{env.STRIPE_API_KEY}}'
  exposes:
  - type: rest
    namespace: products-products-rest
    port: 8080
    description: REST adapter for Stripe Products API — Products. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/v1/products
      name: v1-products
      description: REST surface for v1-products.
      operations:
      - method: GET
        name: getproducts
        description: <p>Returns a list of your products. The products are returned sorted by creation date, with the most
          recently created products appearing first.</p>
        call: products-products.getproducts
        with:
          active: rest.active
          created: rest.created
          ending_before: rest.ending_before
          expand: rest.expand
          ids: rest.ids
          limit: rest.limit
          shippable: rest.shippable
          starting_after: rest.starting_after
          url: rest.url
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: postproducts
        description: <p>Creates a new product object.</p>
        call: products-products.postproducts
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/products/search
      name: v1-products-search
      description: REST surface for v1-products-search.
      operations:
      - method: GET
        name: getproductssearch
        description: <p>Search for products you’ve previously created using Stripe’s <a href="/docs/search#search-query-language">Search
          Query Language</a>.
        call: products-products.getproductssearch
        with:
          expand: rest.expand
          limit: rest.limit
          page: rest.page
          query: rest.query
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/products/{id}
      name: v1-products-id
      description: REST surface for v1-products-id.
      operations:
      - method: DELETE
        name: deleteproductsid
        description: <p>Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally,
          deleting a product with <code>type=good</code> is only possible if it has no SKUs associated with it.</p>
        call: products-products.deleteproductsid
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: getproductsid
        description: <p>Retrieves the details of an existing product. Supply the unique product ID from either a product creation
          request or the product list, and Stripe will return the corresponding product information.</p>
        call: products-products.getproductsid
        with:
          expand: rest.expand
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: postproductsid
        description: <p>Updates the specific product by setting the values of the parameters passed. Any parameters not provided
          will be left unchanged.</p>
        call: products-products.postproductsid
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: products-products-mcp
    port: 9090
    transport: http
    description: MCP adapter for Stripe Products API — Products. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: p-returns-list-your-products-products
      description: <p>Returns a list of your products. The products are returned sorted by creation date, with the most recently
        created products appearing first.</p>
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: products-products.getproducts
      with:
        active: tools.active
        created: tools.created
        ending_before: tools.ending_before
        expand: tools.expand
        ids: tools.ids
        limit: tools.limit
        shippable: tools.shippable
        starting_after: tools.starting_after
        url: tools.url
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-creates-new-product-object-p
      description: <p>Creates a new product object.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: products-products.postproducts
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-search-products-you-ve-previously-created
      description: <p>Search for products you’ve previously created using Stripe’s <a href="/docs/search#search-query-language">Search
        Query Language</a>.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: products-products.getproductssearch
      with:
        expand: tools.expand
        limit: tools.limit
        page: tools.page
        query: tools.query
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-delete-product-deleting-product-is
      description: <p>Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally,
        deleting a product with <code>type=good</code> is only possible if it has no SKUs associated with it.</p>
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: products-products.deleteproductsid
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-retrieves-details-existing-product-supply
      description: <p>Retrieves the details of an existing product. Supply the unique product ID from either a product creation
        request or the product list, and Stripe will return the corresponding product information.</p>
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: products-products.getproductsid
      with:
        expand: tools.expand
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: p-updates-specific-product-setting-values
      description: <p>Updates the specific product by setting the values of the parameters passed. Any parameters not provided
        will be left unchanged.</p>
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: products-products.postproductsid
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.