HomeIntegrations › Add authorization to Claude tool use
Integration

Add authorization to Claude tool use

Check the agent's warrant before executing any Claude tool_use block — so autonomous tool calls stay inside the limits you set.

Why authorize Claude / Anthropic tools?

Claude's tool use returns tool_use blocks; your code runs the tool and returns a tool_result. That boundary is where authorization belongs. Wrap the handler so the warrant is checked first — and if it is denied, hand the model a clean error it can reason about, rather than performing an unauthorized action.

Guard a Claude tool handler

import { createClient, guardTool } from 'liceat';
const decide = createClient({ gateway: 'https://liceat.com' }).decider();
const pay = guardTool(decide, { resource: 'pay:stripe/charge', action: 'pay',
  amount: a => a.cents, currency: 'USD' }, async (a) => stripe.charge(a));

for (const block of message.content) if (block.type === 'tool_use') {
  const out = await pay(agentWarrant, block.input).catch(e => ({ error: e.message }));
  toolResults.push({ type: 'tool_result', tool_use_id: block.id, content: JSON.stringify(out) });
}

What you get

Frequently asked

What is Liceat?

Liceat is permission infrastructure for AI agents. You issue a warrant — a scoped, spend-capped, revocable token — that grants an agent narrow authority; the agent presents it at the point of action; Liceat enforces it (scope, spend, rate, holder-binding, revocation) and records every decision in a tamper-evident log. It is open source with a zero-dependency SDK for TypeScript and Python.

Is it free?

The SDK and self-hosted gateway are free and open source. The hosted gateway at liceat.com gives 10,000 free decisions with no card, then meters at fractions of a cent per decision — payable by card or USDC.

Give your agents permission, not your keys.

Free to self-host. 10,000 free decisions on the hosted gateway — no card.

Get an API key Read the docs