Skip to main content
Glama

Issue a commercial mandate

issue_mandate

Issue and sign a commercial mandate to define an agent's authority, scope, spending limits, and validity period. Call once per acting agent before any other tool.

Instructions

Issue and sign a commercial mandate: the document stating which organisation an agent represents, which acts it may take, under which limits, for which transaction or category, and for how long. Call this once per acting agent before anything else. Every other tool names the mandate an agent acts under.

A spending_limit becomes two explicit constraints, an amount ceiling and a currency, both visible in the audit record.

The mandate is checked before it is signed, so a refused one never receives a signature that would make it look issued. Refusals: no constraint at all (A202-MANDATE-UNBOUNDED), a scope naming neither a transaction nor a category (A202-MANDATE-SCOPE-TOO-BROAD), an inverted validity interval (A202-MANDATE-INTERVAL-INVALID), a status endpoint that is not HTTPS (A202-MANDATE-STATUS-INSECURE), a subject naming both an agent and a principal (A202-MANDATE-SUBJECT-AMBIGUOUS).

Returns the mandate identifier and the signed document.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scopeYesThe boundary of the authority. Must carry transaction_ids, categories, or both. Counterparty and geography narrow an existing boundary and cannot establish one, so a scope naming only a country is refused.
issuerYesThe principal issuing the authority, and the key it signs with.
actionsYesThe acts the subject may take, for example offer.submit, offer.accept, agreement.sign. Deny by default: an omitted act is not allowed.
subjectYesWho acts under the mandate: exactly one of an agent or a delegated principal, never both.
delegationNoOptional, defaults to no delegation. allowed false requires maximum_depth 0; allowed true requires at least 1. An incoherent pair is refused rather than interpreted.
mandate_idNoOptional explicit identifier, prefixed mnd_. One is minted when absent.
valid_fromYesRFC 3339 UTC instant. Must be strictly earlier than valid_until.
constraintsNoOptional further constraints, each with id, type, path, operator, value, and on_failure of deny or require_approval. At least one constraint must exist in total, counting those a spending limit generates.
valid_untilYesRFC 3339 UTC instant. The mandate authorises nothing at or after it.
evidence_refsNoOptional identity, role, or authorisation evidence supporting the issue.
approval_rulesNoOptional. Each rule carries id, a when predicate of path, operator, and value, an approver of organization_id and role, and expires_after_seconds. A matching act is held until an approval from that approver binds it.
spending_limitNoOptional. Becomes an amount ceiling and a currency constraint. A ceiling with no currency would be satisfied by that number of any currency, so both are written.
status_endpointYesHTTPS URL where this mandate's current status is published. HTTPS only: cached status is the only channel a revocation reaches a relying party through.
parent_mandate_idNoThe mandate this one is delegated from, or null for a root mandate.
represented_organization_idYesThe organisation the subject represents in its acts, prefixed org_.
Behavior5/5

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

The description goes far beyond the annotations (which only say readOnlyHint=false, etc.). It discloses that a spending_limit becomes two constraints 'both visible in the audit record', that the mandate is checked before signing so refusals never receive a signature, and lists specific refusal codes. It also states the return value ('Returns the mandate identifier and the signed document'). These are significant behavioral details not derivable from annotations.

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?

The description is longer than typical but well-structured: purpose and usage are front-loaded, followed by key behavioral notes, refusal list, and return value. Every sentence adds necessary information (e.g., audit record visibility, pre-signing checks, refusal codes), so it is appropriately sized for the tool's complexity. It is not minimal, but it is efficient and free of fluff.

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?

Given 15 parameters, 8 required, nested objects, and no output schema, the description is remarkably complete. It covers purpose, usage, side effects (audit record), failure modes (specific refusal codes), and return value. It also explains the global role of the mandate ('Every other tool names the mandate an agent acts under'), providing sufficient context for an agent to use it correctly.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3. The description adds extra meaning for spending_limit, explaining it becomes both an amount ceiling and a currency constraint with audit trail visibility, and clarifies the scope requirement that a scope must carry transaction_ids or categories. These enrich the parameter understanding beyond the schema's own descriptions.

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 exactly what the tool does: 'Issue and sign a commercial mandate' and defines the document's content ('which organisation an agent represents, which acts it may take, under which limits, for which transaction or category, and for how long'). It clearly distinguishes from siblings like verify_mandate by saying 'Call this once per acting agent before anything else' and noting that every other tool names the mandate an agent acts under.

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?

It explicitly instructs when to use the tool: 'Call this once per acting agent before anything else' and explains its role as a prerequisite for other tools. It doesn't explicitly name alternatives or exclusion conditions, but the 'once per acting agent before anything else' directive provides clear usage context. The refusal conditions also imply when a mandate would not be issued, which indirectly guides usage.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/a202-protocol/a202'

If you have feedback or need assistance with the MCP directory API, please join our Discord server