INDIE / MACHINE
BACK TO ARCHIVE
FIG. 01PRODUCT HUNT SERIES2026-09-21

Product Hunt Pick: Ruby UTCP, Calling Tools Directly Instead of Through an MCP Server

Ruby UTCP is a Ruby client for the Universal Tool Calling Protocol, and it's on Product Hunt with 95 upvotes and a #9 day rank. The tagline is "The scalable, secure alternative to MCP for tool calling." The idea underneath is simple and worth a look: instead of putting a server between an agent and each tool, publish a JSON "manual" that says how to call the tool, and let the client call it over its own protocol.

UTCP, the Universal Tool Calling Protocol, is an open specification for how an AI agent finds and calls tools. A tool is anything the agent might invoke: a REST endpoint, a command-line program, a gRPC service. UTCP doesn't put a new server in front of those. It defines a manual, a JSON document that lists each tool, its inputs, and the details of how to call it (a URL and HTTP method, a command template, and so on). The agent's client reads the manual, then calls the tool over the tool's own protocol. MCP, the better-known standard, works the other way: a tool is exposed through an MCP server that the agent connects to. The UTCP specification is Apache-2.0, maintained in the UTCP GitHub organization, and this Ruby gem is one of several client implementations.

What it is

UTCP splits tool calling in two. A manual lists tools with their input schemas, and each tool carries a tool_call_template naming the transport (http, cli, grpc, ...) and the details. The client fetches the manual, registers the tools as manual_name.tool_name, and calls them directly. There is no proxy process in the request path.

The gem implements UTCP 1.1, is MIT-licensed, and the README claims Ruby 2.6 or newer. It ships 12 transports: HTTP, SSE, Streamable HTTP, CLI, WebSocket, gRPC, GraphQL, TCP, UDP, WebRTC, MCP and text. I counted the README's transport table and it does list twelve, plus a file extension. gRPC and WebRTC need optional gems (grpc, and webrtc-ruby with libdatachannel on Ruby 3.1 or newer). An HTTP, text or file manual can also be an OpenAPI 3 or Swagger 2 document, which is converted into tools automatically.

There is also Code Mode: a multi-step workflow written in a constrained Ruby subset runs as one call, with tools exposed through a codemode object. The README says it is interpreted without eval and has no filesystem, process, reflection or direct network access.

What's good about it

What I'd push back on

Verdict

If you write Ruby agent glue and your tools are already HTTP APIs with OpenAPI documents, this is worth an afternoon. That is the case where "call it directly" removes real work, and the HTTPS, redirect and response-limit defaults are the right ones.

Start with HTTP and OpenAPI only. Leave allowed_communication_protocols at its default, don't register CLI manuals you didn't write, and pin the gem version, because eight releases in four days means the surface is still moving. Treat Code Mode as an experiment, and measure latency yourself before believing the "zero overhead" line.

Sources: Ruby UTCP on Product Hunt · ruby-utcp repository (README, CHANGELOG, tests, CI) · ruby-utcp on RubyGems · utcp.io · UTCP v1.0 to v1.1 migration guide · UTCP organization on GitHub

NEXT
Product Hunt Pick: Termphin, an SSH Client That Leaves Your Shell on the Server
INDIE MACHINE© 2026
A RUST BUILD LOG. NO MOCKUPS, NO ASSUMED NUMBERS.