UTC — Universal Tool-Calling Layer
This content is for v1.0. Switch to the latest version for up-to-date documentation.
Call the same tool from MCP, REST, or A2A with one WIMSE token and one audit trail. The Universal Tool-Calling Layer (UTC) normalizes whatever arrives on the wire, verifies it once, and applies the same revocation and audience rules everywhere.
Why it’s worth your time
Section titled “Why it’s worth your time”- One registration, many clients — agents pick the protocol their framework supports; you do not re-register or re-policy per wire format.
- Same security story as MCP — confused-deputy checks, audience binding, and kill-switch revocation apply to every adapter.
- Off the exchange path — UTC sits in front of your tool handlers; token exchange latency stays unchanged.
How it works
Section titled “How it works”Platform credential → POST /v1/exchange/token → WIMSE JWT ↓ UTC middleware (your tool server) adapter → verify → allow / deny ↓ tool handlerAdapters translate native requests into one ToolCallRequest. A single Verifier checks token, audience, and revocation regardless of protocol.
| Adapter | Detects |
|---|---|
| MCP | JSON-RPC tools/call |
| HTTP | REST paths + Bearer token |
| A2A | Agent-to-agent task shapes |
Register tools with optional protocol scope — an MCP-only tool returns 403 on REST even when the token is valid.
Wire it up
Section titled “Wire it up”- Exchange a platform credential for a WIMSE JWT — token exchange.
- Register the tool on the PEP (resource URI + allowed protocols) — MCP security covers PEP-side registration.
- Mount UTC middleware on your tool server —
pkg/toolcall. - Point JWKS resolution at
GET /v1/identity/jwkson your fabric unit.
MCP:
curl -s -X POST "$TOOL_URL/" \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $WIMSE_JWT" \ -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search","arguments":{"q":"starfly"}},"id":1}'HTTP (same token, same tool):
curl -s "$TOOL_URL/api/search?q=starfly" \ -H "Authorization: Bearer $WIMSE_JWT"What you should see
Section titled “What you should see”| Scenario | Result |
|---|---|
| MCP or HTTP with valid token | Same subject, same tool_id, protocol recorded in audit |
| Valid token, wrong protocol | 403 capability_denied |
| Token for tool A at tool B | 403 audience mismatch |
Code in this repo
Section titled “Code in this repo”| Path | Status |
|---|---|
pkg/toolcall/ | Shipped — middleware, verifier, adapters |
examples/multi-protocol-tool/ | Preview — demo export pending |
Related
Section titled “Related”- MCP security — register and verify on the PEP
- Exchange · Revocation — fabric invariants
- Documentation voice — how these pages are written