Schematic · Capability

Schematic API — features

Schematic API — features. 17 operations. Lead operation: List features. Self-contained Naftiko capability covering one Schematic business surface.

Run with Naftiko Schematicfeatures

What You Can Do

GET
Listfeatures — List features
/v1/features
POST
Createfeature — Create feature
/v1/features
POST
Upsertfeatureforbillingproduct — Upsert feature for billing product
/v1/features/billing-linked
GET
Countfeatures — Count features
/v1/features/count
GET
Getfeature — Get feature
/v1/features/{feature-id}
PUT
Updatefeature — Update feature
/v1/features/{feature-id}
DELETE
Deletefeature — Delete feature
/v1/features/{feature-id}
GET
Listflags — List flags
/v1/flags
POST
Createflag — Create flag
/v1/flags
POST
Checkflags — Check flags
/v1/flags/check
POST
Checkflagsbulk — Check flags bulk
/v1/flags/check-bulk
GET
Countflags — Count flags
/v1/flags/count
GET
Getflag — Get flag
/v1/flags/{flag-id}
PUT
Updateflag — Update flag
/v1/flags/{flag-id}
DELETE
Deleteflag — Delete flag
/v1/flags/{flag-id}
PUT
Updateflagrules — Update flag rules
/v1/flags/{flag-id}/rules
POST
Checkflag — Check flag
/v1/flags/{key}/check

MCP Tools

list-features

List features

read-only idempotent
create-feature

Create feature

upsert-feature-billing-product

Upsert feature for billing product

count-features

Count features

read-only idempotent
get-feature

Get feature

read-only idempotent
update-feature

Update feature

idempotent
delete-feature

Delete feature

idempotent
list-flags

List flags

read-only idempotent
create-flag

Create flag

check-flags

Check flags

read-only
check-flags-bulk

Check flags bulk

read-only
count-flags

Count flags

read-only idempotent
get-flag

Get flag

read-only idempotent
update-flag

Update flag

idempotent
delete-flag

Delete flag

idempotent
update-flag-rules

Update flag rules

idempotent
check-flag

Check flag

read-only

Capability Spec

schematic-features.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Schematic API — features
  description: 'Schematic API — features. 17 operations. Lead operation: List features. Self-contained Naftiko capability
    covering one Schematic business surface.'
  tags:
  - Schematic
  - features
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SCHEMATIC_API_KEY: SCHEMATIC_API_KEY
capability:
  consumes:
  - type: http
    namespace: schematic-features
    baseUri: https://api.schematichq.com
    description: Schematic API — features business capability. Self-contained, no shared references.
    resources:
    - name: features
      path: /features
      operations:
      - name: listfeatures
        method: GET
        description: List features
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: boolean_require_event
          in: query
          type: boolean
          description: Only return boolean features if there is an associated event. Automatically includes boolean in the
            feature types filter.
        - name: feature_type
          in: query
          type: array
          description: Filter by one or more feature types (boolean, event, trait)
        - name: ids
          in: query
          type: array
        - name: plan_version_id
          in: query
          type: string
          description: Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest
            published version is used
        - name: q
          in: query
          type: string
          description: Search by feature name or ID
        - name: without_company_override_for
          in: query
          type: string
          description: Filter out features that already have a company override for the specified company ID
        - name: without_plan_entitlement_for
          in: query
          type: string
          description: Filter out features that already have a plan entitlement for the specified plan ID
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: createfeature
        method: POST
        description: Create feature
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: features-billing-linked
      path: /features/billing-linked
      operations:
      - name: upsertfeatureforbillingproduct
        method: POST
        description: Upsert feature for billing product
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: features-count
      path: /features/count
      operations:
      - name: countfeatures
        method: GET
        description: Count features
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: boolean_require_event
          in: query
          type: boolean
          description: Only return boolean features if there is an associated event. Automatically includes boolean in the
            feature types filter.
        - name: feature_type
          in: query
          type: array
          description: Filter by one or more feature types (boolean, event, trait)
        - name: ids
          in: query
          type: array
        - name: plan_version_id
          in: query
          type: string
          description: Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest
            published version is used
        - name: q
          in: query
          type: string
          description: Search by feature name or ID
        - name: without_company_override_for
          in: query
          type: string
          description: Filter out features that already have a company override for the specified company ID
        - name: without_plan_entitlement_for
          in: query
          type: string
          description: Filter out features that already have a plan entitlement for the specified plan ID
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: features-feature_id
      path: /features/{feature_id}
      operations:
      - name: getfeature
        method: GET
        description: Get feature
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: feature_id
          in: path
          type: string
          description: feature_id
          required: true
      - name: updatefeature
        method: PUT
        description: Update feature
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: feature_id
          in: path
          type: string
          description: feature_id
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: deletefeature
        method: DELETE
        description: Delete feature
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: feature_id
          in: path
          type: string
          description: feature_id
          required: true
    - name: flags
      path: /flags
      operations:
      - name: listflags
        method: GET
        description: List flags
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: feature_id
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
          description: Search by flag name, key, or ID
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: createflag
        method: POST
        description: Create flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: flags-check
      path: /flags/check
      operations:
      - name: checkflags
        method: POST
        description: Check flags
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: flags-check-bulk
      path: /flags/check-bulk
      operations:
      - name: checkflagsbulk
        method: POST
        description: Check flags bulk
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: flags-count
      path: /flags/count
      operations:
      - name: countflags
        method: GET
        description: Count flags
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: feature_id
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
          description: Search by flag name, key, or ID
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: flags-flag_id
      path: /flags/{flag_id}
      operations:
      - name: getflag
        method: GET
        description: Get flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: flag_id
          in: path
          type: string
          description: flag_id
          required: true
      - name: updateflag
        method: PUT
        description: Update flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: flag_id
          in: path
          type: string
          description: flag_id
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: deleteflag
        method: DELETE
        description: Delete flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: flag_id
          in: path
          type: string
          description: flag_id
          required: true
    - name: flags-flag_id-rules
      path: /flags/{flag_id}/rules
      operations:
      - name: updateflagrules
        method: PUT
        description: Update flag rules
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: flag_id
          in: path
          type: string
          description: flag_id
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: flags-key-check
      path: /flags/{key}/check
      operations:
      - name: checkflag
        method: POST
        description: Check flag
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: key
          in: path
          type: string
          description: key
          required: true
        - 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-features-rest
    port: 8080
    description: REST adapter for Schematic API — features. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/features
      name: features
      description: REST surface for features.
      operations:
      - method: GET
        name: listfeatures
        description: List features
        call: schematic-features.listfeatures
        with:
          boolean_require_event: rest.boolean_require_event
          feature_type: rest.feature_type
          ids: rest.ids
          plan_version_id: rest.plan_version_id
          q: rest.q
          without_company_override_for: rest.without_company_override_for
          without_plan_entitlement_for: rest.without_plan_entitlement_for
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createfeature
        description: Create feature
        call: schematic-features.createfeature
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/features/billing-linked
      name: features-billing-linked
      description: REST surface for features-billing-linked.
      operations:
      - method: POST
        name: upsertfeatureforbillingproduct
        description: Upsert feature for billing product
        call: schematic-features.upsertfeatureforbillingproduct
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/features/count
      name: features-count
      description: REST surface for features-count.
      operations:
      - method: GET
        name: countfeatures
        description: Count features
        call: schematic-features.countfeatures
        with:
          boolean_require_event: rest.boolean_require_event
          feature_type: rest.feature_type
          ids: rest.ids
          plan_version_id: rest.plan_version_id
          q: rest.q
          without_company_override_for: rest.without_company_override_for
          without_plan_entitlement_for: rest.without_plan_entitlement_for
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/features/{feature-id}
      name: features-feature-id
      description: REST surface for features-feature_id.
      operations:
      - method: GET
        name: getfeature
        description: Get feature
        call: schematic-features.getfeature
        with:
          feature_id: rest.feature_id
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updatefeature
        description: Update feature
        call: schematic-features.updatefeature
        with:
          feature_id: rest.feature_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deletefeature
        description: Delete feature
        call: schematic-features.deletefeature
        with:
          feature_id: rest.feature_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags
      name: flags
      description: REST surface for flags.
      operations:
      - method: GET
        name: listflags
        description: List flags
        call: schematic-features.listflags
        with:
          feature_id: rest.feature_id
          ids: rest.ids
          q: rest.q
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createflag
        description: Create flag
        call: schematic-features.createflag
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/check
      name: flags-check
      description: REST surface for flags-check.
      operations:
      - method: POST
        name: checkflags
        description: Check flags
        call: schematic-features.checkflags
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/check-bulk
      name: flags-check-bulk
      description: REST surface for flags-check-bulk.
      operations:
      - method: POST
        name: checkflagsbulk
        description: Check flags bulk
        call: schematic-features.checkflagsbulk
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/count
      name: flags-count
      description: REST surface for flags-count.
      operations:
      - method: GET
        name: countflags
        description: Count flags
        call: schematic-features.countflags
        with:
          feature_id: rest.feature_id
          ids: rest.ids
          q: rest.q
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/{flag-id}
      name: flags-flag-id
      description: REST surface for flags-flag_id.
      operations:
      - method: GET
        name: getflag
        description: Get flag
        call: schematic-features.getflag
        with:
          flag_id: rest.flag_id
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updateflag
        description: Update flag
        call: schematic-features.updateflag
        with:
          flag_id: rest.flag_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteflag
        description: Delete flag
        call: schematic-features.deleteflag
        with:
          flag_id: rest.flag_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/{flag-id}/rules
      name: flags-flag-id-rules
      description: REST surface for flags-flag_id-rules.
      operations:
      - method: PUT
        name: updateflagrules
        description: Update flag rules
        call: schematic-features.updateflagrules
        with:
          flag_id: rest.flag_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/flags/{key}/check
      name: flags-key-check
      description: REST surface for flags-key-check.
      operations:
      - method: POST
        name: checkflag
        description: Check flag
        call: schematic-features.checkflag
        with:
          key: rest.key
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: schematic-features-mcp
    port: 9090
    transport: http
    description: MCP adapter for Schematic API — features. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: list-features
      description: List features
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.listfeatures
      with:
        boolean_require_event: tools.boolean_require_event
        feature_type: tools.feature_type
        ids: tools.ids
        plan_version_id: tools.plan_version_id
        q: tools.q
        without_company_override_for: tools.without_company_override_for
        without_plan_entitlement_for: tools.without_plan_entitlement_for
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: create-feature
      description: Create feature
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-features.createfeature
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: upsert-feature-billing-product
      description: Upsert feature for billing product
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-features.upsertfeatureforbillingproduct
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: count-features
      description: Count features
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.countfeatures
      with:
        boolean_require_event: tools.boolean_require_event
        feature_type: tools.feature_type
        ids: tools.ids
        plan_version_id: tools.plan_version_id
        q: tools.q
        without_company_override_for: tools.without_company_override_for
        without_plan_entitlement_for: tools.without_plan_entitlement_for
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: get-feature
      description: Get feature
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.getfeature
      with:
        feature_id: tools.feature_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-feature
      description: Update feature
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: schematic-features.updatefeature
      with:
        feature_id: tools.feature_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-feature
      description: Delete feature
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: schematic-features.deletefeature
      with:
        feature_id: tools.feature_id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-flags
      description: List flags
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.listflags
      with:
        feature_id: tools.feature_id
        ids: tools.ids
        q: tools.q
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: create-flag
      description: Create flag
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: schematic-features.createflag
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: check-flags
      description: Check flags
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: schematic-features.checkflags
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: check-flags-bulk
      description: Check flags bulk
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: schematic-features.checkflagsbulk
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: count-flags
      description: Count flags
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.countflags
      with:
        feature_id: tools.feature_id
        ids: tools.ids
        q: tools.q
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.
    - name: get-flag
      description: Get flag
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: schematic-features.getflag
      with:
        flag_id: tools.flag_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-flag
      description: Update flag
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: schematic-features.updateflag
      with:
        flag_id: tools.flag_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-flag
      description: Delete flag
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: schematic-features.deleteflag
      with:
        flag_id: tools.flag_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-flag-rules
      description: Update flag rules
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: schematic-features.updateflagrules
      with:
        flag_id: tools.flag_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: check-flag
      description: Check flag
      hints:
        readOnly: true
        destructive: false
        idempotent: false
      call: schematic-features.checkflag
      with:
        key: tools.key
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.