Tools Ui
VerifiedTool lifecycle UI components for React/Next.js from ui.inference.sh. Display tool calls: pending, progress, approval required, results. Capabilities: tool st...
$ Add to .claude/skills/ About This Skill
# Tool UI Components
Tool lifecycle components from ui.inference.sh.
Quick Start
```bash npx shadcn@latest add https://ui.inference.sh/r/tools.json ```
Tool States
| State | Description | |-------|-------------| | `pending` | Tool call requested, waiting to execute | | `running` | Tool is currently executing | | `approval` | Requires human approval before execution | | `success` | Tool completed successfully | | `error` | Tool execution failed |
Components
Tool Call Display
```tsx import { ToolCall } from "@/registry/blocks/tools/tool-call"
<ToolCall name="search_web" args={{ query: "latest AI news" }} status="running" /> ```
Tool Result
```tsx import { ToolResult } from "@/registry/blocks/tools/tool-result"
<ToolResult name="search_web" result={{ results: [...] }} status="success" /> ```
Tool Approval
```tsx import { ToolApproval } from "@/registry/blocks/tools/tool-approval"
<ToolApproval name="send_email" args={{ to: "[email protected]", subject: "Hello" }} onApprove={() => executeTool()} onDeny={() => cancelTool()} /> ```
Full Example
```tsx import { ToolCall, ToolResult, ToolApproval } from "@/registry/blocks/tools"
function ToolDisplay({ tool }) { if (tool.status === 'approval') { return ( <ToolApproval name={tool.name} args={tool.args} onApprove={tool.approve} onDeny={tool.deny} /> ) }
if (tool.result) { return ( <ToolResult name={tool.name} result={tool.result} status={tool.status} /> ) }
return ( <ToolCall name={tool.name} args={tool.args} status={tool.status} /> ) } ```
Styling Tool Cards
```tsx <ToolCall name="read_file" args={{ path: "/src/index.ts" }} status="running" className="border-blue-500" /> ```
Tool Icons
Tools automatically get icons based on their name:
| Pattern | Icon | |---------|------| | `search*`, `find*` | Search | | `read*`, `get*` | File | | `write*`, `create*` | Pencil | | `delete*`, `remove*` | Trash | | `send*`, `email*` | Mail | | Default | Wrench |
With Agent Component
The Agent component handles tool lifecycle automatically:
```tsx import { Agent } from "@/registry/blocks/agent/agent"
<Agent proxyUrl="/api/inference/proxy" config={{ core_app: { ref: 'openrouter/claude-sonnet-45@0fkg6xwb' }, tools: [ { name: 'search_web', description: 'Search the web', parameters: { query: { type: 'string' } }, requiresApproval: true, // Enable approval flow }, ], }} /> ```
Related Skills
```bash # Full agent component (recommended) npx skills add inference-sh/skills@agent-ui
# Chat UI blocks npx skills add inference-sh/skills@chat-ui
# Widgets for tool results npx skills add inference-sh/skills@widgets-ui ```
Documentation
- Adding Tools to Agents - Equip agents with tools
- Human-in-the-Loop - Approval flows
- Tool Approval Gates - Implementing approvals
Component docs: ui.inference.sh/blocks/tools
Use Cases
- Display tool call status (pending, in-progress, completed) in React/Next.js UIs
- Render approval prompts when tool calls require user confirmation
- Show structured tool call results with proper formatting and error states
- Build interactive tool lifecycle dashboards for AI agent applications
- Integrate tool call progress indicators into chat-based AI interfaces
Pros & Cons
Pros
- +Purpose-built React components for the specific problem of displaying tool calls
- +Covers the full tool lifecycle — pending, progress, approval, and results
- +Designed for React/Next.js — the most common AI app frontend stack
Cons
- -React/Next.js only — no support for Vue, Svelte, or other frameworks
- -External dependency on ui.inference.sh — unclear availability and stability
FAQ
What does Tools Ui do?
What platforms support Tools Ui?
What are the use cases for Tools Ui?
100+ free AI tools
Writing, PDF, image, and developer tools — all in your browser.
Next Step
Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.