Documents
make-assistant-tool-ui
make-assistant-tool-ui
Type
External
Status
Published
Created
Mar 17, 2026
Updated
Mar 17, 2026
`makeAssistantToolUI` is deprecated. Use the `Tools()` API instead. See the [Tools guide](/docs/guides/tools) for the recommended approach.

The makeAssistantToolUI utility is used to register a tool UI component with the Assistant.

Usage#

import { makeAssistantToolUI } from "@assistant-ui/react";

const MyToolUI = makeAssistantToolUI({
  toolName: "myTool",
  render: ({ args, result, status }) => {
    // render your tool UI here
  },
});

API#

Parameters#

<ParametersTable
type="AssistantToolUIProps<TArgs, TResult>"
parameters={[
{
name: "toolName",
type: "string",
description:
"The name of the tool. This must match the name of the tool defined in the assistant.",
},
{
name: "render",
type: "ComponentType<ToolCallMessagePartProps<TArgs, TResult>>",
description:
"A React component that renders the tool UI. Receives the following props:",
required: true,
children: [
{
type: "ToolCallMessagePartProps<TArgs, TResult>",
parameters: [
{
name: "type",
type: '"tool-call"',
description: "The message part type",
},
{
name: "toolCallId",
type: "string",
description: "Unique identifier for this tool call",
},
{
name: "toolName",
type: "string",
description: "The name of the tool being called",
},
{
name: "args",
type: "TArgs",
description: "The arguments passed to the tool",
},
{
name: "argsText",
type: "string",
description: "String representation of the arguments",
},
{
name: "result",
type: "TResult | undefined",
description: "The result of the tool execution (if complete)",
},
{
name: "isError",
type: "boolean | undefined",
description: "Whether the result is an error",
},
{
name: "status",
type: "ToolCallMessagePartStatus",
description:
'The execution status object with a type property: "running", "complete", "incomplete", or "requires-action"',
},
{
name: "addResult",
type: "(result: TResult | ToolResponse) => void",
description:
"Function to add a result (useful for human-in-the-loop tools)",
},
{
name: "artifact",
type: "unknown",
description:
"Optional artifact data associated with the tool call",
},
],
},
],
},
]}
/>

Returns#

A React functional component that should be included in your component tree. This component doesn't render anything itself, but it registers the tool UI with the Assistant.

Example#

import { makeAssistantToolUI } from "@assistant-ui/react";
import { AssistantRuntimeProvider } from "@assistant-ui/react";

const GetWeatherUI = makeAssistantToolUI({
  toolName: "get_weather",
  render: ({ args, result, status }) => {
    if (status.type === "requires-action")
      return <p>Getting weather for {args.location}...</p>;
    if (status.type === "running") return <p>Loading...</p>;
    if (status.type === "incomplete" && status.reason === "error")
      return <p>Error getting weather.</p>;
    if (status.type === "complete")
      return <p>The weather is {result.weather}.</p>;
    return null;
  },
});

function App() {
  const runtime = /* your runtime setup */;
  return (
    <AssistantRuntimeProvider runtime={runtime}>
      {/* ...your other components */}
      <GetWeatherUI />
    </AssistantRuntimeProvider>
  );
}

This example shows how to create a simple UI for a get_weather tool. The UI will display different messages depending on the status of the tool execution.