Jump to content

Draft:Universal Tool Calling Protocol

From Wikipedia, the free encyclopedia
Universal Tool Calling Protocol
Websiteutcp.io

The Universal Tool Calling Protocol (UTCP) is an open standard and open‑source specification that describes how software agents—particularly large language model (LLM) agents—can discover and invoke external tools such as REST or gRPC APIs, command‑line interfaces and streaming endpoints.[1] In contrast to proxy‑based approaches like the Model Context Protocol (MCP), UTCP treats the specification as a manual: after discovery, the client communicates with the tool’s native endpoint directly rather than through a mandatory middleware layer.[2]

Background

[edit]

Formalised in early 2025, UTCP emerged in response to rising enthusiasm for "tool‑calling" in LLM applications. Early ad‑hoc function‑calling APIs (e.g. OpenAI 2023) and later, proxy‑centric protocols such as MCP, required each tool to be wrapped behind bespoke gateway code; implementers dubbed the accumulated complexity the "wrapper tax".[1] UTCP’s authors proposed that most of the tax could be eliminated if the protocol limited itself to describing how to call a tool.

A draft specification (v0.1) and reference libraries in Python and TypeScript were published on GitHub in May 2025 under the Mozilla Public License 2.0.[3]

Design

[edit]

UTCP models a system in three parts:[4]

  • Manuals – JSON (or YAML) documents that enumerate one or more Tools together with JSON Schema‑defined input and output contracts.
  • Tools – individual operations that can be executed. A tool entry specifies its name, natural‑language description, input schema, output schema and a pointer to its native endpoint.
  • Providers – transport descriptors that tell the client how to reach the endpoint. The reference spec defines provider sub‑types including HTTP, WebSocket, gRPC, GraphQL, CLI, TCP/UDP and WebRTC.

The manual is typically served at a well‑known discovery URL (conventionally /utcp). Because the provider entry includes full authentication details (API key, OAuth 2.0 scopes, etc.), the client is able to call the tool without any further mediation.

Security model

[edit]

The specification recommends TLS for all network transports and details common pitfalls such as credential leakage or command‑injection when exposing CLI tools.[5] Implementations are expected to enforce input validation against the declared JSON Schema and to support audit logging and rate‑limiting.

Relationship to MCP

[edit]

Whereas MCP positions an MCP server as a universal adapter sitting between agent and tool, UTCP argues for a single‑hop architecture. The maintainers claim that the approach reduces end‑to‑end latency and allows organisations to "leverage existing infrastructure for auth, billing and compliance" without writing wrapper services.[2]

Implementation

[edit]

Reference clients are provided for Python JavaScript/TypeScript. The Python client, for example, can register a manual provider and call a tool in fewer than ten lines of code:[6]

client = await UtcpClient.create()
manual\_provider = HttpProvider(
name="weather\_service",
provider\_type="http",
url="https://example.com/utcp",
http\_method="GET"
)
await client.register\_manual\_provider(manual\_provider)
result = await client.call\_tool("weather\_service.get\_weather", arguments={"location": "Berlin"})

See also

[edit]

Model Context Protocol

Function calling (OpenAI)

Remote procedure call

References

[edit]
  1. ^ a b "Universal Tool Calling Protocol – Overview". utcp.io. Retrieved 9 July 2025.
  2. ^ a b "UTCP vs MCP". utcp.io. Retrieved 9 July 2025.
  3. ^ "UTCP Specification repository". GitHub. Retrieved 9 July 2025.
  4. ^ "Introduction to UTCP". utcp.io. Retrieved 9 July 2025.
  5. ^ "Security Considerations". utcp.io. Retrieved 9 July 2025.
  6. ^ "Implementation Guide". utcp.io. Retrieved 9 July 2025.
[edit]