naftiko: 1.0.0-alpha2 info: label: Webflow Data API — Collections description: 'Webflow Data API — Collections. 23 operations. Lead operation: Webflow Get Collection Details. Self-contained Naftiko capability covering one Webflow Api And Documentation Webflow business surface.' tags: - Webflow Api And Documentation Webflow - Collections created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: WEBFLOW_API_AND_DOCUMENTATION_WEBFLOW_API_KEY: WEBFLOW_API_AND_DOCUMENTATION_WEBFLOW_API_KEY capability: consumes: - type: http namespace: webflow-data-collections baseUri: https://api.webflow.com/v2 description: Webflow Data API — Collections business capability. Self-contained, no shared references. resources: - name: collections-collection_id path: /collections/{collection_id} operations: - name: collectiondetails method: GET description: Webflow Get Collection Details outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: deletecollection method: DELETE description: Webflow Delete Collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: collections-collection_id-fields path: /collections/{collection_id}/fields operations: - name: createfield method: POST description: Webflow Create Collection Field outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: body in: body type: object description: Request body (JSON). required: true - name: collections-collection_id-fields-field_id path: /collections/{collection_id}/fields/{field_id} operations: - name: updatefield method: PATCH description: Webflow Update Collection Field outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: field_id in: path type: string description: Unique identifier for a Field in a collection required: true - name: body in: body type: object description: Request body (JSON). required: false - name: deletefield method: DELETE description: Webflow Delete Collection Field outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: field_id in: path type: string description: Unique identifier for a Field in a collection required: true - name: collections-collection_id-items path: /collections/{collection_id}/items operations: - name: listcollectionitems method: GET description: Webflow List Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: offset in: query type: integer description: Offset used for pagination if the results have more than limit records - name: limit in: query type: integer description: 'Maximum number of records to be returned (max limit: 100)' - name: name in: query type: string description: Filter by the exact name of the item(s) - name: slug in: query type: string description: Filter by the exact slug of the item - name: lastPublished in: query type: object description: Filter by the last published date of the item(s) - name: sortBy in: query type: string description: Sort results by the provided value - name: sortOrder in: query type: string description: Sorts the results by asc or desc - name: createitem method: POST description: Webflow Create Collection Item(s) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: updateitems method: PATCH description: Webflow Update Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: deleteitems method: DELETE description: Webflow Delete Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: body in: body type: object description: Request body (JSON). required: false - name: collections-collection_id-items-bulk path: /collections/{collection_id}/items/bulk operations: - name: createitems method: POST description: Webflow Create Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: collections-collection_id-items-live path: /collections/{collection_id}/items/live operations: - name: listcollectionitemslive method: GET description: Webflow List Live Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: offset in: query type: integer description: Offset used for pagination if the results have more than limit records - name: limit in: query type: integer description: 'Maximum number of records to be returned (max limit: 100)' - name: name in: query type: string description: Filter by the exact name of the item(s) - name: slug in: query type: string description: Filter by the exact slug of the item - name: lastPublished in: query type: object description: Filter by the last published date of the item(s) - name: sortBy in: query type: string description: Sort results by the provided value - name: sortOrder in: query type: string description: Sorts the results by asc or desc - name: createitemlive method: POST description: Webflow Create Live Collection Item(s) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: updateitemslive method: PATCH description: Webflow Update Live Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: deleteitemslive method: DELETE description: Webflow Unpublish Live Collection Items outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: body in: body type: object description: Request body (JSON). required: false - name: collections-collection_id-items-publish path: /collections/{collection_id}/items/publish operations: - name: publishitem method: POST description: Webflow Publish Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: body in: body type: object description: Request body (JSON). required: false - name: collections-collection_id-items-item_id path: /collections/{collection_id}/items/{item_id} operations: - name: getitem method: GET description: Webflow Get Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: updateitem method: PATCH description: Webflow Update Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: deleteitem method: DELETE description: Webflow Delete Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: collections-collection_id-items-item_id-live path: /collections/{collection_id}/items/{item_id}/live operations: - name: getitemlive method: GET description: Webflow Get Live Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: updateitemlive method: PATCH description: Webflow Update Live Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: skipInvalidFiles in: query type: boolean description: When true, invalid files are skipped and processing continues. When false, the entire request fails if any file is invalid. - name: body in: body type: object description: Request body (JSON). required: false - name: deleteitemlive method: DELETE description: Webflow Unpublish Live Collection Item outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: collection_id in: path type: string description: Unique identifier for a Collection required: true - name: item_id in: path type: string description: Unique identifier for an Item required: true - name: cmsLocaleId in: query type: string description: Unique identifier for a CMS Locale. This UID is different from the Site locale identifier and is listed as `cmsLocaleId` in the Sites response. To query multipl - name: sites-site_id-collections path: /sites/{site_id}/collections operations: - name: listcollections method: GET description: Webflow List Collections outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: site_id in: path type: string description: Unique identifier for a Site required: true - name: createcollection method: POST description: Webflow Create Collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: site_id in: path type: string description: Unique identifier for a Site required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.WEBFLOW_API_AND_DOCUMENTATION_WEBFLOW_API_KEY}}' exposes: - type: rest namespace: webflow-data-collections-rest port: 8080 description: REST adapter for Webflow Data API — Collections. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/collections/{collection-id} name: collections-collection-id description: REST surface for collections-collection_id. operations: - method: GET name: collectiondetails description: Webflow Get Collection Details call: webflow-data-collections.collectiondetails with: collection_id: rest.collection_id outputParameters: - type: object mapping: $. - method: DELETE name: deletecollection description: Webflow Delete Collection call: webflow-data-collections.deletecollection with: collection_id: rest.collection_id outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/fields name: collections-collection-id-fields description: REST surface for collections-collection_id-fields. operations: - method: POST name: createfield description: Webflow Create Collection Field call: webflow-data-collections.createfield with: collection_id: rest.collection_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/fields/{field-id} name: collections-collection-id-fields-field-id description: REST surface for collections-collection_id-fields-field_id. operations: - method: PATCH name: updatefield description: Webflow Update Collection Field call: webflow-data-collections.updatefield with: collection_id: rest.collection_id field_id: rest.field_id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletefield description: Webflow Delete Collection Field call: webflow-data-collections.deletefield with: collection_id: rest.collection_id field_id: rest.field_id outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items name: collections-collection-id-items description: REST surface for collections-collection_id-items. operations: - method: GET name: listcollectionitems description: Webflow List Collection Items call: webflow-data-collections.listcollectionitems with: collection_id: rest.collection_id cmsLocaleId: rest.cmsLocaleId offset: rest.offset limit: rest.limit name: rest.name slug: rest.slug lastPublished: rest.lastPublished sortBy: rest.sortBy sortOrder: rest.sortOrder outputParameters: - type: object mapping: $. - method: POST name: createitem description: Webflow Create Collection Item(s) call: webflow-data-collections.createitem with: collection_id: rest.collection_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: PATCH name: updateitems description: Webflow Update Collection Items call: webflow-data-collections.updateitems with: collection_id: rest.collection_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteitems description: Webflow Delete Collection Items call: webflow-data-collections.deleteitems with: collection_id: rest.collection_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items/bulk name: collections-collection-id-items-bulk description: REST surface for collections-collection_id-items-bulk. operations: - method: POST name: createitems description: Webflow Create Collection Items call: webflow-data-collections.createitems with: collection_id: rest.collection_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items/live name: collections-collection-id-items-live description: REST surface for collections-collection_id-items-live. operations: - method: GET name: listcollectionitemslive description: Webflow List Live Collection Items call: webflow-data-collections.listcollectionitemslive with: collection_id: rest.collection_id cmsLocaleId: rest.cmsLocaleId offset: rest.offset limit: rest.limit name: rest.name slug: rest.slug lastPublished: rest.lastPublished sortBy: rest.sortBy sortOrder: rest.sortOrder outputParameters: - type: object mapping: $. - method: POST name: createitemlive description: Webflow Create Live Collection Item(s) call: webflow-data-collections.createitemlive with: collection_id: rest.collection_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: PATCH name: updateitemslive description: Webflow Update Live Collection Items call: webflow-data-collections.updateitemslive with: collection_id: rest.collection_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteitemslive description: Webflow Unpublish Live Collection Items call: webflow-data-collections.deleteitemslive with: collection_id: rest.collection_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items/publish name: collections-collection-id-items-publish description: REST surface for collections-collection_id-items-publish. operations: - method: POST name: publishitem description: Webflow Publish Collection Item call: webflow-data-collections.publishitem with: collection_id: rest.collection_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items/{item-id} name: collections-collection-id-items-item-id description: REST surface for collections-collection_id-items-item_id. operations: - method: GET name: getitem description: Webflow Get Collection Item call: webflow-data-collections.getitem with: collection_id: rest.collection_id item_id: rest.item_id cmsLocaleId: rest.cmsLocaleId outputParameters: - type: object mapping: $. - method: PATCH name: updateitem description: Webflow Update Collection Item call: webflow-data-collections.updateitem with: collection_id: rest.collection_id item_id: rest.item_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteitem description: Webflow Delete Collection Item call: webflow-data-collections.deleteitem with: collection_id: rest.collection_id item_id: rest.item_id cmsLocaleId: rest.cmsLocaleId outputParameters: - type: object mapping: $. - path: /v1/collections/{collection-id}/items/{item-id}/live name: collections-collection-id-items-item-id-live description: REST surface for collections-collection_id-items-item_id-live. operations: - method: GET name: getitemlive description: Webflow Get Live Collection Item call: webflow-data-collections.getitemlive with: collection_id: rest.collection_id item_id: rest.item_id cmsLocaleId: rest.cmsLocaleId outputParameters: - type: object mapping: $. - method: PATCH name: updateitemlive description: Webflow Update Live Collection Item call: webflow-data-collections.updateitemlive with: collection_id: rest.collection_id item_id: rest.item_id skipInvalidFiles: rest.skipInvalidFiles body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteitemlive description: Webflow Unpublish Live Collection Item call: webflow-data-collections.deleteitemlive with: collection_id: rest.collection_id item_id: rest.item_id cmsLocaleId: rest.cmsLocaleId outputParameters: - type: object mapping: $. - path: /v1/sites/{site-id}/collections name: sites-site-id-collections description: REST surface for sites-site_id-collections. operations: - method: GET name: listcollections description: Webflow List Collections call: webflow-data-collections.listcollections with: site_id: rest.site_id outputParameters: - type: object mapping: $. - method: POST name: createcollection description: Webflow Create Collection call: webflow-data-collections.createcollection with: site_id: rest.site_id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: webflow-data-collections-mcp port: 9090 transport: http description: MCP adapter for Webflow Data API — Collections. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: webflow-get-collection-details description: Webflow Get Collection Details hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.collectiondetails with: collection_id: tools.collection_id outputParameters: - type: object mapping: $. - name: webflow-delete-collection description: Webflow Delete Collection hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deletecollection with: collection_id: tools.collection_id outputParameters: - type: object mapping: $. - name: webflow-create-collection-field description: Webflow Create Collection Field hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.createfield with: collection_id: tools.collection_id body: tools.body outputParameters: - type: object mapping: $. - name: webflow-update-collection-field description: Webflow Update Collection Field hints: readOnly: false destructive: false idempotent: true call: webflow-data-collections.updatefield with: collection_id: tools.collection_id field_id: tools.field_id body: tools.body outputParameters: - type: object mapping: $. - name: webflow-delete-collection-field description: Webflow Delete Collection Field hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deletefield with: collection_id: tools.collection_id field_id: tools.field_id outputParameters: - type: object mapping: $. - name: webflow-list-collection-items description: Webflow List Collection Items hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.listcollectionitems with: collection_id: tools.collection_id cmsLocaleId: tools.cmsLocaleId offset: tools.offset limit: tools.limit name: tools.name slug: tools.slug lastPublished: tools.lastPublished sortBy: tools.sortBy sortOrder: tools.sortOrder outputParameters: - type: object mapping: $. - name: webflow-create-collection-item-s description: Webflow Create Collection Item(s) hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.createitem with: collection_id: tools.collection_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-update-collection-items description: Webflow Update Collection Items hints: readOnly: false destructive: false idempotent: true call: webflow-data-collections.updateitems with: collection_id: tools.collection_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-delete-collection-items description: Webflow Delete Collection Items hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deleteitems with: collection_id: tools.collection_id body: tools.body outputParameters: - type: object mapping: $. - name: webflow-create-collection-items description: Webflow Create Collection Items hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.createitems with: collection_id: tools.collection_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-list-live-collection-items description: Webflow List Live Collection Items hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.listcollectionitemslive with: collection_id: tools.collection_id cmsLocaleId: tools.cmsLocaleId offset: tools.offset limit: tools.limit name: tools.name slug: tools.slug lastPublished: tools.lastPublished sortBy: tools.sortBy sortOrder: tools.sortOrder outputParameters: - type: object mapping: $. - name: webflow-create-live-collection-item-s description: Webflow Create Live Collection Item(s) hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.createitemlive with: collection_id: tools.collection_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-update-live-collection-items description: Webflow Update Live Collection Items hints: readOnly: false destructive: false idempotent: true call: webflow-data-collections.updateitemslive with: collection_id: tools.collection_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-unpublish-live-collection-items description: Webflow Unpublish Live Collection Items hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deleteitemslive with: collection_id: tools.collection_id body: tools.body outputParameters: - type: object mapping: $. - name: webflow-publish-collection-item description: Webflow Publish Collection Item hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.publishitem with: collection_id: tools.collection_id body: tools.body outputParameters: - type: object mapping: $. - name: webflow-get-collection-item description: Webflow Get Collection Item hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.getitem with: collection_id: tools.collection_id item_id: tools.item_id cmsLocaleId: tools.cmsLocaleId outputParameters: - type: object mapping: $. - name: webflow-update-collection-item description: Webflow Update Collection Item hints: readOnly: false destructive: false idempotent: true call: webflow-data-collections.updateitem with: collection_id: tools.collection_id item_id: tools.item_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-delete-collection-item description: Webflow Delete Collection Item hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deleteitem with: collection_id: tools.collection_id item_id: tools.item_id cmsLocaleId: tools.cmsLocaleId outputParameters: - type: object mapping: $. - name: webflow-get-live-collection-item description: Webflow Get Live Collection Item hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.getitemlive with: collection_id: tools.collection_id item_id: tools.item_id cmsLocaleId: tools.cmsLocaleId outputParameters: - type: object mapping: $. - name: webflow-update-live-collection-item description: Webflow Update Live Collection Item hints: readOnly: false destructive: false idempotent: true call: webflow-data-collections.updateitemlive with: collection_id: tools.collection_id item_id: tools.item_id skipInvalidFiles: tools.skipInvalidFiles body: tools.body outputParameters: - type: object mapping: $. - name: webflow-unpublish-live-collection-item description: Webflow Unpublish Live Collection Item hints: readOnly: false destructive: true idempotent: true call: webflow-data-collections.deleteitemlive with: collection_id: tools.collection_id item_id: tools.item_id cmsLocaleId: tools.cmsLocaleId outputParameters: - type: object mapping: $. - name: webflow-list-collections description: Webflow List Collections hints: readOnly: true destructive: false idempotent: true call: webflow-data-collections.listcollections with: site_id: tools.site_id outputParameters: - type: object mapping: $. - name: webflow-create-collection description: Webflow Create Collection hints: readOnly: false destructive: false idempotent: false call: webflow-data-collections.createcollection with: site_id: tools.site_id body: tools.body outputParameters: - type: object mapping: $.