naftiko: 1.0.0-alpha2 info: label: Schematic API — companies description: 'Schematic API — companies. 36 operations. Lead operation: List companies. Self-contained Naftiko capability covering one Schematic business surface.' tags: - Schematic - companies created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SCHEMATIC_API_KEY: SCHEMATIC_API_KEY capability: consumes: - type: http namespace: schematic-companies baseUri: https://api.schematichq.com description: Schematic API — companies business capability. Self-contained, no shared references. resources: - name: companies path: /companies operations: - name: listcompanies method: GET description: List companies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: credit_type_ids in: query type: array description: Filter companies by one or more credit type IDs (each ID starts with bcrd_) - name: has_scheduled_downgrade in: query type: boolean description: Filter companies that have a pending scheduled downgrade - name: ids in: query type: array description: Filter companies by multiple company IDs (starts with comp_) - name: monetized_subscriptions in: query type: boolean description: Filter companies that have monetized subscriptions - name: plan_id in: query type: string description: Filter companies by plan ID (starts with plan_) - name: plan_ids in: query type: array description: Filter companies by one or more plan IDs (each ID starts with plan_) - name: plan_version_id in: query type: string description: Filter companies by plan version ID (starts with plvr_) - name: q in: query type: string description: Search for companies by name, keys or string traits - name: sort_order_column in: query type: string description: Column to sort by (e.g. name, created_at, last_seen_at) - name: sort_order_direction in: query type: string description: Direction to sort by (asc or desc) - name: subscription_statuses in: query type: array description: Filter companies by one or more subscription statuses - name: subscription_types in: query type: array description: Filter companies by one or more subscription types - name: with_entitlement_for in: query type: string description: Filter companies that have an entitlement (plan entitlement or company override) for the specified feature ID - name: without_feature_override_for in: query type: string description: Filter out companies that already have a company override for the specified feature ID - name: without_plan in: query type: boolean description: Filter out companies that have a plan - name: without_subscription in: query type: boolean description: Filter out companies that have a subscription - name: with_subscription in: query type: boolean description: Filter companies that have a subscription - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: upsertcompany method: POST description: Upsert company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: companies-count path: /companies/count operations: - name: countcompanies method: GET description: Count companies outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: credit_type_ids in: query type: array description: Filter companies by one or more credit type IDs (each ID starts with bcrd_) - name: has_scheduled_downgrade in: query type: boolean description: Filter companies that have a pending scheduled downgrade - name: ids in: query type: array description: Filter companies by multiple company IDs (starts with comp_) - name: monetized_subscriptions in: query type: boolean description: Filter companies that have monetized subscriptions - name: plan_id in: query type: string description: Filter companies by plan ID (starts with plan_) - name: plan_ids in: query type: array description: Filter companies by one or more plan IDs (each ID starts with plan_) - name: plan_version_id in: query type: string description: Filter companies by plan version ID (starts with plvr_) - name: q in: query type: string description: Search for companies by name, keys or string traits - name: sort_order_column in: query type: string description: Column to sort by (e.g. name, created_at, last_seen_at) - name: sort_order_direction in: query type: string description: Direction to sort by (asc or desc) - name: subscription_statuses in: query type: array description: Filter companies by one or more subscription statuses - name: subscription_types in: query type: array description: Filter companies by one or more subscription types - name: with_entitlement_for in: query type: string description: Filter companies that have an entitlement (plan entitlement or company override) for the specified feature ID - name: without_feature_override_for in: query type: string description: Filter out companies that already have a company override for the specified feature ID - name: without_plan in: query type: boolean description: Filter out companies that have a plan - name: without_subscription in: query type: boolean description: Filter out companies that have a subscription - name: with_subscription in: query type: boolean description: Filter companies that have a subscription - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: companies-create path: /companies/create operations: - name: createcompany method: POST description: Create company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: companies-delete path: /companies/delete operations: - name: deletecompanybykeys method: POST description: Delete company by keys outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: companies-lookup path: /companies/lookup operations: - name: lookupcompany method: GET description: Lookup company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: keys in: query type: object description: Key/value pairs required: true - name: companies-company_id path: /companies/{company_id} operations: - name: getcompany method: GET description: Get company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: path type: string description: company_id required: true - name: deletecompany method: DELETE description: Delete company outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: path type: string description: company_id required: true - name: cancel_subscription in: query type: boolean - name: prorate in: query type: boolean - name: company-memberships path: /company-memberships operations: - name: listcompanymemberships method: GET description: List company memberships outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string - name: user_id 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: getorcreatecompanymembership method: POST description: Get or create company membership outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: company-memberships-company_membership_id path: /company-memberships/{company_membership_id} operations: - name: deletecompanymembership method: DELETE description: Delete company membership outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_membership_id in: path type: string description: company_membership_id required: true - name: company-subscriptions path: /company-subscriptions operations: - name: getactivecompanysubscription method: GET description: Get active company subscription outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string - name: company_ids in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: company-traits path: /company-traits operations: - name: upsertcompanytrait method: POST description: Upsert company trait outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: entity-key-definitions path: /entity-key-definitions operations: - name: listentitykeydefinitions method: GET description: List entity key definitions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_type in: query type: string - name: ids in: query type: array - 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: entity-key-definitions-count path: /entity-key-definitions/count operations: - name: countentitykeydefinitions method: GET description: Count entity key definitions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_type in: query type: string - name: ids in: query type: array - 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: entity-trait-definitions path: /entity-trait-definitions operations: - name: listentitytraitdefinitions method: GET description: List entity trait definitions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_type in: query type: string - name: ids in: query type: array - name: q in: query type: string - name: trait_type in: query type: string - name: trait_types in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: getorcreateentitytraitdefinition method: POST description: Get or create entity trait definition outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: entity-trait-definitions-count path: /entity-trait-definitions/count operations: - name: countentitytraitdefinitions method: GET description: Count entity trait definitions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_type in: query type: string - name: ids in: query type: array - name: q in: query type: string - name: trait_type in: query type: string - name: trait_types in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: entity-trait-definitions-entity_trait_definition_id path: /entity-trait-definitions/{entity_trait_definition_id} operations: - name: getentitytraitdefinition method: GET description: Get entity trait definition outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_trait_definition_id in: path type: string description: entity_trait_definition_id required: true - name: updateentitytraitdefinition method: PUT description: Update entity trait definition outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: entity_trait_definition_id in: path type: string description: entity_trait_definition_id required: true - name: body in: body type: object description: Request body (JSON). required: true - name: entity-trait-values path: /entity-trait-values operations: - name: getentitytraitvalues method: GET description: Get entity trait values outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: definition_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-changes path: /plan-changes operations: - name: listplanchanges method: GET description: List plan changes outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: action in: query type: string - name: base_plan_action in: query type: string - name: company_id in: query type: string - name: company_ids in: query type: array - name: plan_ids in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: plan-changes-plan_change_id path: /plan-changes/{plan_change_id} operations: - name: getplanchange method: GET description: Get plan change outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: plan_change_id in: path type: string description: plan_change_id required: true - name: plan-traits path: /plan-traits operations: - name: listplantraits method: GET description: List plan traits outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: array - name: plan_id in: query type: string - name: trait_id in: query type: string - name: trait_ids in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: plan-traits-bulk path: /plan-traits/bulk operations: - name: updateplantraitsbulk method: POST description: Update plan traits bulk outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: plan-traits-count path: /plan-traits/count operations: - name: countplantraits method: GET description: Count plan traits outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: array - name: plan_id in: query type: string - name: trait_id in: query type: string - name: trait_ids in: query type: array - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: plan-traits-plan_trait_id path: /plan-traits/{plan_trait_id} operations: - name: getplantrait method: GET description: Get plan trait outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: plan_trait_id in: path type: string description: plan_trait_id required: true - name: user-traits path: /user-traits operations: - name: upsertusertrait method: POST description: Upsert user trait outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users path: /users operations: - name: listusers method: GET description: List users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string description: Filter users by company ID (starts with comp_) - name: ids in: query type: array description: Filter users by multiple user IDs (starts with user_) - name: plan_id in: query type: string description: Filter users by plan ID (starts with plan_) - name: q in: query type: string description: Search for users by name, keys or string traits - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: upsertuser method: POST description: Upsert user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users-count path: /users/count operations: - name: countusers method: GET description: Count users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: company_id in: query type: string description: Filter users by company ID (starts with comp_) - name: ids in: query type: array description: Filter users by multiple user IDs (starts with user_) - name: plan_id in: query type: string description: Filter users by plan ID (starts with plan_) - name: q in: query type: string description: Search for users by name, keys or string traits - name: limit in: query type: integer description: Page limit (default 100) - name: offset in: query type: integer description: Page offset (default 0) - name: users-create path: /users/create operations: - name: createuser method: POST description: Create user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users-delete path: /users/delete operations: - name: deleteuserbykeys method: POST description: Delete user by keys outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: users-lookup path: /users/lookup operations: - name: lookupuser method: GET description: Lookup user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: keys in: query type: object description: Key/value pairs required: true - name: users-user_id path: /users/{user_id} operations: - name: getuser method: GET description: Get user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: user_id required: true - name: deleteuser method: DELETE description: Delete user outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: user_id in: path type: string description: user_id required: true authentication: type: apikey key: X-Schematic-Api-Key value: '{{env.SCHEMATIC_API_KEY}}' placement: header exposes: - type: rest namespace: schematic-companies-rest port: 8080 description: REST adapter for Schematic API — companies. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/companies name: companies description: REST surface for companies. operations: - method: GET name: listcompanies description: List companies call: schematic-companies.listcompanies with: credit_type_ids: rest.credit_type_ids has_scheduled_downgrade: rest.has_scheduled_downgrade ids: rest.ids monetized_subscriptions: rest.monetized_subscriptions plan_id: rest.plan_id plan_ids: rest.plan_ids plan_version_id: rest.plan_version_id q: rest.q sort_order_column: rest.sort_order_column sort_order_direction: rest.sort_order_direction subscription_statuses: rest.subscription_statuses subscription_types: rest.subscription_types with_entitlement_for: rest.with_entitlement_for without_feature_override_for: rest.without_feature_override_for without_plan: rest.without_plan without_subscription: rest.without_subscription with_subscription: rest.with_subscription limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: upsertcompany description: Upsert company call: schematic-companies.upsertcompany with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/companies/count name: companies-count description: REST surface for companies-count. operations: - method: GET name: countcompanies description: Count companies call: schematic-companies.countcompanies with: credit_type_ids: rest.credit_type_ids has_scheduled_downgrade: rest.has_scheduled_downgrade ids: rest.ids monetized_subscriptions: rest.monetized_subscriptions plan_id: rest.plan_id plan_ids: rest.plan_ids plan_version_id: rest.plan_version_id q: rest.q sort_order_column: rest.sort_order_column sort_order_direction: rest.sort_order_direction subscription_statuses: rest.subscription_statuses subscription_types: rest.subscription_types with_entitlement_for: rest.with_entitlement_for without_feature_override_for: rest.without_feature_override_for without_plan: rest.without_plan without_subscription: rest.without_subscription with_subscription: rest.with_subscription limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/companies/create name: companies-create description: REST surface for companies-create. operations: - method: POST name: createcompany description: Create company call: schematic-companies.createcompany with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/companies/delete name: companies-delete description: REST surface for companies-delete. operations: - method: POST name: deletecompanybykeys description: Delete company by keys call: schematic-companies.deletecompanybykeys with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/companies/lookup name: companies-lookup description: REST surface for companies-lookup. operations: - method: GET name: lookupcompany description: Lookup company call: schematic-companies.lookupcompany with: keys: rest.keys outputParameters: - type: object mapping: $. - path: /v1/companies/{company-id} name: companies-company-id description: REST surface for companies-company_id. operations: - method: GET name: getcompany description: Get company call: schematic-companies.getcompany with: company_id: rest.company_id outputParameters: - type: object mapping: $. - method: DELETE name: deletecompany description: Delete company call: schematic-companies.deletecompany with: company_id: rest.company_id cancel_subscription: rest.cancel_subscription prorate: rest.prorate outputParameters: - type: object mapping: $. - path: /v1/company-memberships name: company-memberships description: REST surface for company-memberships. operations: - method: GET name: listcompanymemberships description: List company memberships call: schematic-companies.listcompanymemberships with: company_id: rest.company_id user_id: rest.user_id limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: getorcreatecompanymembership description: Get or create company membership call: schematic-companies.getorcreatecompanymembership with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/company-memberships/{company-membership-id} name: company-memberships-company-membership-id description: REST surface for company-memberships-company_membership_id. operations: - method: DELETE name: deletecompanymembership description: Delete company membership call: schematic-companies.deletecompanymembership with: company_membership_id: rest.company_membership_id outputParameters: - type: object mapping: $. - path: /v1/company-subscriptions name: company-subscriptions description: REST surface for company-subscriptions. operations: - method: GET name: getactivecompanysubscription description: Get active company subscription call: schematic-companies.getactivecompanysubscription with: company_id: rest.company_id company_ids: rest.company_ids limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/company-traits name: company-traits description: REST surface for company-traits. operations: - method: POST name: upsertcompanytrait description: Upsert company trait call: schematic-companies.upsertcompanytrait with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/entity-key-definitions name: entity-key-definitions description: REST surface for entity-key-definitions. operations: - method: GET name: listentitykeydefinitions description: List entity key definitions call: schematic-companies.listentitykeydefinitions with: entity_type: rest.entity_type ids: rest.ids q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/entity-key-definitions/count name: entity-key-definitions-count description: REST surface for entity-key-definitions-count. operations: - method: GET name: countentitykeydefinitions description: Count entity key definitions call: schematic-companies.countentitykeydefinitions with: entity_type: rest.entity_type ids: rest.ids q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/entity-trait-definitions name: entity-trait-definitions description: REST surface for entity-trait-definitions. operations: - method: GET name: listentitytraitdefinitions description: List entity trait definitions call: schematic-companies.listentitytraitdefinitions with: entity_type: rest.entity_type ids: rest.ids q: rest.q trait_type: rest.trait_type trait_types: rest.trait_types limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: getorcreateentitytraitdefinition description: Get or create entity trait definition call: schematic-companies.getorcreateentitytraitdefinition with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/entity-trait-definitions/count name: entity-trait-definitions-count description: REST surface for entity-trait-definitions-count. operations: - method: GET name: countentitytraitdefinitions description: Count entity trait definitions call: schematic-companies.countentitytraitdefinitions with: entity_type: rest.entity_type ids: rest.ids q: rest.q trait_type: rest.trait_type trait_types: rest.trait_types limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/entity-trait-definitions/{entity-trait-definition-id} name: entity-trait-definitions-entity-trait-definition-id description: REST surface for entity-trait-definitions-entity_trait_definition_id. operations: - method: GET name: getentitytraitdefinition description: Get entity trait definition call: schematic-companies.getentitytraitdefinition with: entity_trait_definition_id: rest.entity_trait_definition_id outputParameters: - type: object mapping: $. - method: PUT name: updateentitytraitdefinition description: Update entity trait definition call: schematic-companies.updateentitytraitdefinition with: entity_trait_definition_id: rest.entity_trait_definition_id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/entity-trait-values name: entity-trait-values description: REST surface for entity-trait-values. operations: - method: GET name: getentitytraitvalues description: Get entity trait values call: schematic-companies.getentitytraitvalues with: definition_id: rest.definition_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-changes name: plan-changes description: REST surface for plan-changes. operations: - method: GET name: listplanchanges description: List plan changes call: schematic-companies.listplanchanges with: action: rest.action base_plan_action: rest.base_plan_action company_id: rest.company_id company_ids: rest.company_ids plan_ids: rest.plan_ids limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-changes/{plan-change-id} name: plan-changes-plan-change-id description: REST surface for plan-changes-plan_change_id. operations: - method: GET name: getplanchange description: Get plan change call: schematic-companies.getplanchange with: plan_change_id: rest.plan_change_id outputParameters: - type: object mapping: $. - path: /v1/plan-traits name: plan-traits description: REST surface for plan-traits. operations: - method: GET name: listplantraits description: List plan traits call: schematic-companies.listplantraits with: ids: rest.ids plan_id: rest.plan_id trait_id: rest.trait_id trait_ids: rest.trait_ids limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-traits/bulk name: plan-traits-bulk description: REST surface for plan-traits-bulk. operations: - method: POST name: updateplantraitsbulk description: Update plan traits bulk call: schematic-companies.updateplantraitsbulk with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/plan-traits/count name: plan-traits-count description: REST surface for plan-traits-count. operations: - method: GET name: countplantraits description: Count plan traits call: schematic-companies.countplantraits with: ids: rest.ids plan_id: rest.plan_id trait_id: rest.trait_id trait_ids: rest.trait_ids limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/plan-traits/{plan-trait-id} name: plan-traits-plan-trait-id description: REST surface for plan-traits-plan_trait_id. operations: - method: GET name: getplantrait description: Get plan trait call: schematic-companies.getplantrait with: plan_trait_id: rest.plan_trait_id outputParameters: - type: object mapping: $. - path: /v1/user-traits name: user-traits description: REST surface for user-traits. operations: - method: POST name: upsertusertrait description: Upsert user trait call: schematic-companies.upsertusertrait with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users name: users description: REST surface for users. operations: - method: GET name: listusers description: List users call: schematic-companies.listusers with: company_id: rest.company_id ids: rest.ids plan_id: rest.plan_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - method: POST name: upsertuser description: Upsert user call: schematic-companies.upsertuser with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users/count name: users-count description: REST surface for users-count. operations: - method: GET name: countusers description: Count users call: schematic-companies.countusers with: company_id: rest.company_id ids: rest.ids plan_id: rest.plan_id q: rest.q limit: rest.limit offset: rest.offset outputParameters: - type: object mapping: $. - path: /v1/users/create name: users-create description: REST surface for users-create. operations: - method: POST name: createuser description: Create user call: schematic-companies.createuser with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users/delete name: users-delete description: REST surface for users-delete. operations: - method: POST name: deleteuserbykeys description: Delete user by keys call: schematic-companies.deleteuserbykeys with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/users/lookup name: users-lookup description: REST surface for users-lookup. operations: - method: GET name: lookupuser description: Lookup user call: schematic-companies.lookupuser with: keys: rest.keys outputParameters: - type: object mapping: $. - path: /v1/users/{user-id} name: users-user-id description: REST surface for users-user_id. operations: - method: GET name: getuser description: Get user call: schematic-companies.getuser with: user_id: rest.user_id outputParameters: - type: object mapping: $. - method: DELETE name: deleteuser description: Delete user call: schematic-companies.deleteuser with: user_id: rest.user_id outputParameters: - type: object mapping: $. - type: mcp namespace: schematic-companies-mcp port: 9090 transport: http description: MCP adapter for Schematic API — companies. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-companies description: List companies hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listcompanies with: credit_type_ids: tools.credit_type_ids has_scheduled_downgrade: tools.has_scheduled_downgrade ids: tools.ids monetized_subscriptions: tools.monetized_subscriptions plan_id: tools.plan_id plan_ids: tools.plan_ids plan_version_id: tools.plan_version_id q: tools.q sort_order_column: tools.sort_order_column sort_order_direction: tools.sort_order_direction subscription_statuses: tools.subscription_statuses subscription_types: tools.subscription_types with_entitlement_for: tools.with_entitlement_for without_feature_override_for: tools.without_feature_override_for without_plan: tools.without_plan without_subscription: tools.without_subscription with_subscription: tools.with_subscription limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: upsert-company description: Upsert company hints: readOnly: false destructive: false idempotent: false call: schematic-companies.upsertcompany with: body: tools.body outputParameters: - type: object mapping: $. - name: count-companies description: Count companies hints: readOnly: true destructive: false idempotent: true call: schematic-companies.countcompanies with: credit_type_ids: tools.credit_type_ids has_scheduled_downgrade: tools.has_scheduled_downgrade ids: tools.ids monetized_subscriptions: tools.monetized_subscriptions plan_id: tools.plan_id plan_ids: tools.plan_ids plan_version_id: tools.plan_version_id q: tools.q sort_order_column: tools.sort_order_column sort_order_direction: tools.sort_order_direction subscription_statuses: tools.subscription_statuses subscription_types: tools.subscription_types with_entitlement_for: tools.with_entitlement_for without_feature_override_for: tools.without_feature_override_for without_plan: tools.without_plan without_subscription: tools.without_subscription with_subscription: tools.with_subscription limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: create-company description: Create company hints: readOnly: false destructive: false idempotent: false call: schematic-companies.createcompany with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-company-keys description: Delete company by keys hints: readOnly: false destructive: false idempotent: false call: schematic-companies.deletecompanybykeys with: body: tools.body outputParameters: - type: object mapping: $. - name: lookup-company description: Lookup company hints: readOnly: true destructive: false idempotent: true call: schematic-companies.lookupcompany with: keys: tools.keys outputParameters: - type: object mapping: $. - name: get-company description: Get company hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getcompany with: company_id: tools.company_id outputParameters: - type: object mapping: $. - name: delete-company description: Delete company hints: readOnly: false destructive: true idempotent: true call: schematic-companies.deletecompany with: company_id: tools.company_id cancel_subscription: tools.cancel_subscription prorate: tools.prorate outputParameters: - type: object mapping: $. - name: list-company-memberships description: List company memberships hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listcompanymemberships with: company_id: tools.company_id user_id: tools.user_id limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-create-company-membership description: Get or create company membership hints: readOnly: true destructive: false idempotent: false call: schematic-companies.getorcreatecompanymembership with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-company-membership description: Delete company membership hints: readOnly: false destructive: true idempotent: true call: schematic-companies.deletecompanymembership with: company_membership_id: tools.company_membership_id outputParameters: - type: object mapping: $. - name: get-active-company-subscription description: Get active company subscription hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getactivecompanysubscription with: company_id: tools.company_id company_ids: tools.company_ids limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: upsert-company-trait description: Upsert company trait hints: readOnly: false destructive: false idempotent: false call: schematic-companies.upsertcompanytrait with: body: tools.body outputParameters: - type: object mapping: $. - name: list-entity-key-definitions description: List entity key definitions hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listentitykeydefinitions with: entity_type: tools.entity_type ids: tools.ids q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: count-entity-key-definitions description: Count entity key definitions hints: readOnly: true destructive: false idempotent: true call: schematic-companies.countentitykeydefinitions with: entity_type: tools.entity_type ids: tools.ids q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: list-entity-trait-definitions description: List entity trait definitions hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listentitytraitdefinitions with: entity_type: tools.entity_type ids: tools.ids q: tools.q trait_type: tools.trait_type trait_types: tools.trait_types limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-create-entity-trait-definition description: Get or create entity trait definition hints: readOnly: true destructive: false idempotent: false call: schematic-companies.getorcreateentitytraitdefinition with: body: tools.body outputParameters: - type: object mapping: $. - name: count-entity-trait-definitions description: Count entity trait definitions hints: readOnly: true destructive: false idempotent: true call: schematic-companies.countentitytraitdefinitions with: entity_type: tools.entity_type ids: tools.ids q: tools.q trait_type: tools.trait_type trait_types: tools.trait_types limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-entity-trait-definition description: Get entity trait definition hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getentitytraitdefinition with: entity_trait_definition_id: tools.entity_trait_definition_id outputParameters: - type: object mapping: $. - name: update-entity-trait-definition description: Update entity trait definition hints: readOnly: false destructive: false idempotent: true call: schematic-companies.updateentitytraitdefinition with: entity_trait_definition_id: tools.entity_trait_definition_id body: tools.body outputParameters: - type: object mapping: $. - name: get-entity-trait-values description: Get entity trait values hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getentitytraitvalues with: definition_id: tools.definition_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: list-plan-changes description: List plan changes hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listplanchanges with: action: tools.action base_plan_action: tools.base_plan_action company_id: tools.company_id company_ids: tools.company_ids plan_ids: tools.plan_ids limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-plan-change description: Get plan change hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getplanchange with: plan_change_id: tools.plan_change_id outputParameters: - type: object mapping: $. - name: list-plan-traits description: List plan traits hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listplantraits with: ids: tools.ids plan_id: tools.plan_id trait_id: tools.trait_id trait_ids: tools.trait_ids limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: update-plan-traits-bulk description: Update plan traits bulk hints: readOnly: false destructive: false idempotent: false call: schematic-companies.updateplantraitsbulk with: body: tools.body outputParameters: - type: object mapping: $. - name: count-plan-traits description: Count plan traits hints: readOnly: true destructive: false idempotent: true call: schematic-companies.countplantraits with: ids: tools.ids plan_id: tools.plan_id trait_id: tools.trait_id trait_ids: tools.trait_ids limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: get-plan-trait description: Get plan trait hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getplantrait with: plan_trait_id: tools.plan_trait_id outputParameters: - type: object mapping: $. - name: upsert-user-trait description: Upsert user trait hints: readOnly: false destructive: false idempotent: false call: schematic-companies.upsertusertrait with: body: tools.body outputParameters: - type: object mapping: $. - name: list-users description: List users hints: readOnly: true destructive: false idempotent: true call: schematic-companies.listusers with: company_id: tools.company_id ids: tools.ids plan_id: tools.plan_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: upsert-user description: Upsert user hints: readOnly: false destructive: false idempotent: false call: schematic-companies.upsertuser with: body: tools.body outputParameters: - type: object mapping: $. - name: count-users description: Count users hints: readOnly: true destructive: false idempotent: true call: schematic-companies.countusers with: company_id: tools.company_id ids: tools.ids plan_id: tools.plan_id q: tools.q limit: tools.limit offset: tools.offset outputParameters: - type: object mapping: $. - name: create-user description: Create user hints: readOnly: false destructive: false idempotent: false call: schematic-companies.createuser with: body: tools.body outputParameters: - type: object mapping: $. - name: delete-user-keys description: Delete user by keys hints: readOnly: false destructive: false idempotent: false call: schematic-companies.deleteuserbykeys with: body: tools.body outputParameters: - type: object mapping: $. - name: lookup-user description: Lookup user hints: readOnly: true destructive: false idempotent: true call: schematic-companies.lookupuser with: keys: tools.keys outputParameters: - type: object mapping: $. - name: get-user description: Get user hints: readOnly: true destructive: false idempotent: true call: schematic-companies.getuser with: user_id: tools.user_id outputParameters: - type: object mapping: $. - name: delete-user description: Delete user hints: readOnly: false destructive: true idempotent: true call: schematic-companies.deleteuser with: user_id: tools.user_id outputParameters: - type: object mapping: $.