Skip to main content
Glama

SwapEazi

Record a release

record_release

Records the release of a material payment against the organisation's release policy, at the moment it is released: the map_id and measure_id on file, who released it, and any exception with its reason and approver. When an agent releases under a policy with agent_autonomy tiers, the record states the tier its amount falls in and the agent_approval on record for it. Returns a Release Evidence Record, appended to the organisation's hash chain and signed. It records; it never blocks, executes or moves money. A release with no map is still recorded, flagged as a policy miss. Needs the organisation's key.

Input Schema

NameRequiredDescriptionDefault
uetrNoThe payment's SWIFT UETR (UUID v4), optional: ties the record to the payment itself.
amountNoThe released amount: { value, currency }.
map_idNoThe Options Map (map_id) on file for this payment, if one was made.
exceptionNoOnly when the release falls outside the policy: { reason, approved_by: { id, role } }.
policy_idYesThe organisation's release policy the payment is released under, e.g. 'pol_...'.
measure_idNoThe Measure (msr_...) on file for this payment, if one was made.
intent_hashNoThe intent_hash from compile_intent, so the record proves the map matches this payment.
payment_refYesYour internal payment reference, never an account number.
released_atNoISO timestamp; defaults to now.
released_byYesWho released the payment: { type: human | system | agent, id }.
agent_approvalNoAgent releases only: { id, role } of the person who signed off a release above the policy's agent_autonomy.release_up_to. The role is the policy's agent_autonomy.approver_role.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • addedInput schema / properties / agent_approval / properties / id / description
      Added value: +"Your own id for the person who signed off."
    • addedInput schema / properties / agent_approval / properties / role / description
      Added value: +"That person's role, e.g. 'Treasurer'."
    • addedInput schema / properties / amount / description
      Added value: +"The released amount: { value, currency }."
    • addedInput schema / properties / amount / properties / currency / description
      Added value: +"ISO 4217 code of the released amount, e.g. 'EUR'."
    • addedInput schema / properties / amount / properties / value / description
      Added value: +"Amount released, in amount.currency, greater than zero."
    • addedInput schema / properties / exception / description
      Added value: +"Only when the release falls outside the policy: { reason, approved_by: { id, role } }."
    • addedInput schema / properties / exception / properties / approved_by / description
      Added value: +"The person who approved the exception: { id, role }."
    • addedInput schema / properties / exception / properties / approved_by / properties / id / description
      Added value: +"Your own id for the approver."
    • addedInput schema / properties / exception / properties / approved_by / properties / role / description
      Added value: +"The approver's role, e.g. 'CFO'."
    • addedInput schema / properties / exception / properties / reason / description
      Added value: +"Why the payment was released outside the policy, in plain words."
    • addedInput schema / properties / intent_hash / description
      Added value: +"The intent_hash from compile_intent, so the record proves the map matches this payment."
    • addedInput schema / properties / map_id / description
      Added value: +"The Options Map (map_id) on file for this payment, if one was made."
    • addedInput schema / properties / measure_id / description
      Added value: +"The Measure (msr_...) on file for this payment, if one was made."
    • addedInput schema / properties / policy_id / description
      Added value: +"The organisation's release policy the payment is released under, e.g. 'pol_...'."
    • addedInput schema / properties / released_by / description
      Added value: +"Who released the payment: { type: human | system | agent, id }."
    • addedInput schema / properties / released_by / properties / id / description
      Added value: +"Your own id for the releaser, e.g. an employee id or agent id; never a password or key."
    • addedInput schema / properties / released_by / properties / type / description
      Added value: +"human, system or agent."
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the annotations, it discloses the auth requirement ("Needs the organisation's key"), the side effect (append to a hash chain and signed), and the edge case that a release with no map is still recorded and flagged as a policy miss. It leaves unstated how duplicate calls behave, which matters given idempotentHint=false.

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

Conciseness4/5

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

Three sentences, front-loaded with the core action and its contents, followed by the return and the non-blocking caveat. Dense but every sentence carries information; no filler.

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

Completeness4/5

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

For an 11-parameter mutation with no output schema, the description covers what is recorded, that a signed Release Evidence Record comes back, the key requirement, and the no-map edge case. Remaining gaps are minor, such as duplicate handling and failure modes.

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

Parameters3/5

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

Schema description coverage is 100%, so every field is already documented in the schema including the intent_hash link to compile_intent and the agent_approval role source. The description adds some framing about the tier recorded for agent releases, but that tier is derived content rather than an actual parameter, so it does not materially deepen parameter semantics.

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?

"Records the release of a material payment against the organisation's release policy" gives a specific verb and resource, and the clause "it records; it never blocks, executes or moves money" separates it from execution siblings like run_payments or submit_payment. The agent can tell what this tool does and what it does not, without opening the schema.

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?

"At the moment it is released" and the agent-autonomy sentence give clear timing and conditional context for when to call it. It does not explicitly route to alternatives such as verify_release_record or release_status, so the when-not guidance is implied rather than stated.

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.

Resources