agent-tools

Wrap Python async functions and agents as callable tools for orxhestra workflows.

19|6|Updated Mar 12, 2026
One-click install
npx skills add https://github.com/NicolaiLassen/orxhestra --skill agent-tools-nicolailassen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: agent-tools
Source: https://github.com/NicolaiLassen/orxhestra/tree/main/docs/skills/agent-tools
Command: npx skills add https://github.com/NicolaiLassen/orxhestra --skill agent-tools-nicolailassen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill solves the problem of turning reusable capabilities into structured tools that orxhestra agents can safely call, including multi-agent handoffs and external MCP tool integration.

Core Features & Use Cases

  • function_tool: Wrap Python async functions as callable agent tools with optional custom names and descriptions, enabling quick tool creation for tasks like search, extraction, and transformations.
  • AgentTool: Expose one agent as a tool so a parent agent can delegate sub-research or specialized work as a single tool call.
  • make_transfer_tool: Route work between multiple specialized agents (e.g., triage to sales vs. support) via agent handoff tools.
  • exit_loop_tool: Provide a clean mechanism for breaking out of a LoopAgent once an approval or completion condition is met.
  • CallContext: Share and update tool-accessible state across tool executions for coordination and session-level tracking.
  • MCPToolAdapter: Connect to MCP servers to load external tools dynamically and make them available to agents at runtime.
  • LongRunningFunctionTool: Support long operations as first-class tools for workflows that require asynchronous, potentially time-consuming work.

Quick Start

Ask the AI to define an async function tool using function_tool, then wire it into an LlmAgent alongside an MCPToolAdapter-loaded toolset.

Frequently Asked Questions about agent-tools

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I wrap an async Python function as a callable agent tool?

To wrap an async Python function as a callable agent tool, use the function_tool wrapper to enable quick tool creation for tasks like search and transformations with optional custom names and descriptions.

What is the best way to delegate a sub-task from a parent agent to another agent?

The best way to delegate a sub-task is using the AgentTool wrapper, which exposes one agent as a callable tool so a parent agent can delegate specialized work as a single tool call.

How do I load external MCP server tools dynamically into an LlmAgent?

You load external MCP server tools dynamically into an LlmAgent by using the MCPToolAdapter to connect to MCP servers and make the loaded toolset available for agent registration at runtime.

How does an agent handoff work when routing tasks between specialized agents?

Agent handoff works by using make_transfer_tool to route work between multiple specialized agents, enabling transitions like triaging a request from a general agent to sales or support.

Can I share state across multiple tool executions during an async workflow?

Yes, you can share and update tool-accessible state across tool executions during an async workflow by using CallContext for coordination and session-level tracking.

How do you break out of a LoopAgent once a completion condition is met?

You break out of a LoopAgent once a completion condition is met by using the exit_loop_tool, which provides a clean mechanism for exiting delegation loops after approval.