# GENERATED — do not edit. Edit openapi.yaml or tools-policy.yaml, then: # k8s-platform/tools/generate-mcp-tools.py # # Produced by `deck file openapi2mcp`, then post-processed to add the ACLs, # the MCP behavioural annotations, the response schemas, the real upstream # host and the JSON-only bodies that Kong's generator does not emit. Each of # those is a documented gap — see k8s-platform/MCP-TOOL-GENERATION.md. apiVersion: configuration.konghq.com/v1 kind: KongPlugin metadata: name: ${NAME}-catalog-mcp-ai-mcp-proxy namespace: ${NAMESPACE} plugin: ai-mcp-proxy config: mode: conversion-listener include_consumer_groups: true tools: - annotations: title: List all products read_only_hint: true idempotent_hint: true destructive_hint: false open_world_hint: false description: Retrieve a paginated list of all products in the catalog with their details. method: GET name: list-products parameters: - description: A page number within the paginated result set. in: query name: page required: false schema: type: integer - description: Number of results to return per page. in: query name: page_size required: false schema: type: integer path: /catalog/v1/products/ acl: allow: - admin - read_only - product_manager - customer - support scheme: http host: ${REST_HOSTNAME} responses: '200': content: application/json: schema: type: object properties: count: type: integer example: 123 next: type: - string - 'null' format: uri example: http://api.example.org/accounts/?page=4 previous: type: - string - 'null' format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: type: object description: Product catalog information properties: productcode: type: string maxLength: 15 productname: type: string maxLength: 70 productscale: type: string maxLength: 10 productvendor: type: string maxLength: 50 productdescription: type: string quantityinstock: type: integer maximum: 32767 minimum: -32768 buyprice: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ msrp: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ productline: type: string required: - buyprice - msrp - productcode - productdescription - productline - productname - productscale - productvendor - quantityinstock - annotations: title: Get a specific product read_only_hint: true idempotent_hint: true destructive_hint: false open_world_hint: false description: Retrieve detailed information about a specific product by its code. method: GET name: get-product parameters: - description: A unique value identifying this product. in: path name: productcode required: true schema: type: string path: /catalog/v1/products/{productcode}/ acl: allow: - admin - read_only - product_manager - customer - support scheme: http host: ${REST_HOSTNAME} responses: '200': content: application/json: schema: type: object description: Product catalog information properties: productcode: type: string maxLength: 15 productname: type: string maxLength: 70 productscale: type: string maxLength: 10 productvendor: type: string maxLength: 50 productdescription: type: string quantityinstock: type: integer maximum: 32767 minimum: -32768 buyprice: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ msrp: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ productline: type: string required: - buyprice - msrp - productcode - productdescription - productline - productname - productscale - productvendor - quantityinstock - annotations: title: Create a new product read_only_hint: false idempotent_hint: false destructive_hint: false open_world_hint: false description: Add a new product to the catalog with all required information. method: POST name: create-product path: /catalog/v1/products/ request_body: content: application/json: schema: properties: buyprice: type: string msrp: type: string productcode: type: string productdescription: type: string productline: type: string productname: type: string productscale: type: string productvendor: type: string quantityinstock: type: integer required: - buyprice - msrp - productcode - productdescription - productline - productname - productscale - productvendor - quantityinstock type: object required: true acl: allow: - admin - product_manager scheme: http host: ${REST_HOSTNAME} responses: '201': content: application/json: schema: type: object description: Product catalog information properties: productcode: type: string maxLength: 15 productname: type: string maxLength: 70 productscale: type: string maxLength: 10 productvendor: type: string maxLength: 50 productdescription: type: string quantityinstock: type: integer maximum: 32767 minimum: -32768 buyprice: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ msrp: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ productline: type: string required: - buyprice - msrp - productcode - productdescription - productline - productname - productscale - productvendor - quantityinstock - annotations: title: Partially update a product read_only_hint: false idempotent_hint: false destructive_hint: false open_world_hint: false description: Update specific fields of an existing product. Send X-Stock-Change-Reason as delivery: when a quantityinstock change is a fulfilled reorder rather than a correction. method: PATCH name: patch-product parameters: - description: A unique value identifying this product. in: path name: productcode required: true schema: type: string - description: 'Only honoured in this one shape: delivery:. Anything else is recorded as a manual adjustment.' in: header name: X-Stock-Change-Reason required: false schema: type: string path: /catalog/v1/products/{productcode}/ request_body: content: application/json: schema: properties: buyprice: type: string msrp: type: string productcode: type: string productdescription: type: string productline: type: string productname: type: string productscale: type: string productvendor: type: string quantityinstock: type: integer type: object acl: allow: - admin - product_manager - restocker scheme: http host: ${REST_HOSTNAME} responses: '200': content: application/json: schema: type: object description: Product catalog information properties: productcode: type: string maxLength: 15 productname: type: string maxLength: 70 productscale: type: string maxLength: 10 productvendor: type: string maxLength: 50 productdescription: type: string quantityinstock: type: integer maximum: 32767 minimum: -32768 buyprice: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ msrp: type: string format: decimal pattern: ^-?\d{0,8}(?:\.\d{0,2})?$ productline: type: string required: - buyprice - msrp - productcode - productdescription - productline - productname - productscale - productvendor - quantityinstock