Skip to main content
Glama

HR: Close engagement

hr_close_engagement
Destructive

End a period of employment — the row the turnover report reads to answer WHY people leave. 'ended_on' defaults to today and may not precede the start; 'status' defaults to 'ended'. Read 'requires_comment' on the reason you pick (hr_list_rejection_reasons returns it): a reason flagged that way — the seeded catch-all «Інше» — is REFUSED unless you also send a non-empty 'end_comment', and the refusal names the field 'endComment'. It is the same rule the funnel has always applied to a rejection: a thousand rows saying «Інше» with no story make the turnover report unreadable. Closing does not delete anything and does not touch the person's card: the period stays, now with an end date, and the person can be re-hired later with hr_open_engagement. Requires confirmation. CONFIRMATION: this tool is PROPOSED, never performed directly. You get status='confirmation_required' with an action_id and a plan_token, and the write happens only after confirm_action.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "engagement_id": "<engagement_id>"
    },
    "name": "hr_close_engagement"
  }
}

Input Schema

NameRequiredDescriptionDefault
statusNo
ended_onNo
end_commentNo
end_reason_idNo
engagement_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Well beyond annotations: the description discloses defaults for 'ended_on' and 'status', the validation rule that ended_on may not precede the start, the exact failure shape (refusal naming the field 'endComment'), and that nothing is deleted so the person can be re-hired. It also documents the full confirmation protocol — status='confirmation_required', action_id, plan_token, then confirm_action — which the annotations say nothing about.

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?

Front-loaded with the core action, then defaults, then the refusal rule, then the confirmation flow — a sensible order with no filler paragraphs. The «Інше»/funnel anecdote is a touch discursive for a tool description, though it does justify the rule rather than merely state it.

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?

For a mutating 5-parameter tool with no output schema, it covers the mutation semantics, the conditional validation, the confirmation gate, and what the caller receives back. An agent could sequence the whole flow (list reasons → close → confirm_action) from this text alone.

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 load, and it does: ended_on default and constraint, status default, end_comment's conditional requirement, and the source list for end_reason_id. Gaps remain — engagement_id's provenance is never stated, and the other enum values for status (active, probation, suspended, leaving) are undocumented.

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 verb and resource — "End a period of employment" — and immediately frames its business meaning (the row the turnover report reads). It distinguishes itself from hr_open_engagement by naming re-hire as the inverse operation, and from hr_update_engagement implicitly by making 'status=ended' the point of the call.

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?

Explicit prerequisites and ordering: call hr_list_rejection_reasons first to read 'requires_comment' on the chosen reason, otherwise the call is REFUSED. It also states the when-not alternative (re-hiring goes through hr_open_engagement) and that a confirmation step intervenes.

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