Skip to main content
Glama
Packi1992

CalisthenicsCompanion-MCP

by Packi1992

Withdraw Coach Suggestion

withdraw_suggestion
Idempotent

Retract a pending proposal you submitted. Sets its status to withdrawn while preserving the audit record; fails for unknown, foreign, or already-finalized proposals.

Instructions

Retract one of your own proposals that is still pending — the single named exception to the propose-only boundary. Sets its status to withdrawn; the proposal is NOT deleted, its audit row survives and stays fully readable through get_suggestion. Withdrawing an already-withdrawn proposal is a harmless no-op. Fails with an error, worded identically regardless of cause, for an id that is unknown, not yours, or no longer pending (already accepted, rejected, or expired).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare idempotentHint=true and destructiveHint=false, but the description adds real behavioral context: the status is changed to withdrawn, the record is not deleted, audit history remains readable via get_suggestion, repeated withdrawal is a no-op, and error wording is intentionally uniform. This goes well beyond the structured hints.

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, each earning its place: the core purpose, the persistence behavior, and the failure semantics. Information is front-loaded and nothing is redundant with the schema or annotations.

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?

Covers the critical operational details: state change, non-deletion, idempotence, readable audit record, and error conditions. The only minor gap is not describing the success return value, which is less important for a largely fire-and-forget mutation but would make the description fully self-contained given there is no output schema.

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?

The schema declares only a required UUID 'id' with no description, so the description must compensate. It clarifies that the id identifies one of your own pending proposals and conveys the semantic failure modes, though it could have explicitly said 'supply the proposal/suggestion id' rather than leaving that inference to the agent.

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?

States a specific action (retract), a specific resource (one of your own pending proposals), and a clear context (single named exception to the propose-only boundary). This sharply distinguishes the tool from the read-only get_* and proposal-creating propose_* siblings.

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?

Explicitly says when this tool is the right choice: to retract your own still-pending proposal, framing it as the sole exception to the propose-only rule. It also lists the concrete conditions that make a call invalid (unknown, not yours, no longer pending), giving an agent precise when-to/not-to guidance.

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