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

> ## Agent Instructions
> To act on Atlan objects, use the Atlan MCP server at https://api.atlan.com/mcp or the atlanai CLI; `atlanai --map json` prints its command map. Run a read-only identity check before any write.
> The docs MCP server at /mcp searches these docs only. It cannot read or change Atlan objects.
> SDK packages: Python `atlanai` (PyPI) and TypeScript `@atlanai/sdk` (npm). Show Python first, then TypeScript.

# Wrap unsupported framework

> Trace a framework without OpenTelemetry support by wrapping its top-level call with traced or wrapTraced in atlanai SDK.

<Badge color="blue">SDK 0.4.0</Badge>

Wrapping a framework's top-level call with `traced` or `wrapTraced` in atlanai SDK guarantees the agent boundary, input, output, latency, and failure. Use it when the framework emits no usable spans. Calls from instrumented providers inside the wrapper become child spans automatically.

## Before you begin

Before you start, make sure you have:

* **SDK**: atlanai SDK installed with tracing, as in [Install atlanai SDK](/tools/sdk/how-tos/install).
* **Tracing**: `init_logger` or `initLogger` configured, as in [Trace first agent run](/tools/sdk/tutorials/quickstart).

<Steps>
  <Step title="Wrap top-level call">
    <Tabs>
      <Tab title="Python">
        ```python theme={null}
        from atlanai.tracing import traced

        @traced(name="agent.run", type="task")
        def run_agent(input):
            return agent.run(input)
        ```
      </Tab>

      <Tab title="TypeScript">
        ```typescript theme={null}
        import { wrapTraced } from "@atlanai/sdk/tracing";

        const runAgent = wrapTraced(agent.run.bind(agent), { name: "agent.run", type: "task" });

        const result = await runAgent(input);
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Add detail you own">
    Manual wrapping cannot invent model, tool, token, or cost details that the framework does not expose. Add child spans or `span.update(...)` calls for those fields where you own the call site, as in [Create spans for agent run](/tools/sdk/how-tos/tracing).
  </Step>

  <Step title="Verify trace">
    Run one request, flush, and open the trace in Agent Registry. Confirm the root span, provider calls, tool calls, usage, and parent relationships.

    If no trace appears, see [`init()` disables tracing and no traces are exported](/tools/sdk/troubleshooting/install-and-setup-errors#init-disables-tracing-and-no-traces-are-exported).
  </Step>
</Steps>

## Troubleshooting

If traces do not appear, see [Install and setup errors](/tools/sdk/troubleshooting/install-and-setup-errors).

## Next steps

* [Create spans for agent run](/tools/sdk/how-tos/tracing): add typed spans, usage, and cost inside the wrapper.

## See also

* [Agent frameworks](/frameworks/index)
* [Framework coverage](/frameworks/coverage)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.