Skip to main content
Glama
janishkumar

po-guard-mcp

by janishkumar

reject_purchase_order

Reject a pending purchase order back to its requester with a reason and confirmation code, so unapproved orders do not advance.

Instructions

Reject a pending purchase order back to its requester.

Args: po: Purchase order ID. reason: Why, for the requester. confirmation_code: From preview("reject_purchase_order", ).

Input Schema

NameRequiredDescriptionDefault
poYes
reasonYes
confirmation_codeNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is known; the description adds that the PO returns to the requester and that the reason is surfaced to them, which is real behavioral context. The confirmation_code requirement also signals a two-step, non-repeatable flow, though the description never says whether rejection can be undone or what permissions are needed.

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?

One front-loaded sentence states the action and effect; the Args block is minimal and each entry adds information an agent could not get elsewhere. No filler or restated annotation content.

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?

An output schema exists, so return values need not be described, and the description covers the action, the required precondition, and every parameter. It stops short of describing reversibility, side effects such as notifications, or failure modes, which matter for a non-idempotent state-changing tool.

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 0% schema description coverage, the description carries the full burden and does define all three parameters: po as the purchase order ID, reason as the text the requester will read, and confirmation_code as the value obtained from preview. It adds genuine meaning beyond the bare schema titles, but gives no format or validation hints for the ID or code.

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

Purpose4/5

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

States a specific verb and resource ("Reject a pending purchase order") plus the outcome ("back to its requester"), which clearly separates it from approve_purchase_order or amend_purchase_order. It does not explicitly say how it differs from cancel_purchase_order, the closest sibling, leaving that distinction to inference.

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 "pending" qualifier establishes the precondition, and the confirmation_code note gives an explicit prerequisite workflow via the sibling tool preview("reject_purchase_order", <these same args>). It never states when rejection is inappropriate (e.g., already approved or cancelled POs) or what happens if preview is skipped.

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