Letta · Capability

Letta API — Steps

Steps — per-step traces inside an agent run. 6 operations. Lead operation: List Steps. Self-contained Naftiko capability covering one Letta business surface.

Letta API — Steps is a Naftiko capability published by Letta, one of 36 capabilities the APIs.io network indexes for this provider. It bundles 6 operations across the GET and PATCH methods rooted at /v1/steps.

The capability includes 5 read-only operations and 1 state-changing operation. Lead operation: List Steps. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Letta, Stateful Agents, and Steps.

Run with Naftiko LettaStateful AgentsSteps

What You Can Do

GET
List_steps — List Steps
/v1/steps/
GET
Retrieve_step — Retrieve Step
/v1/steps/{step-id}
GET
Retrieve_metrics_for_step — Retrieve Metrics for Step
/v1/steps/{step-id}/metrics
GET
Retrieve_trace_for_step — Retrieve Trace for Step
/v1/steps/{step-id}/trace
PATCH
Modify_feedback_for_step — Modify Feedback for Step
/v1/steps/{step-id}/feedback
GET
List_messages_for_step — List Messages for Step
/v1/steps/{step-id}/messages

MCP Tools

list-steps

List Steps

read-only idempotent
retrieve-step

Retrieve Step

read-only idempotent
retrieve-metrics-step

Retrieve Metrics for Step

read-only idempotent
retrieve-trace-step

Retrieve Trace for Step

read-only idempotent
modify-feedback-step

Modify Feedback for Step

idempotent
list-messages-step

List Messages for Step

read-only idempotent

Capability Spec

letta-steps.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "Letta API — Steps"
  description: >-
    Steps — per-step traces inside an agent run. 6 operations. Lead operation: List Steps. Self-contained Naftiko capability covering one Letta business surface.
  tags:
    - Letta
    - Stateful Agents
    - Steps
  created: "2026-05-08"
  modified: "2026-05-22"

binds:
  - namespace: env
    keys:
      LETTA_API_KEY: LETTA_API_KEY

capability:

  consumes:
    - type: http
      namespace: "letta-steps"
      baseUri: "https://api.letta.com"
      description: "Letta API — Steps business capability. Self-contained, no shared references."
      authentication:
        type: bearer
        token: "{{env.LETTA_API_KEY}}"
      resources:
        - name: "steps"
          path: "/v1/steps/"
          operations:
            - name: "list_steps"
              method: GET
              description: "List Steps"
              inputParameters:
                - name: "before"
                  in: query
                  type: string
                  required: false
                  description: "Return steps before this step ID"
                - name: "after"
                  in: query
                  type: string
                  required: false
                  description: "Return steps after this step ID"
                - name: "limit"
                  in: query
                  type: string
                  required: false
                  description: "Maximum number of steps to return"
                - name: "order"
                  in: query
                  type: string
                  required: false
                  description: "Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first"
                - name: "order_by"
                  in: query
                  type: string
                  required: false
                  description: "Field to sort by"
                - name: "start_date"
                  in: query
                  type: string
                  required: false
                  description: "Return steps after this ISO datetime (e.g. \"2025-01-29T15:01:19-08:00\")"
                - name: "end_date"
                  in: query
                  type: string
                  required: false
                  description: "Return steps before this ISO datetime (e.g. \"2025-01-29T15:01:19-08:00\")"
                - name: "model"
                  in: query
                  type: string
                  required: false
                  description: "Filter by the name of the model used for the step"
                - name: "agent_id"
                  in: query
                  type: string
                  required: false
                  description: "Filter by the ID of the agent that performed the step"
                - name: "trace_ids"
                  in: query
                  type: string
                  required: false
                  description: "Filter by trace ids returned by the server"
                - name: "feedback"
                  in: query
                  type: string
                  required: false
                  description: "Filter by feedback"
                - name: "has_feedback"
                  in: query
                  type: string
                  required: false
                  description: "Filter by whether steps have feedback (true) or not (false)"
                - name: "tags"
                  in: query
                  type: string
                  required: false
                  description: "Filter by tags"
                - name: "project_id"
                  in: query
                  type: string
                  required: false
                  description: "Filter by the project ID that is associated with the step (cloud only)."
                - name: "X-Project"
                  in: header
                  type: string
                  required: false
                  description: "Filter by project slug to associate with the group (cloud only)."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "steps-by-id"
          path: "/v1/steps/{step_id}"
          operations:
            - name: "retrieve_step"
              method: GET
              description: "Retrieve Step"
              inputParameters:
                - name: "step_id"
                  in: path
                  type: string
                  required: true
                  description: "The ID of the step in the format 'step-<uuid4>'"
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "steps-by-id-metrics"
          path: "/v1/steps/{step_id}/metrics"
          operations:
            - name: "retrieve_metrics_for_step"
              method: GET
              description: "Retrieve Metrics for Step"
              inputParameters:
                - name: "step_id"
                  in: path
                  type: string
                  required: true
                  description: "The ID of the step in the format 'step-<uuid4>'"
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "steps-by-id-trace"
          path: "/v1/steps/{step_id}/trace"
          operations:
            - name: "retrieve_trace_for_step"
              method: GET
              description: "Retrieve Trace for Step"
              inputParameters:
                - name: "step_id"
                  in: path
                  type: string
                  required: true
                  description: "The ID of the step in the format 'step-<uuid4>'"
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "steps-by-id-feedback"
          path: "/v1/steps/{step_id}/feedback"
          operations:
            - name: "modify_feedback_for_step"
              method: PATCH
              description: "Modify Feedback for Step"
              inputParameters:
                - name: "step_id"
                  in: path
                  type: string
                  required: true
                  description: "The ID of the step in the format 'step-<uuid4>'"
                - name: "body"
                  in: body
                  type: object
                  required: true
                  description: "Request payload"
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "steps-by-id-messages"
          path: "/v1/steps/{step_id}/messages"
          operations:
            - name: "list_messages_for_step"
              method: GET
              description: "List Messages for Step"
              inputParameters:
                - name: "step_id"
                  in: path
                  type: string
                  required: true
                  description: "The ID of the step in the format 'step-<uuid4>'"
                - name: "before"
                  in: query
                  type: string
                  required: false
                  description: "Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order"
                - name: "after"
                  in: query
                  type: string
                  required: false
                  description: "Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order"
                - name: "limit"
                  in: query
                  type: string
                  required: false
                  description: "Maximum number of messages to return"
                - name: "order"
                  in: query
                  type: string
                  required: false
                  description: "Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first"
                - name: "order_by"
                  in: query
                  type: string
                  required: false
                  description: "Sort by field"
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "letta-steps-rest"
      port: 8080
      description: "REST adapter for Letta API — Steps. One Spectral-compliant resource per consumed operation."
      resources:
        - path: "/v1/steps/"
          name: "steps"
          description: "REST surface for steps."
          operations:
            - method: GET
              name: "list_steps"
              description: "List Steps"
              call: "letta-steps.list_steps"
              with:
                "before": "rest.before"
                "after": "rest.after"
                "limit": "rest.limit"
                "order": "rest.order"
                "order_by": "rest.order_by"
                "start_date": "rest.start_date"
                "end_date": "rest.end_date"
                "model": "rest.model"
                "agent_id": "rest.agent_id"
                "trace_ids": "rest.trace_ids"
                "feedback": "rest.feedback"
                "has_feedback": "rest.has_feedback"
                "tags": "rest.tags"
                "project_id": "rest.project_id"
                "X-Project": "rest.X-Project"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/steps/{step-id}"
          name: "steps-by-id"
          description: "REST surface for steps-by-id."
          operations:
            - method: GET
              name: "retrieve_step"
              description: "Retrieve Step"
              call: "letta-steps.retrieve_step"
              with:
                "step_id": "rest.step_id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/steps/{step-id}/metrics"
          name: "steps-by-id-metrics"
          description: "REST surface for steps-by-id-metrics."
          operations:
            - method: GET
              name: "retrieve_metrics_for_step"
              description: "Retrieve Metrics for Step"
              call: "letta-steps.retrieve_metrics_for_step"
              with:
                "step_id": "rest.step_id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/steps/{step-id}/trace"
          name: "steps-by-id-trace"
          description: "REST surface for steps-by-id-trace."
          operations:
            - method: GET
              name: "retrieve_trace_for_step"
              description: "Retrieve Trace for Step"
              call: "letta-steps.retrieve_trace_for_step"
              with:
                "step_id": "rest.step_id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/steps/{step-id}/feedback"
          name: "steps-by-id-feedback"
          description: "REST surface for steps-by-id-feedback."
          operations:
            - method: PATCH
              name: "modify_feedback_for_step"
              description: "Modify Feedback for Step"
              call: "letta-steps.modify_feedback_for_step"
              with:
                "step_id": "rest.step_id"
                "body": "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/steps/{step-id}/messages"
          name: "steps-by-id-messages"
          description: "REST surface for steps-by-id-messages."
          operations:
            - method: GET
              name: "list_messages_for_step"
              description: "List Messages for Step"
              call: "letta-steps.list_messages_for_step"
              with:
                "step_id": "rest.step_id"
                "before": "rest.before"
                "after": "rest.after"
                "limit": "rest.limit"
                "order": "rest.order"
                "order_by": "rest.order_by"
              outputParameters:
                - type: object
                  mapping: "$."
    - type: mcp
      namespace: "letta-steps-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for Letta API — Steps. One verb-noun tool per consumed operation."
      tools:
        - name: "list-steps"
          description: "List Steps"
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "letta-steps.list_steps"
          with:
            "before": "tools.before"
            "after": "tools.after"
            "limit": "tools.limit"
            "order": "tools.order"
            "order_by": "tools.order_by"
            "start_date": "tools.start_date"
            "end_date": "tools.end_date"
            "model": "tools.model"
            "agent_id": "tools.agent_id"
            "trace_ids": "tools.trace_ids"
            "feedback": "tools.feedback"
            "has_feedback": "tools.has_feedback"
            "tags": "tools.tags"
            "project_id": "tools.project_id"
            "X-Project": "tools.X-Project"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "retrieve-step"
          description: "Retrieve Step"
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "letta-steps.retrieve_step"
          with:
            "step_id": "tools.step_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "retrieve-metrics-step"
          description: "Retrieve Metrics for Step"
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "letta-steps.retrieve_metrics_for_step"
          with:
            "step_id": "tools.step_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "retrieve-trace-step"
          description: "Retrieve Trace for Step"
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "letta-steps.retrieve_trace_for_step"
          with:
            "step_id": "tools.step_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "modify-feedback-step"
          description: "Modify Feedback for Step"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "letta-steps.modify_feedback_for_step"
          with:
            "step_id": "tools.step_id"
            "body": "tools.body"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "list-messages-step"
          description: "List Messages for Step"
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "letta-steps.list_messages_for_step"
          with:
            "step_id": "tools.step_id"
            "before": "tools.before"
            "after": "tools.after"
            "limit": "tools.limit"
            "order": "tools.order"
            "order_by": "tools.order_by"
          outputParameters:
            - type: object
              mapping: "$."