RagLeap
ragleap-integrations · release notes

ragleap-integrations v0.4.0

ragleap-integrations 0.4.0

A UTCP (Universal Tool Calling Protocol) client, and the bounded HTTPS transport extended from POST to GET, POST, PUT, DELETE and PATCH. Install: pip install ragleap-integrations==0.4.0 (optional extra: security). This text mirrors the CHANGELOG shipped with the release.

Added

  • connect_utcp(url, allow=[...], token=None, origins=(), approve=None, pre_approved=(), on_event=None, ...): reads one UTCP manual once and returns its allowlisted http tools as a Connection (tools, toolkit, skipped, report), as connect() does. Also UtcpServerConfig, UtcpConfig, UtcpClient, UtcpToolSpec, make_utcp_tools, UtcpConfigError and UtcpDiscoveryError.
  • Rules: an exact allowlist (no wildcard); approved origins (the manual own origin plus the origins the owner lists), checked at discovery and on every call; the manual is a one-time snapshot; no variable substitution and no environment lookups; only the http template with GET, POST, PUT, DELETE or PATCH; path parameters URL-encoded, body_field as a JSON body, the other arguments in the query string; the owner token as a bearer token to approved origins only; every tool flagged requires_approval unless pre-approved; the same approve hook, audit events (marked protocol utcp) and constant error texts as the MCP client.
  • Skipped with a stated reason: other call template types, header_fields, a template with an auth block, placeholders, a template field this version does not understand (such as query_params), non-JSON request bodies, a query string or fragment in the URL, URLs that are not https on a public host or are outside the approved origins, forbidden or placeholder static headers, and oversized schemas. A document that is not a UTCP manual (including an OpenAPI document) is refused.
  • _net.https_request(method, url, headers, body, ...): the bounded transport for the five methods with every protection of the POST path (public-address check, pinned IP, verified TLS, no redirects, size cap, deadline). Any other method is refused before DNS.
  • scripts/utcp_live.py, a read-only discovery check (repository only). Design doc docs/design/utcp.md updated.

Changed

  • https_post is now a thin wrapper over https_request; its behavior is unchanged, and code that does not use connect_utcp behaves as in 0.3.0: the 331 earlier tests pass unchanged.

Verified

  • 545 tests (the 331 earlier ones plus 184 for the UTCP client and 30 for the transport methods, the latter against a real local TLS server with a throwaway certificate) on Python 3.10 and 3.12; 541 passed and 4 skipped without ragleap-security. 127 of 127 deliberate breaks of the new code caught (one equivalent mutant is documented).
  • After release: the published wheel is byte-identical to the TestPyPI wheel; the installed files equal the source; pip check is clean with and without the extra; a smoke test passes; the sdist tests pass against the installed wheel (Python 3.10.12: 545, or 541 passed and 4 skipped without the extra).

Not verified

  • Any call against a real UTCP server (no public server with a current-format manual was found for the check). The normative UTCP specification text, its auth types, and whether the reference clients restrict hosts or substitute placeholders from a manual: only the project documentation and reference clients were read.

Known limitations

  • Only http templates of UTCP manuals; no auth blocks, header_fields, OAuth, OpenAPI conversion or multi-tenant hub yet. The result is the response body text, capped; it is not parsed. Server text is untrusted and not screened for prompt injection.

Release date note

  • The CHANGELOG heading inside the published sdist says 2026-11-04, but the files reached PyPI on 2026-11-05 (UTC). Published files cannot be edited, so the correction is recorded in the next CHANGELOG, the wiki and the website. The TestPyPI sdist carries 2026-11-03. The wheels are identical on both indexes.
View on GitHub Package page All releases
← v0.3.0

Release notes mirrored from GitHub Releases.