Skip to main content
Glama

HR: Publish form version

hr_publish_form_version
Destructive

Publish a form's DRAFT version — freeze it and make it the form's current one, which is what makes the form assignable at all (hr_assign_form refuses an unpublished form). Take 'version_id' from hr_list_forms' 'draft_version_id'. Only a draft can be published, and only a version with at least one question: the schema is validated HERE so a broken form can never reach a candidate. Publishing demotes whatever version was current before — answers already collected keep pointing at the version they were given, so their meaning does not change. A published version is IMMUTABLE afterwards; editing means forking a new draft. 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": {
      "version_id": "<version_id>"
    },
    "name": "hr_publish_form_version"
  }
}

Input Schema

NameRequiredDescriptionDefault
version_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?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description goes well beyond them: validation happens here, prior current version is demoted, existing answers keep pointing at the version they were collected under, and published versions are immutable with forking as the edit path. It also discloses the full confirmation protocol (status='confirmation_required', action_id, plan_token, confirm_action), which is the most operationally important behavior for an agent.

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?

The core action and its consequence are front-loaded, followed by constraints, side effects, and the confirmation protocol in a logical order. It is dense but nearly every sentence adds a distinct operational fact; there is minor redundancy between 'Requires confirmation' and the dedicated CONFIRMATION block.

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 one-parameter mutation with no output schema, the description covers everything an agent needs: where the id comes from, what is validated, what is destroyed or demoted, what becomes immutable, and the exact two-step confirmation return contract including the follow-up 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?

Schema description coverage is 0% for the single parameter, so the description must carry the meaning, and it does: it names the exact source field (hr_list_forms' draft_version_id) and the validity constraints (must be a draft, must have at least one question). It stops short of restating the integer type, which the schema already provides.

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 (publish a form's DRAFT version) and immediately defines the effect: freeze it, make it current, make the form assignable. It also distinguishes itself from siblings by naming hr_assign_form (which refuses unpublished forms) and hr_list_forms (source of the id).

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 exclusions: only a draft can be published, only a version with at least one question, and version_id must come from hr_list_forms' draft_version_id. It also names the downstream dependency (hr_assign_form requires publication), so an agent knows exactly when this tool is the required step.

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