Gravitee · Capability

Gravitee Finops Bridge

Pulls Gravitee analytics — request counts, latency percentiles, error rates, AI-token consumption, per-app + per-plan usage — into Naftiko's per-call cost attribution model. Closes the loop between "Gravitee gateway saw N requests + M tokens" and "Naftiko knows what each capability call cost the customer."

Run with Naftiko NaftikoGraviteePartnershipAnalyticsFinOpsCost-Attribution

What You Can Do

GET
Get env analytics
/environments/{env_id}/analytics
GET
Get api analytics
/environments/{env_id}/apis/{api_id}/analytics
GET
Get ai token usage
/environments/{env_id}/ai/token-usage
GET
Get subscription usage
/environments/{env_id}/apis/{api_id}/subscriptions/{sub_id}/analytics
GET
List audit events
/environments/{env_id}/audit

MCP Tools

get-env-analytics

Get environment-level analytics from Gravitee (request counts, latency, errors, status codes).

read-only
get-api-analytics

Get per-API analytics from Gravitee (request counts, latency, errors).

read-only
get-ai-token-usage

Get Gravitee AI/LLM token usage stats per model + period (drives Naftiko AI cost attribution).

read-only
get-subscription-usage

Get per-subscription usage analytics (drives per-customer cost rollup).

read-only
list-audit-events

List Gravitee audit events for compliance + change attribution.

read-only

Capability Spec

gravitee-finops-bridge.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  title: Gravitee FinOps Bridge
  description: >-
    Pulls Gravitee analytics — request counts, latency percentiles,
    error rates, AI-token consumption, per-app + per-plan usage —
    into Naftiko's per-call cost attribution model. Closes the loop
    between "Gravitee gateway saw N requests + M tokens" and
    "Naftiko knows what each capability call cost the customer."
  tags:
    - Naftiko
    - Gravitee
    - Partnership
    - Analytics
    - FinOps
    - Cost-Attribution
  created: '2026-05-15'
  modified: '2026-05-15'

binds:
  - namespace: gravitee-env
    description: Gravitee APIM Management endpoint + token.
    keys:
      GRAVITEE_APIM_BASE: GRAVITEE_APIM_BASE
      GRAVITEE_APIM_TOKEN: GRAVITEE_APIM_TOKEN

capability:
  consumes:
    - namespace: gravitee
      type: http
      baseUri: '{{GRAVITEE_APIM_BASE}}'
      authentication:
        type: bearer
        token: '{{GRAVITEE_APIM_TOKEN}}'
      resources:
        - name: env-analytics
          path: '/management/v2/environments/{{env_id}}/analytics'
          operations:
            - name: get-env-analytics
              method: GET
              inputParameters:
                - { name: env_id, in: path, required: true }
                - { name: from, in: query, required: false }
                - { name: to, in: query, required: false }
                - { name: type, in: query, required: false }
        - name: api-analytics
          path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/analytics'
          operations:
            - name: get-api-analytics
              method: GET
              inputParameters:
                - { name: env_id, in: path, required: true }
                - { name: api_id, in: path, required: true }
                - { name: from, in: query, required: false }
                - { name: to, in: query, required: false }
                - { name: type, in: query, required: false }
        - name: ai-token-usage
          path: '/management/v2/environments/{{env_id}}/ai/token-usage'
          operations:
            - name: get-ai-token-usage
              method: GET
              inputParameters:
                - { name: env_id, in: path, required: true }
                - { name: from, in: query, required: false }
                - { name: to, in: query, required: false }
                - { name: model, in: query, required: false }
        - name: subscription-usage
          path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/subscriptions/{{sub_id}}/analytics'
          operations:
            - name: get-subscription-usage
              method: GET
              inputParameters:
                - { name: env_id, in: path, required: true }
                - { name: api_id, in: path, required: true }
                - { name: sub_id, in: path, required: true }
                - { name: from, in: query, required: false }
                - { name: to, in: query, required: false }
        - name: audit
          path: '/management/v2/environments/{{env_id}}/audit'
          operations:
            - name: list-audit-events
              method: GET
              inputParameters:
                - { name: env_id, in: path, required: true }
                - { name: from, in: query, required: false }
                - { name: to, in: query, required: false }

  exposes:
    - type: rest
      address: 0.0.0.0
      port: 8080
      namespace: gravitee-finops-bridge-rest
      description: REST surface for pulling Gravitee analytics + AI token usage into Naftiko cost attribution.
      resources:
        - name: env-analytics
          path: '/environments/{env_id}/analytics'
          operations:
            - name: get-env-analytics
              method: GET
              inputParameters:
                - { name: env_id, in: path, type: string, required: true }
                - { name: from, in: query, type: string, required: false }
                - { name: to, in: query, type: string, required: false }
                - { name: type, in: query, type: string, required: false }
              call: gravitee.get-env-analytics
        - name: api-analytics
          path: '/environments/{env_id}/apis/{api_id}/analytics'
          operations:
            - name: get-api-analytics
              method: GET
              inputParameters:
                - { name: env_id, in: path, type: string, required: true }
                - { name: api_id, in: path, type: string, required: true }
                - { name: from, in: query, type: string, required: false }
                - { name: to, in: query, type: string, required: false }
                - { name: type, in: query, type: string, required: false }
              call: gravitee.get-api-analytics
        - name: ai-token-usage
          path: '/environments/{env_id}/ai/token-usage'
          operations:
            - name: get-ai-token-usage
              method: GET
              inputParameters:
                - { name: env_id, in: path, type: string, required: true }
                - { name: from, in: query, type: string, required: false }
                - { name: to, in: query, type: string, required: false }
                - { name: model, in: query, type: string, required: false }
              call: gravitee.get-ai-token-usage
        - name: subscription-usage
          path: '/environments/{env_id}/apis/{api_id}/subscriptions/{sub_id}/analytics'
          operations:
            - name: get-subscription-usage
              method: GET
              inputParameters:
                - { name: env_id, in: path, type: string, required: true }
                - { name: api_id, in: path, type: string, required: true }
                - { name: sub_id, in: path, type: string, required: true }
                - { name: from, in: query, type: string, required: false }
                - { name: to, in: query, type: string, required: false }
              call: gravitee.get-subscription-usage
        - name: audit
          path: '/environments/{env_id}/audit'
          operations:
            - name: list-audit-events
              method: GET
              inputParameters:
                - { name: env_id, in: path, type: string, required: true }
                - { name: from, in: query, type: string, required: false }
                - { name: to, in: query, type: string, required: false }
              call: gravitee.list-audit-events

    - type: mcp
      address: 0.0.0.0
      port: 3010
      namespace: gravitee-finops-bridge-mcp
      description: MCP server exposing Gravitee analytics + AI token usage as agent-callable cost-attribution tools.
      tools:
        - name: get-env-analytics
          description: Get environment-level analytics from Gravitee (request counts, latency, errors, status codes).
          hints: { readOnly: true }
          inputParameters:
            - { name: env_id, type: string, required: true }
            - { name: from, type: string, required: false }
            - { name: to, type: string, required: false }
            - { name: type, type: string, required: false }
          call: gravitee.get-env-analytics
        - name: get-api-analytics
          description: Get per-API analytics from Gravitee (request counts, latency, errors).
          hints: { readOnly: true }
          inputParameters:
            - { name: env_id, type: string, required: true }
            - { name: api_id, type: string, required: true }
            - { name: from, type: string, required: false }
            - { name: to, type: string, required: false }
            - { name: type, type: string, required: false }
          call: gravitee.get-api-analytics
        - name: get-ai-token-usage
          description: Get Gravitee AI/LLM token usage stats per model + period (drives Naftiko AI cost attribution).
          hints: { readOnly: true }
          inputParameters:
            - { name: env_id, type: string, required: true }
            - { name: from, type: string, required: false }
            - { name: to, type: string, required: false }
            - { name: model, type: string, required: false }
          call: gravitee.get-ai-token-usage
        - name: get-subscription-usage
          description: Get per-subscription usage analytics (drives per-customer cost rollup).
          hints: { readOnly: true }
          inputParameters:
            - { name: env_id, type: string, required: true }
            - { name: api_id, type: string, required: true }
            - { name: sub_id, type: string, required: true }
            - { name: from, type: string, required: false }
            - { name: to, type: string, required: false }
          call: gravitee.get-subscription-usage
        - name: list-audit-events
          description: List Gravitee audit events for compliance + change attribution.
          hints: { readOnly: true }
          inputParameters:
            - { name: env_id, type: string, required: true }
            - { name: from, type: string, required: false }
            - { name: to, type: string, required: false }
          call: gravitee.list-audit-events