Skip to main content
Glama

Lock a filled form

flatten_pdf

Free. Lock a filled form: draw every field's value and every comment into the page so nothing can be edited. Lock artifact_id, usually the filled PDF from fill_form: every field's value, checkbox and comment becomes part of the page, no fields stay editable, links keep working, and the original stays as it is. Returns the new artifact_id, a download_url (a link that works for about an hour) and a report: fields_locked, annotations_locked, pages, and calculated_left_blank (the labels of boxes the form totals itself that were empty). A locked form can't be read back or checked, so run read_form or verify_form first. Refuses a digitally signed PDF (pdf_signed) and a dynamic XFA form (xfa_dynamic).

Input Schema

NameRequiredDescriptionDefault
artifact_idYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the original stays as-is, links keep working, fields stay uneditable, the download_url expires in about an hour, and what the report contains (fields_locked, annotations_locked, pages, calculated_left_blank). The refusal conditions add further behavioral context that annotations cannot express.

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 and the key input, then the return shape, then prerequisites and refusals. It is fairly long but nearly every clause adds usable information; the leading 'Free.' is minor filler.

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?

Despite an output schema existing, the description adds the report field meanings and the download_url expiry, and covers prerequisites and refusal cases. Nothing an agent needs to invoke this correctly is missing.

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 artifact_id parameter, so the description must carry the load. It explains that artifact_id is usually the filled PDF produced by fill_form, which meaningfully disambiguates the input, though it doesn't specify format or any validation constraints.

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 — lock/flatten a filled form by drawing every field value and comment into the page — and clearly distinguishes itself from siblings like fill_form, read_form, and verify_form by naming them. An agent can tell exactly what this does 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to run read_form or verify_form first because a locked form can't be read back or checked, and names the expected input source (the filled PDF from fill_form). It also states the two refusal cases (digitally signed PDF, dynamic XFA), which is when-not guidance.

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.