JustFill PDF Forms
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JUSTFILL_EMAIL | No | Email for legacy authentication (fallback, use API key instead). | |
| JUSTFILL_API_KEY | No | API key from justfill.app. Create at Account → API Keys. | |
| JUSTFILL_PASSWORD | No | Password for legacy authentication (fallback, use API key instead). |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| open_pdfA | Open a PDF (or a scanned image: jpg/png/tiff) and detect its fillable fields. Images are converted to a single-page PDF automatically (deterministically, so a template saved for a photo matches the same photo next time). Resolution order (best source wins):
force_detect=True skips steps 1-2 and re-runs ML detection from scratch — use it to rebuild a layout when the saved template is wrong or stale. min_confidence drops ML fields scored below it (templates/AcroForm are always kept). Returns a JSON summary + the field list. |
| list_fieldsC | List the current working fields (optionally one page only). |
| close_workspaceA | Release the current PDF and field data when work is finished. Saved templates and output PDFs are not deleted. This operation is idempotent, which makes it safe to call from automation cleanup blocks. |
| render_previewA | Render a page with the working field boxes drawn on it. Look at this image to VERIFY placement: blue boxes are deterministic (template/AcroForm/agent-placed); green/orange/red are ML detections by confidence (>=0.7 / >=0.4 / <0.4). Each box is labeled with its field id. |
| render_filled_previewA | Preview how the filled page will look BEFORE generating the PDF. Draws |
| add_fieldA | Add a field the detector missed (a false negative). Coordinates are percentages of the page (0-100), top-left origin — read them off the render_preview image proportionally. align ('left'|'center'|'right') and vertical_align ('top'|'middle'|'bottom') control where the value sits inside the box when the PDF is filled. |
| update_fieldC | Move/resize/rename a field, or set its text alignment. align: 'left'|'center'|'right'; vertical_align: 'top'|'middle'|'bottom' — where the value sits inside the box in the filled PDF. |
| update_fieldsA | Update many fields in one call (batch version of update_field). Each item: {"field_id": "...", and any of x, y, w, h, name, field_type, align, vertical_align}. Items with an unknown field_id are reported back, the rest are still applied. |
| remove_fieldC | Delete a field that isn't a real input (a false positive). |
| remove_fieldsB | Delete many fields in one call (batch version of remove_field). |
| prune_fieldsA | Bulk-delete fields matching ALL given criteria (e.g. detection noise). field_type: exact type match (e.g. 'cell'); confidence_below / width_below / height_below: strictly-less-than thresholds (w/h in % of page); page_index: limit to one page; exclude_ids: always keep these. Returns the removed ids so the operation is auditable (and reversible via add_field if it cut too much). |
| fill_pdfA | Fill the PDF and save it.
|
| save_templateA | Save the current (reviewed) field layout as a reusable template. Next time this exact PDF is opened — by you or another agent session on this account — open_pdf returns these fields with confidence 1.0 and no ML pass at all. This is what makes repeat filling deterministic. Before saving, give every field a short semantic name (update_fields with name=..., e.g. 'age_score', 'total_abcd2') — names are stored in the template, so the next session maps values by meaning instead of guessing from coordinates. Also remove false positives first (remove_fields). |
| list_templatesC | List saved templates on this account (name + field count + hash). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrmaciej1/justfill-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server