Skip to main content
Glama

Fill a form from values

fill_form

Fill a PDF form from structured data such as JSON or key-value answers. Fill a ready form with values keyed by field id or field label. Checkboxes take yes or no; choice fields need one of their options. To lock the filled PDF, call flatten_pdf with its artifact_id; fill_form itself never flattens. Returns a download link plus any labels that did not match (ask the user about those). Billed as one fill; the first 5 each month are free. retention (ephemeral or account_default) is accepted but changes nothing: the form keeps the setting it was created with. Pass dry_run=true to rehearse this call without doing it: nothing is stored, charged or sent, and no AI is used. The answer says whether the real call would succeed or be refused, what it would cost, and what a rehearsal cannot check.

Input Schema

NameRequiredDescriptionDefault
valuesYes
dry_runNo
flattenNo
form_idYes
retentionNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "form_id": "11111111-2222-3333-4444-555555555555",
      -    "values": {
      -      "Email": "grace@example.com",
      -      "Full Name": "Grace Hopper"
      -    }
      -  }
      -]New value: +[
      +  {
      +    "form_id": "11111111-2222-3333-4444-555555555555",
      +    "values": {
      +      "Email": "grace@example.com",
      +      "Full Name": "Grace Hopper"
      +    }
      +  },
      +  {
      +    "dry_run": true,
      +    "form_id": "11111111-2222-3333-4444-555555555555",
      +    "values": {
      +      "Email": "grace@example.com",
      +      "Full Name": "Grace Hopper"
      +    }
      +  }
      +]
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "default": false,
      +  "title": "Dry Run",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "form_id": "11111111-2222-3333-4444-555555555555",
      +    "values": {
      +      "Email": "grace@example.com",
      +      "Full Name": "Grace Hopper"
      +    }
      +  }
      +]
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

A great deal of behavior beyond the annotations is disclosed: billing (one fill, first 5 monthly free), that retention is accepted but has no effect, that nothing is flattened, and what dry_run does and cannot verify. However, the claim 'fill_form itself never flattens' conflicts with the schema's own 'flatten' boolean parameter, leaving the agent unsure whether flattening is possible via this call.

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 first sentence front-loads purpose and the follow-on sentences each add a distinct constraint or behavior. It is dense rather than padded, though the dry_run and retention caveats make it longer than strictly necessary for a routine call.

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 an output schema present the description need not specify return values, yet it usefully notes the download link and unmatched labels. Combined with billing, dry_run, and locking guidance, an agent has nearly everything it needs, with the flatten ambiguity as the sole unresolved point.

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%, so the description must carry the load, and it does for most params: values are keyed by field id or label, checkboxes take yes/no, choice fields need one of their options, retention is a no-op, and dry_run rehearses without side effects. The 'flatten' parameter is left unexplained and implicitly contradicted, which is the one real gap.

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 gives a precise verb+resource ('Fill a PDF form from structured data') and scopes it to 'a ready form', which separates it from create_form, prepare_form, and fill_batch. A reader immediately knows the tool consumes an existing form and produces a filled PDF.

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?

It clearly states the follow-up path ('to lock the filled PDF, call flatten_pdf with its artifact_id'), instructs the agent to ask the user about unmatched labels, and explains the dry_run rehearsal. It does not explicitly distinguish when to use this over the sibling fill_batch or fill_form_from_context, so it falls short of full routing 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.