Report Abuse

Basic Information

python-utcp is the official Python implementation of the Universal Tool Calling Protocol (UTCP). It implements a standard and client library for describing, discovering, registering, searching for, and invoking tools provided by remote services or local resources. The repo provides Pydantic data models for UTCP manuals and tools, an asynchronous UtcpClient that loads provider definitions from a providers.json file, transport interfaces for multiple communication protocols, and example servers and clients. It includes runnable examples for full LLM integration, a FastAPI manual/discovery server example, and guidance for wrapping existing APIs and CLIs as UTCP tools. The project emphasizes scalability, interoperability with many provider types, and ease of use for developers building or consuming tool-based services.

Links

Categorization

App Details

Features
Comprehensive provider support including HTTP, SSE, HTTP stream, CLI, TCP, UDP and text, with work-in-progress adapters for WebSocket, gRPC, GraphQL and WebRTC. Pydantic models define UtcpManual and Tool schemas for discovery and input/output validation. Transport abstraction via ClientTransportInterface plus concrete transports and an InMemToolRepository for storage. Multiple authentication methods are supported: API key, Basic Auth and OAuth2 with automatic token management. Automatic OpenAPI v3 conversion turns API specs into UTCP tools. Tool search is pluggable with a default TagSearchStrategy. Examples include a FastAPI discovery server, provider configuration templates, and a full LLM-driven example showing dynamic tool discovery, search, execution and conversation history. Tests and build instructions are provided.
Use Cases
This library helps developers expose, discover and call heterogeneous tools in a unified way. It makes it straightforward to wrap REST APIs, legacy TCP/UDP services, command-line programs or streaming endpoints as discoverable UTCP tools. For LLM integrations it enables dynamic tool discovery and LLM-driven tool invocation workflows, including parsing model outputs to perform tool calls and returning results back to the model. Built-in auth handling and OpenAPI conversion reduce manual glue code. The transport abstractions and configurable search strategy simplify building interoperable tool registries, registries for third-party providers, and scalable client-side orchestration for multi-tool applications. Examples, tests and packaging instructions ease adoption and contribution.

Please fill the required fields*