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). |
| 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
- 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