> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gtm-api.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get observability request

> Fetch the full execution of one past MCP request by trace_id: spans, timings, status, the redacted input/output bodies, errors, emitted events, permission decisions, DB queries and the span tree. Read-only debugging instrument (Tempo + Loki facade, no local storage). Use when a user pastes a trace_id and asks "what happened / why did this fail", or to introspect a past tool call. Returns not_found when the trace was sampled out or is past retention; 403 (not 404) when the trace belongs to another actor/team.

Contract:
- MCP tool `get_observability_request`, registry package `mcp.id/observability_requests`, mount `id.platform`.
- Operation `get`, response envelope `get`.
- Flags: read only.



## OpenAPI

````yaml /api-reference/id/openapi.yaml post /api/observability/get-request
openapi: 3.0.3
info:
  title: 'GTM API public contract: gtm.service.id'
  description: >-
    Identity, access and money: users, teams and members, API keys, OAuth
    clients and authorizations, billing products, subscriptions, transactions
    and payment methods, the credit ledger, notifications, TLS certificates,
    observability and support requests.


    GENERATED. This document is projected from the Zod MCP tool registry in
    `product/mcp/gtm.mcp` (one tool per public endpoint, 1:1). Do not edit it by
    hand; edit the tool definition and regenerate with `pnpm openapi:public`.


    Surface: the public `/api` contract of `gtm.service.id`, 77 operations.
    Internal (`/internal`) and health endpoints are deliberately absent; the
    code-faithful spec that documents those lives in
    `product/openapi/gtm.openapi.tech`.


    Conventions:

    - Auth is a bearer JWT, optionally narrowed by the `Team-SID` header.

    - Every success body is an MCP envelope: `success: true` plus one typed
    `operation` shape (`search`, `get`, `create`, `update`, `delete`, `metrics`,
    `group_by`, `action`), and a `meta` block with `trace_id` for support.

    - Every failure is the same `McpError` envelope with a code from a fixed
    16-code taxonomy, so a client maps errors once.

    - Lists page with `page_size` (0 to 500, default 50) plus an opaque forward
    `cursor`; `page_size: 0` returns counts only.

    - On `GET` and `DELETE`, object-valued query parameters (`filter`, `sort`)
    travel as JSON text and array-valued ones repeat as `name[]=value`.

    - The MCP-only `_meta` field (usage analytics) never reaches the backend and
    is not part of this contract.
  version: '1.0'
  contact:
    name: GTM API
    url: https://gtm-api.com
    email: support@gtm-api.com
  license:
    name: Proprietary
    url: https://gtm-api.com/license
servers:
  - url: https://app.gtm-api.com/id/v4
    description: Production, through the app.gtm-api.com gateway
  - url: http://localhost:8021
    description: Local Docker (gtm_id_nginx_dev)
security:
  - BearerJwt: []
    TeamSid: []
tags:
  - name: account_shares
    description: Registry package `mcp.id/account_shares`, served on MCP mount `id.access`.
  - name: api_keys
    description: Registry package `mcp.id/api_keys`, served on MCP mount `id.access`.
  - name: billing_payment_methods
    description: >-
      Registry package `mcp.id/billing_payment_methods`, served on MCP mount
      `id.billing`.
  - name: billing_products
    description: >-
      Registry package `mcp.id/billing_products`, served on MCP mount
      `id.billing`.
  - name: billing_subscriptions
    description: >-
      Registry package `mcp.id/billing_subscriptions`, served on MCP mount
      `id.billing`.
  - name: billing_transactions
    description: >-
      Registry package `mcp.id/billing_transactions`, served on MCP mount
      `id.billing`.
  - name: credit_transactions
    description: >-
      Registry package `mcp.id/credit_transactions`, served on MCP mount
      `id.credits`.
  - name: notifications
    description: >-
      Registry package `mcp.id/notifications`, served on MCP mount
      `id.platform`.
  - name: oauth_authorizations
    description: >-
      Registry package `mcp.id/oauth_authorizations`, served on MCP mount
      `id.access`.
  - name: oauth_clients
    description: Registry package `mcp.id/oauth_clients`, served on MCP mount `id.access`.
  - name: observability_requests
    description: >-
      Registry package `mcp.id/observability_requests`, served on MCP mount
      `id.platform`.
  - name: sessions
    description: Registry package `mcp.id/sessions`, served on MCP mount `id.identity`.
  - name: ssl_certificates
    description: >-
      Registry package `mcp.id/ssl_certificates`, served on MCP mount
      `id.platform`.
  - name: support_requests
    description: >-
      Registry package `mcp.id/support_requests`, served on MCP mount
      `id.platform`.
  - name: team_members
    description: Registry package `mcp.id/team_members`, served on MCP mount `id.identity`.
  - name: teams
    description: Registry package `mcp.id/teams`, served on MCP mount `id.identity`.
  - name: users
    description: Registry package `mcp.id/users`, served on MCP mount `id.identity`.
paths:
  /api/observability/get-request:
    post:
      tags:
        - observability_requests
      summary: Get observability request
      description: >-
        Fetch the full execution of one past MCP request by trace_id: spans,
        timings, status, the redacted input/output bodies, errors, emitted
        events, permission decisions, DB queries and the span tree. Read-only
        debugging instrument (Tempo + Loki facade, no local storage). Use when a
        user pastes a trace_id and asks "what happened / why did this fail", or
        to introspect a past tool call. Returns not_found when the trace was
        sampled out or is past retention; 403 (not 404) when the trace belongs
        to another actor/team.


        Contract:

        - MCP tool `get_observability_request`, registry package
        `mcp.id/observability_requests`, mount `id.platform`.

        - Operation `get`, response envelope `get`.

        - Flags: read only.
      operationId: get_observability_request
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetObservabilityRequestRequest'
      responses:
        '200':
          description: '`get` success envelope.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetObservabilityRequestResponse'
        4XX:
          $ref: '#/components/responses/McpClientError'
        5XX:
          $ref: '#/components/responses/McpServerError'
components:
  schemas:
    GetObservabilityRequestRequest:
      type: object
      description: Request body of `get_observability_request`.
      properties:
        trace_id:
          type: string
          description: The request trace_id (UUID v7, 36 chars).
      required:
        - trace_id
    GetObservabilityRequestResponse:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - true
        operation:
          type: string
          enum:
            - get
        item:
          type: object
          properties:
            sid:
              type: string
            trace_id:
              type: string
            agent_session_id:
              type: string
              nullable: true
            agent_turn_id:
              type: string
              nullable: true
            tool:
              type: string
            actor:
              type: object
              nullable: true
              properties:
                actor_type:
                  type: string
                  enum:
                    - user
                    - support
                    - api_key
                    - system
                actor_sid:
                  type: string
                team_sid:
                  type: string
                permissions:
                  type: object
                  additionalProperties: {}
                request_sid:
                  type: string
                  nullable: true
                reason:
                  type: string
                  nullable: true
              required:
                - actor_type
                - actor_sid
                - team_sid
                - permissions
                - reason
            team_sid:
              type: string
            status:
              type: string
              enum:
                - ok
                - error
            started_at:
              type: string
            duration_ms:
              type: number
            input:
              type: object
              additionalProperties: {}
            output:
              type: object
              additionalProperties: {}
            errors:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  path:
                    type: array
                    nullable: true
                    items:
                      type: string
                  span_id:
                    type: string
                required:
                  - code
                  - message
                  - path
                  - span_id
            events_emitted:
              type: array
              items:
                type: object
                properties:
                  event_sid:
                    type: string
                  name:
                    type: string
                  payload_size:
                    type: number
                  emitted_at:
                    type: string
                required:
                  - event_sid
                  - name
                  - payload_size
                  - emitted_at
            permission_decisions:
              type: array
              items:
                type: object
                properties:
                  policy:
                    type: string
                  decision:
                    type: string
                    enum:
                      - allow
                      - deny
                  reason:
                    type: string
                required:
                  - policy
                  - decision
                  - reason
            child_calls:
              type: array
              items:
                type: object
                properties:
                  trace_id:
                    type: string
                  tool:
                    type: string
                  duration_ms:
                    type: number
                  status:
                    type: string
                    enum:
                      - ok
                      - error
                required:
                  - trace_id
                  - tool
                  - duration_ms
                  - status
            db_queries:
              type: array
              items:
                type: object
                properties:
                  sql_fingerprint:
                    type: string
                  duration_ms:
                    type: number
                  rows:
                    type: number
                  table:
                    type: string
                    nullable: true
                  operation:
                    type: string
                    enum:
                      - SELECT
                      - INSERT
                      - UPDATE
                      - DELETE
                      - OTHER
                required:
                  - sql_fingerprint
                  - duration_ms
                  - rows
                  - table
                  - operation
            span_tree:
              type: object
              properties:
                span_id:
                  type: string
                parent_span_id:
                  type: string
                  nullable: true
                name:
                  type: string
                kind:
                  type: string
                  enum:
                    - server
                    - client
                    - producer
                    - consumer
                    - internal
                started_at:
                  type: string
                duration_ms:
                  type: number
                status:
                  type: string
                  enum:
                    - ok
                    - error
                    - unset
                attributes:
                  type: object
                  additionalProperties:
                    anyOf:
                      - type: string
                      - type: number
                      - type: boolean
                      - {}
                      - {}
                events:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      at:
                        type: string
                      attributes:
                        type: object
                        additionalProperties: {}
                    required:
                      - name
                      - at
                      - attributes
                children:
                  type: array
                  items:
                    type: object
                    additionalProperties: {}
                    description: >-
                      Recursive node: the same object shape repeats here. A
                      static OpenAPI document cannot express the cycle, so this
                      level is documented as an open object.
              required:
                - span_id
                - parent_span_id
                - name
                - kind
                - started_at
                - duration_ms
                - status
                - attributes
                - events
                - children
            debug_url:
              type: string
          required:
            - sid
            - trace_id
            - agent_session_id
            - agent_turn_id
            - tool
            - actor
            - team_sid
            - status
            - started_at
            - duration_ms
            - input
            - output
            - errors
            - events_emitted
            - permission_decisions
            - child_calls
            - db_queries
            - span_tree
            - debug_url
        included:
          type: object
          additionalProperties: {}
        includes:
          type: array
          items:
            type: string
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            debug_url:
              type: string
              description: Deep link to the post-call analysis UI.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
            - debug_url
      required:
        - success
        - operation
        - item
        - included
        - includes
        - meta
    McpError:
      type: object
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - validation_failed
                - nothing_to_update
                - not_found
                - relation_not_found
                - invalid_transition
                - limit_exceeded
                - payment_required
                - duplicate_rejected
                - conflict
                - delete_blocked
                - unauthorized
                - forbidden
                - rate_limited
                - internal_error
                - service_unavailable
                - not_implemented
            message:
              type: string
            recoverable:
              type: boolean
            suggestion:
              type: string
            field_errors:
              type: object
              additionalProperties:
                type: array
                items:
                  anyOf:
                    - type: string
                    - type: object
                      properties:
                        rule:
                          type: string
                        message:
                          type: string
                      required:
                        - rule
                        - message
            blockers:
              type: array
              items:
                type: object
                properties:
                  type:
                    type: string
                    description: >-
                      Machine-readable blocker type (active_flow, pending_tasks,
                      …).
                  severity:
                    type: string
                    enum:
                      - hard
                      - soft
                    description: >-
                      hard = external action required; soft = acknowledge is
                      enough.
                  description:
                    type: string
                  entity_sid:
                    type: string
                    nullable: true
                  count:
                    type: integer
                  resolution:
                    type: string
                    description: 'Hard: tool name to call. Soft: code for acknowledge[].'
                  resolution_hint:
                    type: string
                required:
                  - type
                  - severity
                  - description
                  - entity_sid
                  - resolution
                  - resolution_hint
            context:
              type: object
              additionalProperties: {}
          required:
            - code
            - message
            - recoverable
        meta:
          type: object
          properties:
            trace_id:
              type: string
              description: UUID v7; same 128-bit value as the X-Trace-Id header.
            span_id:
              type: string
              pattern: ^[0-9a-f]{16}$
              description: 16 hex chars, root span of this request.
            timestamp:
              type: string
              description: ISO 8601 UTC (Y-m-dTH:i:sZ), response time.
            duration_ms:
              type: integer
              minimum: 0
              description: Server-side wall clock.
            debug_url:
              type: string
              description: Deep link to the post-call analysis UI.
          required:
            - trace_id
            - span_id
            - timestamp
            - duration_ms
            - debug_url
      required:
        - success
        - error
  responses:
    McpClientError:
      description: >-
        MCP error envelope. `error.code` is one of validation_failed,
        nothing_to_update, not_found, relation_not_found, invalid_transition,
        limit_exceeded, payment_required, duplicate_rejected, conflict,
        delete_blocked, unauthorized, forbidden, rate_limited, not_implemented.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
    McpServerError:
      description: >-
        MCP error envelope with `error.code` internal_error or
        service_unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/McpError'
  securitySchemes:
    BearerJwt:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Access token issued by gtm.service.id. Its `access_identity` claim
        carries `team_sid`, `actor_sid` and `actor_type`, and that team scope is
        authoritative.
    TeamSid:
      type: apiKey
      in: header
      name: Team-SID
      description: >-
        Team scope for tokens that do not carry one. Ignored when the token
        already names a team.

````