OpenObserve · Capability

openobserve — Metrics

openobserve — Metrics. 9 operations. Lead operation: Ingest metrics via JSON. Self-contained Naftiko capability covering one Openobserve business surface.

Run with Naftiko OpenobserveMetrics

What You Can Do

POST
Metricsingestionjson — Ingest metrics via JSON
/v1/api/{org-id}/ingest/metrics/json
GET
Prometheusformatquery — Format Prometheus query
/v1/api/{org-id}/prometheus/api/v1/format-query
GET
Prometheuslabelvalues — Get label values
/v1/api/{org-id}/prometheus/api/v1/label/{label-name}/values
GET
Prometheuslabels — Get metric label names
/v1/api/{org-id}/prometheus/api/v1/labels
GET
Prometheusmetadata — Get metric metadata
/v1/api/{org-id}/prometheus/api/v1/metadata
GET
Prometheusquery — Execute Prometheus instant query
/v1/api/{org-id}/prometheus/api/v1/query
GET
Prometheusrangequery — Execute Prometheus range query
/v1/api/{org-id}/prometheus/api/v1/query-range
GET
Prometheusseries — Find metric series
/v1/api/{org-id}/prometheus/api/v1/series
POST
Prometheusremotewrite — Ingest Prometheus metrics
/v1/api/{org-id}/prometheus/api/v1/write

MCP Tools

ingest-metrics-json

Ingest metrics via JSON

format-prometheus-query

Format Prometheus query

read-only idempotent
get-label-values

Get label values

read-only idempotent
get-metric-label-names

Get metric label names

read-only idempotent
get-metric-metadata

Get metric metadata

read-only idempotent
execute-prometheus-instant-query

Execute Prometheus instant query

read-only idempotent
execute-prometheus-range-query

Execute Prometheus range query

read-only idempotent
find-metric-series

Find metric series

read-only idempotent
ingest-prometheus-metrics

Ingest Prometheus metrics

Capability Spec

openobserve-metrics.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: openobserve — Metrics
  description: 'openobserve — Metrics. 9 operations. Lead operation: Ingest metrics via JSON. Self-contained Naftiko capability
    covering one Openobserve business surface.'
  tags:
  - Openobserve
  - Metrics
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    OPENOBSERVE_API_KEY: OPENOBSERVE_API_KEY
capability:
  consumes:
  - type: http
    namespace: openobserve-metrics
    baseUri: ''
    description: openobserve — Metrics business capability. Self-contained, no shared references.
    resources:
    - name: api-org_id-ingest-metrics-_json
      path: /api/{org_id}/ingest/metrics/_json
      operations:
      - name: metricsingestionjson
        method: POST
        description: Ingest metrics via JSON
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: api-org_id-prometheus-api-v1-format_query
      path: /api/{org_id}/prometheus/api/v1/format_query
      operations:
      - name: prometheusformatquery
        method: GET
        description: Format Prometheus query
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: query
          in: query
          type: string
          description: Prometheus expression query string.
          required: true
        - name: org_id
          in: path
          type: string
          required: true
    - name: api-org_id-prometheus-api-v1-label-label_name-values
      path: /api/{org_id}/prometheus/api/v1/label/{label_name}/values
      operations:
      - name: prometheuslabelvalues
        method: GET
        description: Get label values
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: label_name
          in: path
          type: string
          description: Label name
          required: true
        - name: match[]
          in: query
          type: string
          description: Series selector argument that selects the series from which to read the label values
          required: true
        - name: start
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: Start timestamp'
        - name: end
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: End timestamp'
    - name: api-org_id-prometheus-api-v1-labels
      path: /api/{org_id}/prometheus/api/v1/labels
      operations:
      - name: prometheuslabels
        method: GET
        description: Get metric label names
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: match[]
          in: query
          type: string
          description: Series selector argument that selects the series from which to read the label names
          required: true
        - name: start
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: Start timestamp'
        - name: end
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: End timestamp'
    - name: api-org_id-prometheus-api-v1-metadata
      path: /api/{org_id}/prometheus/api/v1/metadata
      operations:
      - name: prometheusmetadata
        method: GET
        description: Get metric metadata
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: limit
          in: query
          type: string
          description: Maximum number of metrics to return
          required: true
        - name: metric
          in: query
          type: string
          description: A metric name to filter metadata for. All metric metadata is retrieved if left empty
    - name: api-org_id-prometheus-api-v1-query
      path: /api/{org_id}/prometheus/api/v1/query
      operations:
      - name: prometheusquery
        method: GET
        description: Execute Prometheus instant query
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: query
          in: query
          type: string
          description: Prometheus expression query string
          required: true
        - name: time
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: Evaluation timestamp. Optional'
        - name: timeout
          in: query
          type: string
          description: Evaluation timeout
    - name: api-org_id-prometheus-api-v1-query_range
      path: /api/{org_id}/prometheus/api/v1/query_range
      operations:
      - name: prometheusrangequery
        method: GET
        description: Execute Prometheus range query
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: query
          in: query
          type: string
          description: Prometheus expression query string
          required: true
        - name: start
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: Start timestamp, inclusive'
          required: true
        - name: end
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: End timestamp, inclusive'
          required: true
        - name: step
          in: query
          type: string
          description: Query resolution step width in duration format or float number of seconds
        - name: timeout
          in: query
          type: string
          description: Evaluation timeout
    - name: api-org_id-prometheus-api-v1-series
      path: /api/{org_id}/prometheus/api/v1/series
      operations:
      - name: prometheusseries
        method: GET
        description: Find metric series
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: match[]
          in: query
          type: string
          description: '<series_selector>: Series selector argument that selects the series to return'
          required: true
        - name: start
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: Start timestamp'
        - name: end
          in: query
          type: string
          description: '<rfc3339 | unix_timestamp>: End timestamp'
    - name: api-org_id-prometheus-api-v1-write
      path: /api/{org_id}/prometheus/api/v1/write
      operations:
      - name: prometheusremotewrite
        method: POST
        description: Ingest Prometheus metrics
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: org_id
          in: path
          type: string
          description: Organization name
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.OPENOBSERVE_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: openobserve-metrics-rest
    port: 8080
    description: REST adapter for openobserve — Metrics. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/api/{org-id}/ingest/metrics/json
      name: api-org-id-ingest-metrics-json
      description: REST surface for api-org_id-ingest-metrics-_json.
      operations:
      - method: POST
        name: metricsingestionjson
        description: Ingest metrics via JSON
        call: openobserve-metrics.metricsingestionjson
        with:
          org_id: rest.org_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/format-query
      name: api-org-id-prometheus-api-v1-format-query
      description: REST surface for api-org_id-prometheus-api-v1-format_query.
      operations:
      - method: GET
        name: prometheusformatquery
        description: Format Prometheus query
        call: openobserve-metrics.prometheusformatquery
        with:
          query: rest.query
          org_id: rest.org_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/label/{label-name}/values
      name: api-org-id-prometheus-api-v1-label-label-name-values
      description: REST surface for api-org_id-prometheus-api-v1-label-label_name-values.
      operations:
      - method: GET
        name: prometheuslabelvalues
        description: Get label values
        call: openobserve-metrics.prometheuslabelvalues
        with:
          org_id: rest.org_id
          label_name: rest.label_name
          match[]: rest.match[]
          start: rest.start
          end: rest.end
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/labels
      name: api-org-id-prometheus-api-v1-labels
      description: REST surface for api-org_id-prometheus-api-v1-labels.
      operations:
      - method: GET
        name: prometheuslabels
        description: Get metric label names
        call: openobserve-metrics.prometheuslabels
        with:
          org_id: rest.org_id
          match[]: rest.match[]
          start: rest.start
          end: rest.end
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/metadata
      name: api-org-id-prometheus-api-v1-metadata
      description: REST surface for api-org_id-prometheus-api-v1-metadata.
      operations:
      - method: GET
        name: prometheusmetadata
        description: Get metric metadata
        call: openobserve-metrics.prometheusmetadata
        with:
          org_id: rest.org_id
          limit: rest.limit
          metric: rest.metric
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/query
      name: api-org-id-prometheus-api-v1-query
      description: REST surface for api-org_id-prometheus-api-v1-query.
      operations:
      - method: GET
        name: prometheusquery
        description: Execute Prometheus instant query
        call: openobserve-metrics.prometheusquery
        with:
          org_id: rest.org_id
          query: rest.query
          time: rest.time
          timeout: rest.timeout
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/query-range
      name: api-org-id-prometheus-api-v1-query-range
      description: REST surface for api-org_id-prometheus-api-v1-query_range.
      operations:
      - method: GET
        name: prometheusrangequery
        description: Execute Prometheus range query
        call: openobserve-metrics.prometheusrangequery
        with:
          org_id: rest.org_id
          query: rest.query
          start: rest.start
          end: rest.end
          step: rest.step
          timeout: rest.timeout
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/series
      name: api-org-id-prometheus-api-v1-series
      description: REST surface for api-org_id-prometheus-api-v1-series.
      operations:
      - method: GET
        name: prometheusseries
        description: Find metric series
        call: openobserve-metrics.prometheusseries
        with:
          org_id: rest.org_id
          match[]: rest.match[]
          start: rest.start
          end: rest.end
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/{org-id}/prometheus/api/v1/write
      name: api-org-id-prometheus-api-v1-write
      description: REST surface for api-org_id-prometheus-api-v1-write.
      operations:
      - method: POST
        name: prometheusremotewrite
        description: Ingest Prometheus metrics
        call: openobserve-metrics.prometheusremotewrite
        with:
          org_id: rest.org_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: openobserve-metrics-mcp
    port: 9090
    transport: http
    description: MCP adapter for openobserve — Metrics. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: ingest-metrics-json
      description: Ingest metrics via JSON
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openobserve-metrics.metricsingestionjson
      with:
        org_id: tools.org_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: format-prometheus-query
      description: Format Prometheus query
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheusformatquery
      with:
        query: tools.query
        org_id: tools.org_id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-label-values
      description: Get label values
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheuslabelvalues
      with:
        org_id: tools.org_id
        label_name: tools.label_name
        match[]: tools.match[]
        start: tools.start
        end: tools.end
      outputParameters:
      - type: object
        mapping: $.
    - name: get-metric-label-names
      description: Get metric label names
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheuslabels
      with:
        org_id: tools.org_id
        match[]: tools.match[]
        start: tools.start
        end: tools.end
      outputParameters:
      - type: object
        mapping: $.
    - name: get-metric-metadata
      description: Get metric metadata
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheusmetadata
      with:
        org_id: tools.org_id
        limit: tools.limit
        metric: tools.metric
      outputParameters:
      - type: object
        mapping: $.
    - name: execute-prometheus-instant-query
      description: Execute Prometheus instant query
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheusquery
      with:
        org_id: tools.org_id
        query: tools.query
        time: tools.time
        timeout: tools.timeout
      outputParameters:
      - type: object
        mapping: $.
    - name: execute-prometheus-range-query
      description: Execute Prometheus range query
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheusrangequery
      with:
        org_id: tools.org_id
        query: tools.query
        start: tools.start
        end: tools.end
        step: tools.step
        timeout: tools.timeout
      outputParameters:
      - type: object
        mapping: $.
    - name: find-metric-series
      description: Find metric series
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openobserve-metrics.prometheusseries
      with:
        org_id: tools.org_id
        match[]: tools.match[]
        start: tools.start
        end: tools.end
      outputParameters:
      - type: object
        mapping: $.
    - name: ingest-prometheus-metrics
      description: Ingest Prometheus metrics
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openobserve-metrics.prometheusremotewrite
      with:
        org_id: tools.org_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.