python-utcp  by universal-tool-calling-protocol

Protocol for defining and interacting with tools across diverse communication protocols

Created 2 months ago
541 stars

Top 58.8% on SourcePulse

GitHubView on GitHub
1 Expert Loves This Project
Project Summary

The Universal Tool Calling Protocol (UTCP) provides a flexible, scalable standard for defining and interacting with tools across various communication protocols. It aims to simplify the integration of diverse services, including HTTP APIs, CLI tools, and more, into AI-driven workflows. The Python implementation offers a client for discovering, selecting, and executing these tools, with built-in support for LLM integration.

How It Works

UTCP defines tools and their providers through Pydantic models, enabling easy integration and extensibility. Clients discover available tools via a UtcpManual, which can be served by the tool provider itself or a registry. The Python client supports multiple provider types (HTTP, SSE, CLI, WebSocket, gRPC, etc.) and authentication methods (API Key, Basic Auth, OAuth2). It automatically converts OpenAPI v3 specifications into UTCP tools, simplifying the integration of existing web services.

Quick Start & Requirements

  • Install using pip install -r requirements.txt followed by pip install dist/utcp-<version>.tar.gz.
  • Requires Python 3.10+.
  • For LLM integration examples, an OpenAI API key is needed.
  • Official examples are available in the examples/ directory.

Highlighted Details

  • Supports automatic conversion of OpenAPI v3 specifications to UTCP tools.
  • Offers a comprehensive set of provider types, including HTTP, SSE, CLI, and experimental support for gRPC, WebSockets, and more.
  • Provides robust LLM integration capabilities, including dynamic tool discovery and search.
  • Implements various authentication mechanisms for secure tool access.

Maintenance & Community

No specific contributors, sponsorships, or community links (Discord/Slack) are mentioned in the README.

Licensing & Compatibility

The license is not explicitly stated in the provided README.

Limitations & Caveats

Several provider types (WebSocket, gRPC, GraphQL, TCP, UDP, WebRTC) are marked as "work in progress," indicating potential instability or incomplete implementation. The README does not detail specific limitations regarding performance, scalability benchmarks, or unsupported features for the stable provider types.

Health Check
Last Commit

3 days ago

Responsiveness

Inactive

Pull Requests (30d)
16
Issues (30d)
7
Star History
144 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.