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

# Fetch artifacts

> Fetches full content for up to 50 known artifact identifiers (`repository::path` or `repository::path::symbol`) returned by `semantic_search`, `grep_search`, `read_file`, or `get_artifact_relationships`. This is the preferred way to read code once an identifier is known — do not split the identifier back into a repository and path for `read_file`. Responses include relationship previews (caller/callee counts) that suggest the next traversal step.



## OpenAPI

````yaml /openapi-tool-api-v3.json post /api/tools/fetch_artifacts
openapi: 3.1.1
info:
  title: CodeAlive Tool API
  description: >-
    Tool-only OpenAPI 3.1 contract for MCP and agent integrations. Every
    operation is read-only and returns a Tool API envelope.
  contact:
    name: CodeAlive Team
    url: https://codealive.ai
    email: support@codealive.ai
  license:
    name: Terms of Service
    url: https://app.codealive.ai/terms
  version: 3.0.0
servers:
  - url: https://app.codealive.ai
security:
  - ApiKeyScheme: []
tags:
  - name: ToolApi
    description: CodeAlive Tool API v3
paths:
  /api/tools/fetch_artifacts:
    post:
      tags:
        - ToolApi
      summary: Fetch artifacts
      description: >-
        Fetches full content for up to 50 known artifact identifiers
        (`repository::path` or `repository::path::symbol`) returned by
        `semantic_search`, `grep_search`, `read_file`, or
        `get_artifact_relationships`. This is the preferred way to read code
        once an identifier is known — do not split the identifier back into a
        repository and path for `read_file`. Responses include relationship
        previews (caller/callee counts) that suggest the next traversal step.
      operationId: ToolApiFetchArtifacts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchArtifactsToolRequest'
            example:
              identifiers:
                - CodeAlive-AI/agent-framework::README.md
          text/json:
            schema:
              $ref: '#/components/schemas/FetchArtifactsToolRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/FetchArtifactsToolRequest'
      responses:
        '200':
          description: >-
            Success envelope. obj.artifacts[] returns each requested identifier
            with found, content, contentByteSize, startLine, and a relationships
            preview (caller/callee counts); rendered is the JSON-serialized form
            of obj. Repairable failures (missing or invalid arguments, ambiguous
            or unknown data sources) also return HTTP 200 with obj.error = {
            code, message, retry, try } and a rendered <tool_error> block;
            repair the arguments and retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolApiEnvelope'
              example:
                obj:
                  artifacts:
                    - identifier: >-
                        CodeAlive-AI/agent-framework::src/executor.py::TaskExecutor.run
                      found: true
                      content: |-
                        def run(self, task):
                            with self._telemetry.span(task):
                                return self._retry(task)
                      contentByteSize: 2048
                      startLine: 42
                      relationships:
                        incomingCallsCount: 2
                        incomingCalls:
                          - identifier: >-
                              CodeAlive-AI/agent-framework::src/scheduler.py::Scheduler.tick
                            summary: Drains the queue and dispatches due tasks.
                  hint: Use get_artifact_relationships to expand callers or callees.
                rendered: >-
                  {"artifacts":[{"identifier":"CodeAlive-AI/agent-framework::src/executor.py::TaskExecutor.run","found":true,"content":"def
                  run(self, task): ...","startLine":42}],"hint":"Use
                  get_artifact_relationships to expand callers or callees."}
            text/json:
              schema:
                $ref: '#/components/schemas/ToolApiEnvelope'
        '400':
          description: >-
            Bad request, including malformed JSON, unknown output_format, or
            invalid transport-level input.
        '401':
          description: Authentication failed or API key is missing.
        '403':
          description: >-
            The caller is not authorized for the requested data source or plan
            feature.
        '429':
          description: Rate limit, quota, or plan limit exceeded.
        '500':
          description: Unexpected server failure.
components:
  schemas:
    FetchArtifactsToolRequest:
      required:
        - identifiers
      type: object
      properties:
        output_format:
          enum:
            - json
            - agentic
          type:
            - 'null'
            - string
          description: >-
            Optional success projection. Omit to return both obj and rendered;
            use json for obj only; use agentic for rendered text only.
            Repairable errors always return both obj.error and rendered.
        identifiers:
          maxItems: 50
          type:
            - 'null'
            - array
          items:
            type: string
          description: >-
            Up to 50 artifact identifiers returned by semantic_search,
            grep_search, read_file, or get_artifact_relationships.
        data_source:
          type:
            - 'null'
            - string
          description: >-
            Optional repository or workspace name/id used to disambiguate
            identifiers.
      additionalProperties: false
    ToolApiEnvelope:
      type: object
      properties:
        obj:
          description: >-
            Arbitrary JSON result for the tool. Present for omitted/json success
            projections and every repairable error.
        rendered:
          type:
            - 'null'
            - string
          description: >-
            Agent-facing result text. Present for omitted/agentic success
            projections and every repairable error.
      additionalProperties: false
  securitySchemes:
    ApiKeyScheme:
      type: http
      description: >-
        API Key authentication using Bearer token. Example: "Authorization:
        Bearer {apiKey}"
      scheme: bearer
      bearerFormat: API Key

````