Trelica · Capability

Trelica SaaS Management

Unified capability for IT teams to discover, manage, and optimize SaaS applications across the organization. Combines application discovery, user license tracking, contract management, workflow automation, and audit logging in a single workflow-oriented interface.

Run with Naftiko Contract ManagementIT ManagementLicense ManagementSaaS ManagementSoftware Asset Management

What You Can Do

GET
List applications — List all SaaS applications in the portfolio
/v1/applications
GET
Get application — Get application details and metadata
/v1/applications/{appId}
GET
List application users — List users for license optimization analysis
/v1/applications/{appId}/users
GET
List people — List people for access review and offboarding
/v1/people
POST
Create person — Onboard a new employee
/v1/people
GET
Get person — Get employee details and application access
/v1/people/{personId}
PATCH
Update person — Update employee record during lifecycle events
/v1/people/{personId}
GET
List contracts — List contracts for renewal planning
/v1/contracts
GET
Get contract — Get contract details and renewal dates
/v1/contracts/{contractId}
GET
List workflows — List automation workflows
/v1/workflows
GET
List assets — List managed assets
/v1/assets
GET
List audit logs — List audit events for compliance reporting
/v1/audit-logs
GET
List users — List users for provisioning workflows
/v1/users

MCP Tools

list-applications

List all SaaS applications in the portfolio. Use for application discovery, spend analysis, and license optimization.

read-only
get-application

Get detailed information about a specific SaaS application including user count and cost.

read-only
list-application-users

List users of an application for license optimization. Identify inactive users and reduce spend.

read-only
list-people

List employees for access reviews, onboarding/offboarding, and license right-sizing.

read-only
get-person

Get employee details including their SaaS application access and licenses.

read-only
create-person

Onboard a new employee and initialize their software access workflow.

update-person

Update an employee record for department transfers, role changes, or offboarding.

idempotent
list-contracts

List software contracts for renewal planning and spend management.

read-only
get-contract

Get contract details including renewal date and annual value for negotiation planning.

read-only
list-workflows

List IT automation workflows for onboarding, offboarding, and access management.

read-only
list-assets

List software and hardware assets for asset management and compliance.

read-only
list-audit-logs

List audit log entries for compliance reporting, change tracking, and governance.

read-only
list-users

List users via SCIM 2.0 for provisioning integrations and directory sync.

read-only

Capability Spec

saas-management.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Trelica SaaS Management
  description: Unified capability for IT teams to discover, manage, and optimize SaaS applications across the organization.
    Combines application discovery, user license tracking, contract management, workflow automation, and audit logging in
    a single workflow-oriented interface.
  tags:
  - Contract Management
  - IT Management
  - License Management
  - SaaS Management
  - Software Asset Management
  created: '2026-05-03'
  modified: '2026-05-06'
binds:
- namespace: env
  keys:
    TRELICA_ACCESS_TOKEN: TRELICA_ACCESS_TOKEN
capability:
  consumes:
  - type: http
    namespace: trelica
    baseUri: https://app.trelica.com/api
    description: Trelica SaaS management REST API
    authentication:
      type: bearer
      token: '{{TRELICA_ACCESS_TOKEN}}'
    resources:
    - name: applications
      path: /apps/v1
      description: SaaS applications tracked in Trelica
      operations:
      - name: list-applications
        method: GET
        description: List SaaS applications
        inputParameters:
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        - name: since
          in: query
          type: string
          required: false
          description: Filter by modification date
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: application-detail
      path: /apps/v1/{appId}
      description: Single SaaS application
      operations:
      - name: get-application
        method: GET
        description: Get application details
        inputParameters:
        - name: appId
          in: path
          type: string
          required: true
          description: Application identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: application-users
      path: /apps/v1/{appId}/users
      description: Users of a specific application
      operations:
      - name: list-application-users
        method: GET
        description: List users for a specific application
        inputParameters:
        - name: appId
          in: path
          type: string
          required: true
          description: Application identifier
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        - name: since
          in: query
          type: string
          required: false
          description: Filter by modification date
        - name: filter
          in: query
          type: string
          required: false
          description: SCIM-style filter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: people
      path: /people/v1
      description: People (employees) in the organization
      operations:
      - name: list-people
        method: GET
        description: List people in the organization
        inputParameters:
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        - name: since
          in: query
          type: string
          required: false
          description: Filter by modification date
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: create-person
        method: POST
        description: Create a new person record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            displayName: '{{tools.displayName}}'
            email: '{{tools.email}}'
            department: '{{tools.department}}'
            jobTitle: '{{tools.jobTitle}}'
            active: '{{tools.active}}'
    - name: person-detail
      path: /people/v1/{personId}
      description: Single person record
      operations:
      - name: get-person
        method: GET
        description: Get person details
        inputParameters:
        - name: personId
          in: path
          type: string
          required: true
          description: Person identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: update-person
        method: PATCH
        description: Update person record
        inputParameters:
        - name: personId
          in: path
          type: string
          required: true
          description: Person identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            displayName: '{{tools.displayName}}'
            email: '{{tools.email}}'
            department: '{{tools.department}}'
            jobTitle: '{{tools.jobTitle}}'
            active: '{{tools.active}}'
    - name: contracts
      path: /contracts/v1
      description: Software contracts managed in Trelica
      operations:
      - name: list-contracts
        method: GET
        description: List software contracts
        inputParameters:
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: contract-detail
      path: /contracts/v1/{contractId}
      description: Single contract record
      operations:
      - name: get-contract
        method: GET
        description: Get contract details
        inputParameters:
        - name: contractId
          in: path
          type: string
          required: true
          description: Contract identifier
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: workflows
      path: /workflows/v1
      description: Automation workflows in Trelica
      operations:
      - name: list-workflows
        method: GET
        description: List automation workflows
        inputParameters:
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: assets
      path: /assets/v1
      description: Software and hardware assets
      operations:
      - name: list-assets
        method: GET
        description: List assets
        inputParameters:
        - name: q
          in: query
          type: string
          required: false
          description: Free-text search
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: audit-log
      path: /audit/v1
      description: Audit trail of all platform events
      operations:
      - name: list-audit-logs
        method: GET
        description: List audit log entries
        inputParameters:
        - name: since
          in: query
          type: string
          required: false
          description: Return entries after this date/time
        - name: after
          in: query
          type: string
          required: false
          description: Pagination cursor
        - name: limit
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: scim-users
      path: /scim/v2/Users
      description: User provisioning via SCIM 2.0
      operations:
      - name: list-scim-users
        method: GET
        description: List users using SCIM 2.0 protocol
        inputParameters:
        - name: startIndex
          in: query
          type: integer
          required: false
          description: 1-based start index (default 1)
        - name: count
          in: query
          type: integer
          required: false
          description: Max results (default 100)
        - name: filter
          in: query
          type: string
          required: false
          description: SCIM filter expression
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: trelica-saas-management-api
    description: Unified REST API for SaaS portfolio management.
    resources:
    - path: /v1/applications
      name: applications
      description: Discovered and managed SaaS applications
      operations:
      - method: GET
        name: list-applications
        description: List all SaaS applications in the portfolio
        call: trelica.list-applications
        with:
          q: rest.q
          after: rest.after
          limit: rest.limit
          since: rest.since
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/applications/{appId}
      name: application-detail
      description: Single SaaS application detail
      operations:
      - method: GET
        name: get-application
        description: Get application details and metadata
        call: trelica.get-application
        with:
          appId: rest.appId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/applications/{appId}/users
      name: application-users
      description: Users and license utilization for an application
      operations:
      - method: GET
        name: list-application-users
        description: List users for license optimization analysis
        call: trelica.list-application-users
        with:
          appId: rest.appId
          q: rest.q
          after: rest.after
          limit: rest.limit
          since: rest.since
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/people
      name: people
      description: Employees and their SaaS access
      operations:
      - method: GET
        name: list-people
        description: List people for access review and offboarding
        call: trelica.list-people
        with:
          q: rest.q
          after: rest.after
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create-person
        description: Onboard a new employee
        call: trelica.create-person
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/people/{personId}
      name: person-detail
      description: Single employee record
      operations:
      - method: GET
        name: get-person
        description: Get employee details and application access
        call: trelica.get-person
        with:
          personId: rest.personId
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: update-person
        description: Update employee record during lifecycle events
        call: trelica.update-person
        with:
          personId: rest.personId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/contracts
      name: contracts
      description: Software contracts and renewal management
      operations:
      - method: GET
        name: list-contracts
        description: List contracts for renewal planning
        call: trelica.list-contracts
        with:
          q: rest.q
          after: rest.after
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/contracts/{contractId}
      name: contract-detail
      description: Single contract record
      operations:
      - method: GET
        name: get-contract
        description: Get contract details and renewal dates
        call: trelica.get-contract
        with:
          contractId: rest.contractId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/workflows
      name: workflows
      description: IT automation workflows
      operations:
      - method: GET
        name: list-workflows
        description: List automation workflows
        call: trelica.list-workflows
        with:
          q: rest.q
          after: rest.after
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/assets
      name: assets
      description: Software and hardware assets
      operations:
      - method: GET
        name: list-assets
        description: List managed assets
        call: trelica.list-assets
        with:
          q: rest.q
          after: rest.after
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/audit-logs
      name: audit-logs
      description: Audit trail for compliance and governance
      operations:
      - method: GET
        name: list-audit-logs
        description: List audit events for compliance reporting
        call: trelica.list-audit-logs
        with:
          since: rest.since
          after: rest.after
          limit: rest.limit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users
      name: users
      description: User directory via SCIM
      operations:
      - method: GET
        name: list-users
        description: List users for provisioning workflows
        call: trelica.list-scim-users
        with:
          startIndex: rest.startIndex
          count: rest.count
          filter: rest.filter
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: trelica-saas-management-mcp
    transport: http
    description: MCP server for AI-assisted SaaS portfolio management and license optimization.
    tools:
    - name: list-applications
      description: List all SaaS applications in the portfolio. Use for application discovery, spend analysis, and license
        optimization.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-applications
      with:
        q: tools.q
        after: tools.after
        limit: tools.limit
        since: tools.since
      outputParameters:
      - type: object
        mapping: $.
    - name: get-application
      description: Get detailed information about a specific SaaS application including user count and cost.
      hints:
        readOnly: true
        openWorld: false
      call: trelica.get-application
      with:
        appId: tools.appId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-application-users
      description: List users of an application for license optimization. Identify inactive users and reduce spend.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-application-users
      with:
        appId: tools.appId
        q: tools.q
        since: tools.since
        after: tools.after
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: list-people
      description: List employees for access reviews, onboarding/offboarding, and license right-sizing.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-people
      with:
        q: tools.q
        after: tools.after
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-person
      description: Get employee details including their SaaS application access and licenses.
      hints:
        readOnly: true
        openWorld: false
      call: trelica.get-person
      with:
        personId: tools.personId
      outputParameters:
      - type: object
        mapping: $.
    - name: create-person
      description: Onboard a new employee and initialize their software access workflow.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: trelica.create-person
      with:
        displayName: tools.displayName
        email: tools.email
        department: tools.department
        jobTitle: tools.jobTitle
        active: tools.active
      outputParameters:
      - type: object
        mapping: $.
    - name: update-person
      description: Update an employee record for department transfers, role changes, or offboarding.
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: trelica.update-person
      with:
        personId: tools.personId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-contracts
      description: List software contracts for renewal planning and spend management.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-contracts
      with:
        q: tools.q
        after: tools.after
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: get-contract
      description: Get contract details including renewal date and annual value for negotiation planning.
      hints:
        readOnly: true
        openWorld: false
      call: trelica.get-contract
      with:
        contractId: tools.contractId
      outputParameters:
      - type: object
        mapping: $.
    - name: list-workflows
      description: List IT automation workflows for onboarding, offboarding, and access management.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-workflows
      with:
        q: tools.q
        after: tools.after
      outputParameters:
      - type: object
        mapping: $.
    - name: list-assets
      description: List software and hardware assets for asset management and compliance.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-assets
      with:
        q: tools.q
        after: tools.after
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: list-audit-logs
      description: List audit log entries for compliance reporting, change tracking, and governance.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-audit-logs
      with:
        since: tools.since
        after: tools.after
        limit: tools.limit
      outputParameters:
      - type: object
        mapping: $.
    - name: list-users
      description: List users via SCIM 2.0 for provisioning integrations and directory sync.
      hints:
        readOnly: true
        openWorld: true
      call: trelica.list-scim-users
      with:
        startIndex: tools.startIndex
        count: tools.count
        filter: tools.filter
      outputParameters:
      - type: object
        mapping: $.