Skip to main content
Glama

Attach, change or remove a document

hr_save_document

Keep a file from the file store on a person's record: give person and file_id, a category (contract, id, certificate, review, other), a title (default: the file's name) and expires_on for things like work permits and certificates (the daily digest mentions them 30 days ahead). With document_id, change its category, title or expiry, or take it off the record with remove: true. While attached, the file can't be deleted; removed, it stays in the store. Costs $0.01 per call; nothing if it fails.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "hr_save_document"
  }
}

Input Schema

NameRequiredDescriptionDefault
titleNo
personNoThe person_id, or their work email.
removeNo
file_idNoA file_id from the file store.
categoryNo
expires_onNoYYYY-MM-DD, or null to clear it.
document_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the mutation/non-destruction profile is structured. The description nonetheless adds real value the annotations don't carry: per-call cost ($0.01, free on failure), the file-lock behavior while attached, the file surviving removal, and the 30-day digest reminder. This is above the annotation baseline, though return-value behavior is still unstated.

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 is front-loaded and the description moves efficiently through modes, side effects, and cost with no filler sentences. It is dense and slightly run-on, and it redundantly restates the category enum values already in the schema.

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?

For a 7-parameter tool with no output schema, the description covers all parameters, the three invocation modes, cost, and side effects — a lot of the needed context. The one gap is what a create returns (e.g. the new document_id), which an agent would need to chain a later update.

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 only 43% schema coverage, the description carries weight and does: it explains title defaults to the file's name, that expires_on suits work permits/certificates and is surfaced in the digest, and that document_id selects update mode. Listing the category enum duplicates the schema, but overall it meaningfully supplements the parameters.

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 ('keep a file from the file store on a person's record') and then enumerates the three distinct modes: attach (person + file_id), change (document_id), and remove (remove: true). An agent can distinguish this from files_upload or files_delete without opening the schema.

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 branching on which parameters trigger create vs. update vs. remove gives clear usage context, and 'give person and file_id' implies the file must already be in the store. It stops short of naming the sibling tool (e.g. files_upload) needed to get a file into the store first, so no explicit alternatives are called out.

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