naftiko: 1.0.0-alpha2 info: label: Schematic API — entitlements description: 'Schematic API — entitlements. 22 operations. Lead operation: List company overrides. Self-contained Naftiko capability covering one Schematic business surface.' tags: - Schematic - entitlements created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SCHEMATIC_API_KEY: SCHEMATIC_API_KEY capability: consumes: - type: http namespace: schematic-entitlements baseUri: https://api.schematichq.com description: Schematic API — entitlements business capability. Self-contained, no shared references. resources: - name: company-overrides path: /company-overrides operations: - name: listcompanyoverrides method: GET description: List company overrides outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string description: Filter company overrides by a single company ID (starting with comp_) - name: company_ids in: query type: array description: Filter company overrides by multiple company IDs (starting with comp_) - name: feature_id in: query type: string description: Filter company overrides by a single feature ID (starting with feat_) - name: feature_ids in: query type: array description: Filter company overrides by multiple feature IDs (starting with feat_) - name: ids in: query type: array description: Filter company overrides by multiple company override IDs (starting with cmov_) - name: without_expired in: query type: boolean description: Filter company overrides by whether they have not expired - name: q in: query type: string description: Search for company overrides by feature or company name - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: createcompanyoverride method: POST description: Create company override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: company-overrides-count path: /company-overrides/count operations: - name: countcompanyoverrides method: GET description: Count company overrides outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string description: Filter company overrides by a single company ID (starting with comp_) - name: company_ids in: query type: array description: Filter company overrides by multiple company IDs (starting with comp_) - name: feature_id in: query type: string description: Filter company overrides by a single feature ID (starting with feat_) - name: feature_ids in: query type: array description: Filter company overrides by multiple feature IDs (starting with feat_) - name: ids in: query type: array description: Filter company overrides by multiple company override IDs (starting with cmov_) - name: without_expired in: query type: boolean description: Filter company overrides by whether they have not expired - name: q in: query type: string description: Search for company overrides by feature or company name - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: company-overrides-company_override_id path: /company-overrides/{company_override_id} operations: - name: getcompanyoverride method: GET description: Get company override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_override_id in: path type: string description: company_override_id required: true - name: updatecompanyoverride method: PUT description: Update company override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_override_id in: path type: string description: company_override_id required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletecompanyoverride method: DELETE description: Delete company override outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_override_id in: path type: string description: company_override_id required: true - name: feature-companies path: /feature-companies operations: - name: listfeaturecompanies method: GET description: List feature companies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string required: true - name: q in: query type: string - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: feature-companies-count path: /feature-companies/count operations: - name: countfeaturecompanies method: GET description: Count feature companies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string required: true - name: q in: query type: string - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: feature-usage path: /feature-usage operations: - name: listfeatureusage method: GET description: List feature usage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string - name: company_keys in: query type: object - name: feature_ids in: query type: array - name: include_usage_aggregation in: query type: boolean description: Include time-bucketed usage aggregation (today, this week, this month, billing period) for credit-based entitlements. Defaults to false for performance. - name: q in: query type: string - name: without_negative_entitlements in: query type: boolean - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: feature-usage-timeseries path: /feature-usage-timeseries operations: - name: getfeatureusagetimeseries method: GET description: Get feature usage time series outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string required: true - name: end_time in: query type: string required: true - name: feature_id in: query type: string required: true - name: granularity in: query type: string - name: start_time in: query type: string required: true - name: feature-usage-count path: /feature-usage/count operations: - name: countfeatureusage method: GET description: Count feature usage outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string - name: company_keys in: query type: object - name: feature_ids in: query type: array - name: include_usage_aggregation in: query type: boolean description: Include time-bucketed usage aggregation (today, this week, this month, billing period) for credit-based entitlements. Defaults to false for performance. - name: q in: query type: string - name: without_negative_entitlements in: query type: boolean - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: feature-users path: /feature-users operations: - name: listfeatureusers method: GET description: List feature users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string required: true - name: q in: query type: string - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: feature-users-count path: /feature-users/count operations: - name: countfeatureusers method: GET description: Count feature users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string required: true - name: q in: query type: string - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: plan-entitlements path: /plan-entitlements operations: - name: listplanentitlements method: GET description: List plan entitlements outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string description: Filter plan entitlements by a single feature ID (starting with feat_) - name: feature_ids in: query type: array description: Filter plan entitlements by multiple feature IDs (starting with feat_) - name: ids in: query type: array description: Filter plan entitlements by multiple plan entitlement IDs (starting with pltl_) - name: plan_id in: query type: string description: Filter plan entitlements by a single plan ID (starting with plan_) - name: plan_ids in: query type: array description: Filter plan entitlements by multiple plan IDs (starting with plan_) - name: plan_version_id in: query type: string description: Filter plan entitlements by a single plan version ID (starting with plvr_) - name: plan_version_ids in: query type: array description: Filter plan entitlements by multiple plan version IDs (starting with plvr_) - name: q in: query type: string description: Search for plan entitlements by feature or company name - name: with_metered_products in: query type: boolean description: Filter plan entitlements only with metered products - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: createplanentitlement method: POST description: Create plan entitlement outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: plan-entitlements-billing-linked path: /plan-entitlements/billing-linked operations: - name: upsertplanentitlementforbillingproduct method: POST description: Upsert plan entitlement 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: plan-entitlements-count path: /plan-entitlements/count operations: - name: countplanentitlements method: GET description: Count plan entitlements outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feature_id in: query type: string description: Filter plan entitlements by a single feature ID (starting with feat_) - name: feature_ids in: query type: array description: Filter plan entitlements by multiple feature IDs (starting with feat_) - name: ids in: query type: array description: Filter plan entitlements by multiple plan entitlement IDs (starting with pltl_) - name: plan_id in: query type: string description: Filter plan entitlements by a single plan ID (starting with plan_) - name: plan_ids in: query type: array description: Filter plan entitlements by multiple plan IDs (starting with plan_) - name: plan_version_id in: query type: string description: Filter plan entitlements by a single plan version ID (starting with plvr_) - name: plan_version_ids in: query type: array description: Filter plan entitlements by multiple plan version IDs (starting with plvr_) - name: q in: query type: string description: Search for plan entitlements by feature or company name - name: with_metered_products in: query type: boolean description: Filter plan entitlements only with metered products - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: plan-entitlements-duplicate path: /plan-entitlements/duplicate operations: - name: duplicateplanentitlements method: POST description: Duplicate plan entitlements outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: plan-entitlements-plan_entitlement_id path: /plan-entitlements/{plan_entitlement_id} operations: - name: getplanentitlement method: GET description: Get plan entitlement outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: plan_entitlement_id in: path type: string description: plan_entitlement_id required: true - name: updateplanentitlement method: PUT description: Update plan entitlement outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: plan_entitlement_id in: path type: string description: plan_entitlement_id required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deleteplanentitlement method: DELETE description: Delete plan entitlement outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: plan_entitlement_id in: path type: string description: plan_entitlement_id required: true - name: usage-by-company path: /usage-by-company operations: - name: getfeatureusagebycompany method: GET description: Get feature usage by company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: keys in: query type: object description: Key/value pairs required: true authentication: type: apikey key: X-Schematic-Api-Key value: '{{env.SCHEMATIC_API_KEY}}' placement: header exposes: - type: rest namespace: schematic-entitlements-rest port: 8080 description: REST adapter for Schematic API — entitlements. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/company-overrides name: company-overrides description: REST surface for company-overrides. operations: - method: GET name: listcompanyoverrides description: List company overrides call: schematic-entitlements.listcompanyoverrides with: company_id: rest.company_id company_ids: rest.company_ids feature_id: rest.feature_id feature_ids: rest.feature_ids ids: rest.ids without_expired: rest.without_expired q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: createcompanyoverride description: Create company override call: schematic-entitlements.createcompanyoverride with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/company-overrides/count name: company-overrides-count description: REST surface for company-overrides-count. operations: - method: GET name: countcompanyoverrides description: Count company overrides call: schematic-entitlements.countcompanyoverrides with: company_id: rest.company_id company_ids: rest.company_ids feature_id: rest.feature_id feature_ids: rest.feature_ids ids: rest.ids without_expired: rest.without_expired q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/company-overrides/{company-override-id} name: company-overrides-company-override-id description: REST surface for company-overrides-company_override_id. operations: - method: GET name: getcompanyoverride description: Get company override call: schematic-entitlements.getcompanyoverride with: company_override_id: rest.company_override_id outputParameters: - type: object mapping: $. - method: PUT name: updatecompanyoverride description: Update company override call: schematic-entitlements.updatecompanyoverride with: company_override_id: rest.company_override_id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletecompanyoverride description: Delete company override call: schematic-entitlements.deletecompanyoverride with: company_override_id: rest.company_override_id outputParameters: - type: object mapping: $. - path: /v1/feature-companies name: feature-companies description: REST surface for feature-companies. operations: - method: GET name: listfeaturecompanies description: List feature companies call: schematic-entitlements.listfeaturecompanies with: feature_id: rest.feature_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/feature-companies/count name: feature-companies-count description: REST surface for feature-companies-count. operations: - method: GET name: countfeaturecompanies description: Count feature companies call: schematic-entitlements.countfeaturecompanies with: feature_id: rest.feature_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/feature-usage name: feature-usage description: REST surface for feature-usage. operations: - method: GET name: listfeatureusage description: List feature usage call: schematic-entitlements.listfeatureusage with: company_id: rest.company_id company_keys: rest.company_keys feature_ids: rest.feature_ids include_usage_aggregation: rest.include_usage_aggregation q: rest.q without_negative_entitlements: rest.without_negative_entitlements limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/feature-usage-timeseries name: feature-usage-timeseries description: REST surface for feature-usage-timeseries. operations: - method: GET name: getfeatureusagetimeseries description: Get feature usage time series call: schematic-entitlements.getfeatureusagetimeseries with: company_id: rest.company_id end_time: rest.end_time feature_id: rest.feature_id granularity: rest.granularity start_time: rest.start_time outputParameters: - type: object mapping: $. - path: /v1/feature-usage/count name: feature-usage-count description: REST surface for feature-usage-count. operations: - method: GET name: countfeatureusage description: Count feature usage call: schematic-entitlements.countfeatureusage with: company_id: rest.company_id company_keys: rest.company_keys feature_ids: rest.feature_ids include_usage_aggregation: rest.include_usage_aggregation q: rest.q without_negative_entitlements: rest.without_negative_entitlements limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/feature-users name: feature-users description: REST surface for feature-users. operations: - method: GET name: listfeatureusers description: List feature users call: schematic-entitlements.listfeatureusers with: feature_id: rest.feature_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/feature-users/count name: feature-users-count description: REST surface for feature-users-count. operations: - method: GET name: countfeatureusers description: Count feature users call: schematic-entitlements.countfeatureusers with: feature_id: rest.feature_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-entitlements name: plan-entitlements description: REST surface for plan-entitlements. operations: - method: GET name: listplanentitlements description: List plan entitlements call: schematic-entitlements.listplanentitlements with: feature_id: rest.feature_id feature_ids: rest.feature_ids ids: rest.ids plan_id: rest.plan_id plan_ids: rest.plan_ids plan_version_id: rest.plan_version_id plan_version_ids: rest.plan_version_ids q: rest.q with_metered_products: rest.with_metered_products limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: createplanentitlement description: Create plan entitlement call: schematic-entitlements.createplanentitlement with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/plan-entitlements/billing-linked name: plan-entitlements-billing-linked description: REST surface for plan-entitlements-billing-linked. operations: - method: POST name: upsertplanentitlementforbillingproduct description: Upsert plan entitlement for billing product call: schematic-entitlements.upsertplanentitlementforbillingproduct with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/plan-entitlements/count name: plan-entitlements-count description: REST surface for plan-entitlements-count. operations: - method: GET name: countplanentitlements description: Count plan entitlements call: schematic-entitlements.countplanentitlements with: feature_id: rest.feature_id feature_ids: rest.feature_ids ids: rest.ids plan_id: rest.plan_id plan_ids: rest.plan_ids plan_version_id: rest.plan_version_id plan_version_ids: rest.plan_version_ids q: rest.q with_metered_products: rest.with_metered_products limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-entitlements/duplicate name: plan-entitlements-duplicate description: REST surface for plan-entitlements-duplicate. operations: - method: POST name: duplicateplanentitlements description: Duplicate plan entitlements call: schematic-entitlements.duplicateplanentitlements with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/plan-entitlements/{plan-entitlement-id} name: plan-entitlements-plan-entitlement-id description: REST surface for plan-entitlements-plan_entitlement_id. operations: - method: GET name: getplanentitlement description: Get plan entitlement call: schematic-entitlements.getplanentitlement with: plan_entitlement_id: rest.plan_entitlement_id outputParameters: - type: object mapping: $. - method: PUT name: updateplanentitlement description: Update plan entitlement call: schematic-entitlements.updateplanentitlement with: plan_entitlement_id: rest.plan_entitlement_id body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteplanentitlement description: Delete plan entitlement call: schematic-entitlements.deleteplanentitlement with: plan_entitlement_id: rest.plan_entitlement_id outputParameters: - type: object mapping: $. - path: /v1/usage-by-company name: usage-by-company description: REST surface for usage-by-company. operations: - method: GET name: getfeatureusagebycompany description: Get feature usage by company call: schematic-entitlements.getfeatureusagebycompany with: keys: rest.keys outputParameters: - type: object mapping: $. - type: mcp namespace: schematic-entitlements-mcp port: 9090 transport: http description: MCP adapter for Schematic API — entitlements. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-company-overrides description: List company overrides hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.listcompanyoverrides with: company_id: tools.company_id company_ids: tools.company_ids feature_id: tools.feature_id feature_ids: tools.feature_ids ids: tools.ids without_expired: tools.without_expired q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: create-company-override description: Create company override hints: readOnly: false destructive: false idempotent: false call: schematic-entitlements.createcompanyoverride with: body: tools.body outputParameters: - type: object mapping: $. - name: count-company-overrides description: Count company overrides hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.countcompanyoverrides with: company_id: tools.company_id company_ids: tools.company_ids feature_id: tools.feature_id feature_ids: tools.feature_ids ids: tools.ids without_expired: tools.without_expired q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-company-override description: Get company override hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.getcompanyoverride with: company_override_id: tools.company_override_id outputParameters: - type: object mapping: $. - name: update-company-override description: Update company override hints: readOnly: false destructive: false idempotent: true call: schematic-entitlements.updatecompanyoverride with: company_override_id: tools.company_override_id body: tools.body outputParameters: - type: object mapping: $. - name: delete-company-override description: Delete company override hints: readOnly: false destructive: true idempotent: true call: schematic-entitlements.deletecompanyoverride with: company_override_id: tools.company_override_id outputParameters: - type: object mapping: $. - name: list-feature-companies description: List feature companies hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.listfeaturecompanies with: feature_id: tools.feature_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: count-feature-companies description: Count feature companies hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.countfeaturecompanies with: feature_id: tools.feature_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: list-feature-usage description: List feature usage hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.listfeatureusage with: company_id: tools.company_id company_keys: tools.company_keys feature_ids: tools.feature_ids include_usage_aggregation: tools.include_usage_aggregation q: tools.q without_negative_entitlements: tools.without_negative_entitlements limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-feature-usage-time-series description: Get feature usage time series hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.getfeatureusagetimeseries with: company_id: tools.company_id end_time: tools.end_time feature_id: tools.feature_id granularity: tools.granularity start_time: tools.start_time outputParameters: - type: object mapping: $. - name: count-feature-usage description: Count feature usage hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.countfeatureusage with: company_id: tools.company_id company_keys: tools.company_keys feature_ids: tools.feature_ids include_usage_aggregation: tools.include_usage_aggregation q: tools.q without_negative_entitlements: tools.without_negative_entitlements limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: list-feature-users description: List feature users hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.listfeatureusers with: feature_id: tools.feature_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: count-feature-users description: Count feature users hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.countfeatureusers with: feature_id: tools.feature_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: list-plan-entitlements description: List plan entitlements hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.listplanentitlements with: feature_id: tools.feature_id feature_ids: tools.feature_ids ids: tools.ids plan_id: tools.plan_id plan_ids: tools.plan_ids plan_version_id: tools.plan_version_id plan_version_ids: tools.plan_version_ids q: tools.q with_metered_products: tools.with_metered_products limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: create-plan-entitlement description: Create plan entitlement hints: readOnly: false destructive: false idempotent: false call: schematic-entitlements.createplanentitlement with: body: tools.body outputParameters: - type: object mapping: $. - name: upsert-plan-entitlement-billing-product description: Upsert plan entitlement for billing product hints: readOnly: false destructive: false idempotent: false call: schematic-entitlements.upsertplanentitlementforbillingproduct with: body: tools.body outputParameters: - type: object mapping: $. - name: count-plan-entitlements description: Count plan entitlements hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.countplanentitlements with: feature_id: tools.feature_id feature_ids: tools.feature_ids ids: tools.ids plan_id: tools.plan_id plan_ids: tools.plan_ids plan_version_id: tools.plan_version_id plan_version_ids: tools.plan_version_ids q: tools.q with_metered_products: tools.with_metered_products limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: duplicate-plan-entitlements description: Duplicate plan entitlements hints: readOnly: false destructive: false idempotent: false call: schematic-entitlements.duplicateplanentitlements with: body: tools.body outputParameters: - type: object mapping: $. - name: get-plan-entitlement description: Get plan entitlement hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.getplanentitlement with: plan_entitlement_id: tools.plan_entitlement_id outputParameters: - type: object mapping: $. - name: update-plan-entitlement description: Update plan entitlement hints: readOnly: false destructive: false idempotent: true call: schematic-entitlements.updateplanentitlement with: plan_entitlement_id: tools.plan_entitlement_id body: tools.body outputParameters: - type: object mapping: $. - name: delete-plan-entitlement description: Delete plan entitlement hints: readOnly: false destructive: true idempotent: true call: schematic-entitlements.deleteplanentitlement with: plan_entitlement_id: tools.plan_entitlement_id outputParameters: - type: object mapping: $. - name: get-feature-usage-company description: Get feature usage by company hints: readOnly: true destructive: false idempotent: true call: schematic-entitlements.getfeatureusagebycompany with: keys: tools.keys outputParameters: - type: object mapping: $.