Skip to main content

UTCP communication protocol plugin for HTTP, SSE, and streamable HTTP, plus an OpenAPI converter.

Project description

UTCP HTTP Plugin

PyPI Downloads

HTTP communication protocol plugin for UTCP, supporting REST APIs, Server-Sent Events (SSE), and streaming HTTP.

Features

  • HTTP/REST APIs: Full support for GET, POST, PUT, DELETE, PATCH methods
  • Authentication: API key, Basic Auth, OAuth2 support
  • Server-Sent Events (SSE): Real-time event streaming
  • Streaming HTTP: Large response handling with chunked transfer
  • OpenAPI Integration: Automatic tool generation from OpenAPI specs
  • Path Parameters: URL templating with {parameter} syntax
  • Custom Headers: Static and dynamic header support

Installation

pip install utcp-http

Quick Start

from utcp.utcp_client import UtcpClient

# Basic HTTP API
client = await UtcpClient.create(config={
    "manual_call_templates": [{
        "name": "api_service",
        "call_template_type": "http",
        "url": "https://api.example.com/users/{user_id}",
        "http_method": "GET"
    }]
})

result = await client.call_tool("api_service.get_user", {"user_id": "123"})

Configuration Examples

Basic HTTP Request

{
  "name": "my_api",
  "call_template_type": "http",
  "url": "https://api.example.com/data",
  "http_method": "GET"
}

With API Key Authentication

{
  "name": "secure_api",
  "call_template_type": "http",
  "url": "https://api.example.com/data",
  "http_method": "POST",
  "auth": {
    "auth_type": "api_key",
    "api_key": "${API_KEY}",
    "var_name": "X-API-Key",
    "location": "header"
  }
}

OAuth2 Authentication

{
  "name": "oauth_api",
  "call_template_type": "http",
  "url": "https://api.example.com/data",
  "auth": {
    "auth_type": "oauth2",
    "client_id": "${CLIENT_ID}",
    "client_secret": "${CLIENT_SECRET}",
    "token_url": "https://auth.example.com/token"
  }
}

Server-Sent Events (SSE)

{
  "name": "event_stream",
  "call_template_type": "sse",
  "url": "https://api.example.com/events",
  "event_type": "message",
  "reconnect": true
}

Streaming HTTP

{
  "name": "large_data",
  "call_template_type": "streamable_http",
  "url": "https://api.example.com/download",
  "chunk_size": 8192
}

OpenAPI Integration

Automatically generate UTCP tools from OpenAPI specifications:

from utcp_http.openapi_converter import OpenApiConverter

converter = OpenApiConverter()
manual = await converter.convert_openapi_to_manual(
    "https://api.example.com/openapi.json"
)

client = await UtcpClient.create()
await client.register_manual(manual)

Error Handling

from utcp.exceptions import ToolCallError
import httpx

try:
    result = await client.call_tool("api.get_data", {"id": "123"})
except ToolCallError as e:
    if isinstance(e.__cause__, httpx.HTTPStatusError):
        print(f"HTTP {e.__cause__.response.status_code}: {e.__cause__.response.text}")

Related Documentation

Examples

For complete examples, see the UTCP examples repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

utcp_http-1.0.5.tar.gz (33.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

utcp_http-1.0.5-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file utcp_http-1.0.5.tar.gz.

File metadata

  • Download URL: utcp_http-1.0.5.tar.gz
  • Upload date:
  • Size: 33.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for utcp_http-1.0.5.tar.gz
Algorithm Hash digest
SHA256 46556bed073a96c068c4982fbcf28f60ef065d5ed97d161491775e4a01e56e44
MD5 54e6a3b694ce1f5e99755d874eeb8e14
BLAKE2b-256 6d56bc33716a70a799237a1e6683b76b65c3b52ab36d049c7f092d77a7c12d8b

See more details on using hashes here.

File details

Details for the file utcp_http-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: utcp_http-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 27.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for utcp_http-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 aecb2ff4d24ff76a885c2b3fb91603fbdf2fc9e3164bad669dbbb134ddfbbd93
MD5 58832ae019735e759f35367f1f3fecb3
BLAKE2b-256 8ed5fce23f65cbeee3e5147ab5d157a9ec23650e244cdbe9c6e8ad90ac9a6ee7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page