Co-Pilot
Updated a month ago

tools

Aassistant-ui
0.0k
assistant-ui/skills/assistant-ui/skills/tools
76
Agent Score

💡 Summary

This skill facilitates the registration and UI rendering of tools for LLMs in assistant-ui.

🎯 Target Audience

Developers integrating LLM toolsUI/UX designers for AI applicationsProduct managers overseeing AI featuresTechnical writers documenting AI tools

🤖 AI Roast:Powerful, but the setup might scare off the impatient.

Security AnalysisMedium Risk

Risk: Medium. Review: outbound network access (SSRF, data egress); filesystem read/write scope and path traversal. Run with least privilege and audit before enabling in production.


name: tools description: Guide for tool registration and tool UI in assistant-ui. Use when implementing LLM tools, tool call rendering, or human-in-the-loop patterns. version: 0.0.1 license: MIT

assistant-ui Tools

Always consult assistant-ui.com/llms.txt for latest API.

Tools let LLMs trigger actions with custom UI rendering.

References

Tool Types

Where does the tool execute?
├─ Backend (LLM calls API) → AI SDK tool()
│  └─ Want custom UI? → makeAssistantToolUI
└─ Frontend (browser-only) → makeAssistantTool
   └─ Want custom UI? → makeAssistantToolUI

Backend Tool with UI

// Backend (app/api/chat/route.ts) import { tool, stepCountIs } from "ai"; import { z } from "zod"; const tools = { get_weather: tool({ description: "Get weather for a city", inputSchema: z.object({ city: z.string() }), execute: async ({ city }) => ({ temp: 22, city }), }), }; const result = streamText({ model: openai("gpt-4o"), messages, tools, stopWhen: stepCountIs(5), });
// Frontend import { makeAssistantToolUI } from "@assistant-ui/react"; const WeatherToolUI = makeAssistantToolUI({ toolName: "get_weather", render: ({ args, result, status }) => { if (status === "running") return <div>Loading weather...</div>; return <div>{result?.city}: {result?.temp}°C</div>; }, }); // Register in app <AssistantRuntimeProvider runtime={runtime}> <WeatherToolUI /> <Thread /> </AssistantRuntimeProvider>

Frontend-Only Tool

import { makeAssistantTool } from "@assistant-ui/react"; import { z } from "zod"; const CopyTool = makeAssistantTool({ toolName: "copy_to_clipboard", parameters: z.object({ text: z.string() }), execute: async ({ text }) => { await navigator.clipboard.writeText(text); return { success: true }; }, }); <AssistantRuntimeProvider runtime={runtime}> <CopyTool /> <Thread /> </AssistantRuntimeProvider>

API Reference

// makeAssistantToolUI props interface ToolUIProps { toolCallId: string; toolName: string; args: Record<string, unknown>; argsText: string; result?: unknown; status: "running" | "complete" | "incomplete" | "requires-action"; submitResult: (result: unknown) => void; // For interactive tools }

Human-in-the-Loop

const DeleteToolUI = makeAssistantToolUI({ toolName: "delete_file", render: ({ args, status, submitResult }) => { if (status === "requires-action") { return ( <div> <p>Delete {args.path}?</p> <button onClick={() => submitResult({ confirmed: true })}>Confirm</button> <button onClick={() => submitResult({ confirmed: false })}>Cancel</button> </div> ); } return <div>File deleted</div>; }, });

Common Gotchas

Tool UI not rendering

  • toolName must match exactly (case-sensitive)
  • Register UI inside AssistantRuntimeProvider

Tool not being called

  • Check tool description is clear
  • Use stopWhen: stepCountIs(n) to allow multi-step

Result not showing

  • Tool must return a value
  • Check status === "complete" before accessing result
5-Dim Analysis
Clarity8/10
Novelty6/10
Utility9/10
Completeness8/10
Maintainability7/10
Pros & Cons

Pros

  • Clear structure for tool registration
  • Supports both backend and frontend tools
  • Provides human-in-the-loop patterns

Cons

  • Lacks detailed examples for all tool types
  • May require additional setup for complex tools
  • Limited information on error handling

Related Skills

pytorch

S
toolCode Lib
92/ 100

“It's the Swiss Army knife of deep learning, but good luck figuring out which of the 47 installation methods is the one that won't break your system.”

agno

S
toolCode Lib
90/ 100

“It promises to be the Kubernetes for agents, but let's see if developers have the patience to learn yet another orchestration layer.”

nuxt-skills

S
toolCo-Pilot
90/ 100

“It's essentially a well-organized cheat sheet that turns your AI assistant into a Nuxt framework parrot.”

Disclaimer: This content is sourced from GitHub open source projects for display and rating purposes only.

Copyright belongs to the original author assistant-ui.