Skip to main content
Glama

tempo_approve_timesheet

Destructive

Approve a user's submitted timesheet for a date range, locking the period's worklogs against further edits.

Instructions

Approve a user's submitted timesheet for the given period. Reviewer action — approving locks the period's worklogs against further edits. Asks the user to confirm first: a confirmation prompt where the client supports one; otherwise the first call returns a preview and a confirmToken, and only a repeat call with that token proceeds (see MCP_CONFIRM_MODE).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoPeriod end date (YYYY-MM-DD); defaults to the period containing `from`
fromYesPeriod start date (YYYY-MM-DD) — use tempo_get_periods to find valid period boundaries
commentNoComment recorded against the approval action
accountIdYesAtlassian account id of the timesheet owner
confirmTokenNoONLY for the two-step confirmation fallback (a client without MCP elicitation). The confirmToken from this same tool's phase-1 "confirmation-required" response, passed back ONLY after the user has seen that preview and explicitly approved it in chat — never on the first call, never invented, never reused. Call again with the same arguments. Ignored when the client supports elicitation.
reviewerAccountIdNoAtlassian account id of the reviewer (see tempo_get_timesheet_approvals_waiting)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv3.2.1

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description discloses two critical behaviors: approving locks the period's worklogs against further edits, and the tool requires user confirmation — either via the client's confirmation prompt or a two-step fallback returning a confirmToken that must be echoed. This is exactly the kind of consequence and protocol disclosure that annotations 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.

Conciseness4/5

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

Three sentences with no filler: purpose in sentence one, the locking consequence in sentence two, and the confirmation protocol in sentence three. Information is front-loaded correctly. The only blemish is the cryptic "see MCP_CONFIRM_MODE" reference, which assumes environmental knowledge the agent may not have.

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?

With no output schema, the description carries the burden of explaining the response contract, and it does: the two-phase flow (preview + confirmToken on first call, execution on repeat) effectively defines what the caller should expect. Combined with 100% parameter coverage and annotations declaring destructiveness, this is nearly complete; minor gaps are unspecified error cases (already approved, not yet submitted) and the final success response shape.

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% and each parameter already carries rich semantic descriptions (e.g., 'to' defaults to the period containing 'from', 'from' points to tempo_get_periods, confirmToken explains the two-step fallback, reviewerAccountId points to tempo_get_timesheet_approvals_waiting). The description's mention of the confirmToken flow reinforces the schema without adding much beyond it, so the baseline 3 applies.

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 and resource — "Approve a user's submitted timesheet for the given period" — and immediately frames it as a "Reviewer action," which separates it from sibling tools like tempo_submit_timesheet, tempo_reject_timesheet, and tempo_reopen_timesheet. The added locking consequence further pins down what this specific action does versus its approval-family siblings.

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 description establishes a clear usage context: this is a reviewer's action against an already-submitted timesheet for a given period, with a mandatory confirmation protocol. It does not explicitly name alternatives or exclusions (e.g., use tempo_reject_timesheet to reject, tempo_reopen_timesheet to undo), so it falls short of 5, but the reviewer/submitted framing provides clear enough context for an agent to select it over the submission and retrieval siblings.

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