Skip to main content
Glama

Approveit

Submit an approval request

submit_request

Submit a new approval request against a workflow. Call get_workflow_details first and supply every required field; the tool reports which values are missing or invalid rather than guessing. This notifies real approvers — confirm the values with the user before calling. Two-step: call with confirmed=false (the default) first for a preview with NOTHING written yet; call again with the same fields plus confirmed=true to actually submit it.

Input Schema

NameRequiredDescriptionDefault
fieldsYesMap of field key to value. Prefer the field's `id` (UUID) from `get_workflow_details` as the key — the binding name (e.g. "absence_from") or the exact label are accepted as fallbacks, but the UUID is canonical. Each value should match the field type: strings for text, numbers for amount/number, date strings (YYYY-MM-DD) for dates, option values for dropdowns. Money (amount, and item_price cells in line_items) in dollars as the user says it, e.g. 250 or "1,250.50"; the tool converts to the stored unit, never multiply by 100 yourself. A line-item tax cell (accounting_tax / xero_tax_rate) takes the tax's id from search_entities, never its percentage; the tool stores the tax's rate. Always include every required field — missing required fields (esp. workflow-specific ones like `absence_from`/`absence_to` for time-off, vendor for bills/POs) cause downstream creation errors that are not recoverable from inside the tool.
priorityNoPriority level. Defaults to medium.
confirmedNofalse (default) previews: validates everything and returns every blocker at once WITHOUT creating anything. true creates the request. Preview first, then confirm with the user, then call again with true.
workflow_idYesThe workflow ID to create the request for.
step_approversNoOnly for steps `get_workflow_details` marks `requestor_picks_approver: true` — on those the form makes the requestor choose who approves, and the preview lists each one as a blocker until it has a pick. One entry per such step: {"step_order": 0, "approver_ids": [12, 34], "completion": "all"}. Resolve names with `search_team_users`; `completion` is "all" (every one must approve, the default) or "any" (one is enough).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, it discloses that this notifies real approvers, that preview writes NOTHING, that validation reports all blockers at once instead of guessing, and that missing required fields cause downstream errors that are unrecoverable from inside the tool. That is exactly the behavioral context the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) cannot convey.

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?

Three dense sentences, front-loaded with purpose, then prerequisites, then the two-step protocol. Nothing is repeated from the schema and every clause (notify real approvers, nothing written on preview) carries operational weight.

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?

There is no output schema, but the description compensates by explaining what the preview returns (every blocker at once) and what the confirmed call does. For a five-parameter mutation tool with nested objects and open-world effects, an agent has everything it needs to call this correctly and safely.

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?

Schema coverage is 100% and the property descriptions already carry the heavy detail (UUID keys, dollar amounts, tax ids, step_approvers shape), so the baseline is 3. The description still adds meaning at the parameter level: it explains the confirmed flag's preview contract and reinforces that all required fields, including workflow-specific ones, must be populated, which is a small but real increment over the schema.

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 opens with a specific verb plus resource ('Submit a new approval request against a workflow'), and the word 'new' plus the submission framing distinguishes it from update_request, approve_request, and reject_request in the sibling list. An agent can route to it 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 Guidelines5/5

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

It states explicit prerequisites ('Call get_workflow_details first and supply every required field'), an explicit sequencing rule (preview with confirmed=false, then confirmed=true), and a human-in-the-loop condition ('confirm the values with the user before calling'). The when-not case is implicit but clear: do not call with confirmed=true until the preview is clean and the user has agreed.

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