Skip to main content
Glama

Safe4 authorize

safe4_authorize

Decide whether a proposed agent payment should proceed.

Settled per call in USDC over x402. Called without payment it returns the price list rather than a decision; call it again with the signed payload to receive one.

The task and the two allow-lists are the principal's constraints, not the agent's: they are what the purchase is tested against, so an agent that writes its own task is grading its own homework. Safe4 records every field it was given in the audit entry and marks the task context as request-supplied, so a substituted constraint is visible afterwards.

Args: task: The task the agent was given, as stated by its principal. purchase: What is being bought. purchase_purpose: Why this purchase serves the task. amount: Decimal amount as a string, for example "25.00". currency: Currency of the proposed payment, for example "USDC". counterparty: Who would receive the payment. service_category: Category of the thing being bought. allowed_service_categories: Categories the principal permits. allowed_counterparties: Optional payees the principal permits. When supplied, payment to anyone else is denied. task_id: Optional caller-side task identifier, echoed into the audit. payment: An x402 payment payload for this call. Omit to receive the price list instead of a decision.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
taskYes
amountYes
paymentNo
task_idNo
currencyYes
purchaseYes
counterpartyYes
purchase_purposeYes
service_categoryYes
allowed_counterpartiesNo
allowed_service_categoriesYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full transparency burden. It discloses payment and settlement ('Settled per call in USDC over x402'), the two-phase call behavior, and the audit trail behavior ('records every field it was given... substituted constraint is visible afterwards'). This is rich behavioral disclosure beyond a bare action verb.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a one-line purpose, front-loads the most critical behavior, and then uses a clearly labeled Args block. The prose paragraphs about constraints and audit are substantial but each adds behavioral context; nothing reads as filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the two call modes, payment/settlement, principal-vs-agent constraints, and audit behavior. With an output schema present, the absence of detailed return-value documentation is not a gap; an agent has enough information to invoke the tool correctly and understand its consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates by glossing all 11 parameters. It adds operational meaning such as amount as a decimal string ('25.00'), currency example 'USDC', and allowed_counterparties behavior ('When supplied, payment to anyone else is denied').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action and resource explicitly: 'Decide whether a proposed agent payment should proceed.' It also distinguishes itself from the sibling by noting that omitting payment returns the price list instead of a decision, so an agent can separate it from safe4_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives direct invocation guidance: call without `payment` to receive the price list, then call again with the signed payload to get a decision. It does not name safe4_price as the alternative, but the price-list behavior effectively draws the boundary and no misleading usage conditions are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation4/5

safe4_authorize and safe4_price are largely distinct: one provides pricing and the other renders an authorization decision. Minor overlap exists because authorize can return a price list when called without payment, but the descriptions clearly explain this behavior.

Naming Consistency4/5

Both tools share the safe4_ prefix and use consistent snake_case naming. The only inconsistency is that authorize is an imperative verb while price is a noun rather than get_price, but the set still reads coherently.

Tool Count4/5

Two tools is on the low end but appropriate for this narrow service: a free price quote and a paid authorization decision. Each tool serves a necessary step in the workflow, though the set is slightly thinner than typical.

Completeness4/5

The core workflow is covered: discover price, then authorize with an x402 payment payload. There is no audit-lookup or cancellation tool, but agents can complete the primary task without those operations.