naftiko: 1.0.0-alpha2 info: label: Vendure Admin API — Catalog description: >- Vendure Admin API capability for the catalogue surface: products, variants, options, option groups, collections, facets, and assets. Backed by the Admin GraphQL endpoint (`POST /admin-api`). Requires an administrator with the relevant ReadCatalog/UpdateCatalog permissions. tags: - Vendure - Admin - Catalog - Products - Collections created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: VENDURE_ADMIN_API_URL: VENDURE_ADMIN_API_URL VENDURE_ADMIN_TOKEN: VENDURE_ADMIN_TOKEN VENDURE_CHANNEL_TOKEN: VENDURE_CHANNEL_TOKEN capability: consumes: - type: http namespace: admin-catalog baseUri: '{{env.VENDURE_ADMIN_API_URL}}' description: Vendure Admin GraphQL endpoint for catalogue operations. resources: - name: admin-graphql path: / operations: - name: queryProducts method: POST description: List products. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: queryProduct method: POST description: Get a product by id or slug. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: createProduct method: POST description: Create a product. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: updateProduct method: POST description: Update a product. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: deleteProduct method: POST description: Delete a product. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: createProductVariants method: POST description: Create product variants. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: updateProductVariants method: POST description: Update product variants. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: queryCollections method: POST description: List collections. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: createCollection method: POST description: Create a collection. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] - name: queryFacets method: POST description: List facets. outputRawFormat: json outputParameters: [ { name: result, type: object, value: $. } ] inputParameters: [ { name: body, in: body, type: object, required: true } ] authentication: type: bearer token: '{{env.VENDURE_ADMIN_TOKEN}}' exposes: - type: rest namespace: admin-catalog-rest port: 8080 description: REST adapter exposing Admin catalog operations. resources: - path: /v1/admin/products/query name: products operations: - { method: POST, name: queryProducts, call: admin-catalog.queryProducts, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/product/query name: product operations: - { method: POST, name: queryProduct, call: admin-catalog.queryProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/product/create name: product-create operations: - { method: POST, name: createProduct, call: admin-catalog.createProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/product/update name: product-update operations: - { method: POST, name: updateProduct, call: admin-catalog.updateProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/product/delete name: product-delete operations: - { method: POST, name: deleteProduct, call: admin-catalog.deleteProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/variants/create name: variants-create operations: - { method: POST, name: createProductVariants, call: admin-catalog.createProductVariants, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/variants/update name: variants-update operations: - { method: POST, name: updateProductVariants, call: admin-catalog.updateProductVariants, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/collections/query name: collections operations: - { method: POST, name: queryCollections, call: admin-catalog.queryCollections, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/collection/create name: collection-create operations: - { method: POST, name: createCollection, call: admin-catalog.createCollection, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - path: /v1/admin/facets/query name: facets operations: - { method: POST, name: queryFacets, call: admin-catalog.queryFacets, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] } - type: mcp namespace: admin-catalog-mcp port: 9090 transport: http description: MCP adapter — one tool per Admin catalog operation. tools: - { name: vendure-admin-list-products, description: List products in the catalog., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryProducts, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-get-product, description: Get a product by id or slug., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-create-product, description: Create a product., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-update-product, description: Update a product., hints: { readOnly: false, destructive: false, idempotent: true }, call: admin-catalog.updateProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-delete-product, description: Delete a product., hints: { readOnly: false, destructive: true, idempotent: true }, call: admin-catalog.deleteProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-create-variants, description: Create product variants., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createProductVariants, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-update-variants, description: Update product variants., hints: { readOnly: false, destructive: false, idempotent: true }, call: admin-catalog.updateProductVariants, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-list-collections, description: List collections., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryCollections, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-create-collection, description: Create a collection., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createCollection, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] } - { name: vendure-admin-list-facets, description: List facets., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryFacets, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }