naftiko: 1.0.0-alpha2 info: label: Grafana Tempo HTTP API description: 'Grafana Tempo HTTP API. 10 operations. Lead operation: Echo endpoint. Self-contained Naftiko capability covering one Grafana Tempo business surface.' tags: - Grafana Tempo - Grafana Tempo HTTP API created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: GRAFANA_TEMPO_API_KEY: GRAFANA_TEMPO_API_KEY capability: consumes: - type: http namespace: tempo-http baseUri: http://localhost:3200 description: Grafana Tempo HTTP API business capability. Self-contained, no shared references. resources: - name: api-echo path: /api/echo operations: - name: echo method: GET description: Echo endpoint outputRawFormat: json outputParameters: - name: result type: object value: $. - name: api-metrics-summary path: /api/metrics/summary operations: - name: getmetricssummary method: GET description: Get metrics summary outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: q in: query type: string description: TraceQL query to compute metrics from required: true - name: groupBy in: query type: string description: Attribute to group metrics by - name: start in: query type: integer - name: end in: query type: integer - name: api-search path: /api/search operations: - name: searchtraces method: GET description: Search for traces outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: q in: query type: string description: TraceQL query string - name: tags in: query type: string description: Tag-based search in logfmt format, e.g. "service.name=myservice error=true" - name: minDuration in: query type: string description: Minimum trace duration, e.g. "1.5s" or "500ms" - name: maxDuration in: query type: string description: Maximum trace duration - name: limit in: query type: integer description: Maximum number of traces to return - name: start in: query type: integer description: Start of time range in Unix epoch seconds - name: end in: query type: integer description: End of time range in Unix epoch seconds - name: spss in: query type: integer description: Spans per span set, limits spans returned per set - name: api-search-tag-tagName-values path: /api/search/tag/{tagName}/values operations: - name: getsearchtagvalues method: GET description: Get values for a tag outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tagName in: path type: string description: The tag name to lookup values for required: true - name: q in: query type: string description: TraceQL query to filter values by - name: start in: query type: integer description: Start of time range in Unix epoch seconds - name: end in: query type: integer description: End of time range in Unix epoch seconds - name: api-search-tags path: /api/search/tags operations: - name: getsearchtags method: GET description: Get search tag names outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: scope in: query type: string description: Scope of tags to return (resource, span, or intrinsic) - name: start in: query type: integer description: Start of time range in Unix epoch seconds - name: end in: query type: integer description: End of time range in Unix epoch seconds - name: api-traces-traceID path: /api/traces/{traceID} operations: - name: gettracebyid method: GET description: Get trace by ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: traceID in: path type: string description: Trace ID in hex format required: true - name: start in: query type: integer description: Start of time range in Unix epoch seconds - name: end in: query type: integer description: End of time range in Unix epoch seconds - name: api-v2-search-tag-tagName-values path: /api/v2/search/tag/{tagName}/values operations: - name: getsearchtagvaluesv2 method: GET description: Get values for a tag (v2) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tagName in: path type: string required: true - name: q in: query type: string description: TraceQL query to filter values - name: start in: query type: integer - name: end in: query type: integer - name: api-v2-search-tags path: /api/v2/search/tags operations: - name: getsearchtagsv2 method: GET description: Get search tag names (v2) outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: scope in: query type: string description: Scope of tags to return - name: start in: query type: integer - name: end in: query type: integer - name: ready path: /ready operations: - name: ready method: GET description: Readiness check outputRawFormat: json outputParameters: - name: result type: object value: $. - name: status-buildinfo path: /status/buildinfo operations: - name: getbuildinfo method: GET description: Get build information outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: tempo-http-rest port: 8080 description: REST adapter for Grafana Tempo HTTP API. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/api/echo name: api-echo description: REST surface for api-echo. operations: - method: GET name: echo description: Echo endpoint call: tempo-http.echo outputParameters: - type: object mapping: $. - path: /v1/api/metrics/summary name: api-metrics-summary description: REST surface for api-metrics-summary. operations: - method: GET name: getmetricssummary description: Get metrics summary call: tempo-http.getmetricssummary with: q: rest.q groupBy: rest.groupBy start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/api/search name: api-search description: REST surface for api-search. operations: - method: GET name: searchtraces description: Search for traces call: tempo-http.searchtraces with: q: rest.q tags: rest.tags minDuration: rest.minDuration maxDuration: rest.maxDuration limit: rest.limit start: rest.start end: rest.end spss: rest.spss outputParameters: - type: object mapping: $. - path: /v1/api/search/tag/{tagname}/values name: api-search-tag-tagname-values description: REST surface for api-search-tag-tagName-values. operations: - method: GET name: getsearchtagvalues description: Get values for a tag call: tempo-http.getsearchtagvalues with: tagName: rest.tagName q: rest.q start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/api/search/tags name: api-search-tags description: REST surface for api-search-tags. operations: - method: GET name: getsearchtags description: Get search tag names call: tempo-http.getsearchtags with: scope: rest.scope start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/api/traces/{traceid} name: api-traces-traceid description: REST surface for api-traces-traceID. operations: - method: GET name: gettracebyid description: Get trace by ID call: tempo-http.gettracebyid with: traceID: rest.traceID start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/api/v2/search/tag/{tagname}/values name: api-v2-search-tag-tagname-values description: REST surface for api-v2-search-tag-tagName-values. operations: - method: GET name: getsearchtagvaluesv2 description: Get values for a tag (v2) call: tempo-http.getsearchtagvaluesv2 with: tagName: rest.tagName q: rest.q start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/api/v2/search/tags name: api-v2-search-tags description: REST surface for api-v2-search-tags. operations: - method: GET name: getsearchtagsv2 description: Get search tag names (v2) call: tempo-http.getsearchtagsv2 with: scope: rest.scope start: rest.start end: rest.end outputParameters: - type: object mapping: $. - path: /v1/ready name: ready description: REST surface for ready. operations: - method: GET name: ready description: Readiness check call: tempo-http.ready outputParameters: - type: object mapping: $. - path: /v1/status/buildinfo name: status-buildinfo description: REST surface for status-buildinfo. operations: - method: GET name: getbuildinfo description: Get build information call: tempo-http.getbuildinfo outputParameters: - type: object mapping: $. - type: mcp namespace: tempo-http-mcp port: 9090 transport: http description: MCP adapter for Grafana Tempo HTTP API. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: echo-endpoint description: Echo endpoint hints: readOnly: true destructive: false idempotent: true call: tempo-http.echo outputParameters: - type: object mapping: $. - name: get-metrics-summary description: Get metrics summary hints: readOnly: true destructive: false idempotent: true call: tempo-http.getmetricssummary with: q: tools.q groupBy: tools.groupBy start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: search-traces description: Search for traces hints: readOnly: true destructive: false idempotent: true call: tempo-http.searchtraces with: q: tools.q tags: tools.tags minDuration: tools.minDuration maxDuration: tools.maxDuration limit: tools.limit start: tools.start end: tools.end spss: tools.spss outputParameters: - type: object mapping: $. - name: get-values-tag description: Get values for a tag hints: readOnly: true destructive: false idempotent: true call: tempo-http.getsearchtagvalues with: tagName: tools.tagName q: tools.q start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: get-search-tag-names description: Get search tag names hints: readOnly: true destructive: false idempotent: true call: tempo-http.getsearchtags with: scope: tools.scope start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: get-trace-id description: Get trace by ID hints: readOnly: true destructive: false idempotent: true call: tempo-http.gettracebyid with: traceID: tools.traceID start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: get-values-tag-v2 description: Get values for a tag (v2) hints: readOnly: true destructive: false idempotent: true call: tempo-http.getsearchtagvaluesv2 with: tagName: tools.tagName q: tools.q start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: get-search-tag-names-v2 description: Get search tag names (v2) hints: readOnly: true destructive: false idempotent: true call: tempo-http.getsearchtagsv2 with: scope: tools.scope start: tools.start end: tools.end outputParameters: - type: object mapping: $. - name: readiness-check description: Readiness check hints: readOnly: true destructive: false idempotent: true call: tempo-http.ready outputParameters: - type: object mapping: $. - name: get-build-information description: Get build information hints: readOnly: true destructive: false idempotent: true call: tempo-http.getbuildinfo outputParameters: - type: object mapping: $.