Skip to main content
Glama

pdfedit-mcp

Server Details

Edit text inside existing PDFs: replace, delete, redact, insert, fill forms; original fonts kept.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
zp130221/pdfedit-mcp
GitHub Stars
0
Server Listing
pdfedit

TDQS

A4/5.0

Scored across 5 tools

Disambiguation4/5

Each tool has a fairly distinct role: pdf_find reads text, pdf_preview renders an image, pdf_edit writes on one document, pdf_batch runs the same edit across many records, and pdf_job retrieves async results. The only mild overlap is between pdf_edit and pdf_batch (both apply edits) and between pdf_find and pdf_preview (both inspect), but the descriptions clearly separate single-doc vs record-set and text vs visual inspection.

Naming Consistency5/5

All five tools share the exact same `pdf_` prefix and snake_case convention (pdf_batch, pdf_edit, pdf_find, pdf_job, pdf_preview). The pattern is fully predictable and no naming styles are mixed.

Tool Count4/5

Five tools is well within the healthy range and each one earns its place in the read/edit/verify loop. It is on the lean side for the broader PDF domain, but appropriate for an editing-focused server.

Completeness4/5

The editing lifecycle is well covered: inspect (pdf_find/pdf_preview), modify (pdf_edit), bulk-apply (pdf_batch), and fetch async results (pdf_job), with replace/delete/redact/insert/form-fill all available via the op parameter. Minor gaps exist around document creation, page-level manipulation (split/merge/reorder), and exporting extracted text, which agents may need for adjacent tasks.

Available Tools

5 tools
pdf_batchBatch-edit a PDF templateA
Idempotent
Inspect

Apply the same edits to one template PDF once per record, producing one output document per record — a mail merge over an existing PDF. Returns a job_id: call pdf_job with it for the per-record results. To change text on one page only, set scope.pages; to pick one of several identical matches, use scope.after with nearby text or scope.occurrence. Use op: 'redact' when the text must be unrecoverable.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe PDF: an absolute (or ~) local path, which this server uploads for you, an https:// URL the API fetches, or an `f_…` file id from an earlier call. Used as the template for every record.
editsYesThe edits applied to each record, with `{field}` placeholders filled from it.
optionsNo
recordsNoOne object per output document.
passwordNo
records_urlNoA CSV or JSONL file of records, instead of `records`.

TDQS

A4.4/5.0
Behavior4/5

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

Adds behavior beyond the annotations: it discloses that the call returns a `job_id` consumed by `pdf_job`, i.e. an asynchronous job pattern the annotations do not convey. It also flags redaction as an irreversibility concern. It does not touch idempotency or the dry_run/preview options, so it stops short of full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, all front-loaded: what it does, what it returns, then two conditional usage tips. Every sentence earns its place with no filler.

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?

No output schema exists, and the description correctly states the return value (`job_id`) and where to get results. For a tool with ~20 option flags, records/records_url, and nested edits, the core path is covered but the option surface is left entirely to the schema.

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 coverage is 67%, and the description compensates meaningfully by explaining the three scope selectors (`pages`, `after`, `occurrence`) and the `redact` op — semantics that the schema only exposes as bare defaults. It leaves `edits` placeholder substitution (`{field}`) mostly to the schema, so not a 5.

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?

Names a specific verb (apply edits), the resource (one template PDF), and the cardinality (once per record, one output per record). The mail-merge analogy and the explicit handoff to `pdf_batch`'s sibling `pdf_job` make it unmistakable versus `pdf_edit`.

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?

Routes the agent to `pdf_job` for results and gives conditional guidance (use `scope.pages` for one page, `scope.after`/`scope.occurrence` for ambiguous matches, `op: 'redact'` when text must be unrecoverable). No explicit when-not-to-use versus `pdf_edit`, but the per-record framing implies the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_editEdit a PDFA
Idempotent
Inspect

Edit the text of an existing PDF in place: replace, delete, redact, insert, or fill form fields, keeping the original layout, fonts and everything you did not point at. edits[] is taken exactly as the API takes it (op, scope, match, fit), and the result carries up to 3 before/after previews of the pages that changed. To change text on one page only, set scope.pages; to pick one of several identical matches, use scope.after with nearby text or scope.occurrence. Use op: 'redact' when the text must be unrecoverable.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe PDF: an absolute (or ~) local path, which this server uploads for you, an https:// URL the API fetches, or an `f_…` file id from an earlier call.
editsYesThe edits to apply, in order, exactly as `POST /v1/edit` takes them.
optionsNo
passwordNoThe document open password, when it has one.
output_pathNoWhere to write the edited PDF (stdio mode only). Default: `<name>.edited.pdf` next to the input.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-destructive, idempotent, open-world. The description adds genuinely new behavior: original layout/fonts and untouched content are preserved, up to 3 before/after page previews are returned, and the server uploads local paths for you. It still does not mention permissions, size limits, or what happens with multiple failing edits in a batch.

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 verb and resource, then capabilities, then option-level guidance. Every sentence carries content, though the second sentence packs a dense `op`, `scope`, `match`, `fit` enumeration that is somewhat run-on.

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 nested-schema mutation tool with no output schema, the description covers the core edit model, targeting rules, and the preview return. Gaps remain around the many `options` flags and password handling, but the schema's 80% coverage plus defaults mitigate much of that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the baseline is 3 and most fields are already documented. The description does add real meaning beyond the schema for scope.pages, scope.after/occurrence disambiguation, and the preview payload, but leaves the large `options` surface (atomic, dry_run, strict, ocr, tidy) entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with enumerated capabilities: 'Edit the text of an existing PDF in place: replace, delete, redact, insert, or fill form fields.' This is far more specific than the title, but it never names or contrasts with siblings such as pdf_batch or pdf_find, so an agent must infer the boundary on its own.

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?

Gives clear in-tool routing rules: scope.pages for a single page, scope.after/occurrence to disambiguate identical matches, and op:'redact' when the text must be unrecoverable. It does not say when to prefer pdf_batch (many files) or pdf_find (locating text first), so cross-tool selection is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_findRead the text of a PDFA
Read-onlyIdempotent
Inspect

Read the text of a PDF: every span with its page, position, font and span id, optionally filtered by query (the same four match modes an edit uses) and pages, over the content, forms and annotations layers. Paginated: pass the returned next_cursor back as cursor for the next page. Use it before pdf_edit to check what a document actually says and to pick the scope that selects the match you mean.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe PDF: an absolute (or ~) local path, which this server uploads for you, an https:// URL the API fetches, or an `f_…` file id from an earlier call.
limitNo(default: 200)
matchNo
pagesNo
queryNo
cursorNo
layersNo
passwordNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/no-destruction, so the safety profile is covered. The description adds genuinely useful behavior beyond that: which layers are searched (`content`, `forms`, `annotations`) and that results are paginated via a returned `next_cursor` fed back as `cursor`. It does not mention handling of encrypted/password-protected documents even though a `password` parameter exists.

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?

Three compact clauses: purpose and return shape first, then filtering and pagination, then the workflow recommendation — a sensible front-loaded order with no filler sentences. The heavy parenthetical nesting (match modes, layer list) makes it dense rather than elegant, but nothing is wasted.

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 no output schema, the description correctly takes on the burden of describing the return value (spans with page/position/font/span id) and the pagination contract, and it names the layers searched. For a read-only tool with annotated safety this is nearly complete; the only real omission is behavior for password-protected PDFs and any hint about the `limit` default.

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 low (25%), so the description has to carry weight and largely does: it explains that `query` uses "the same four `match` modes an edit uses," that `pages` scopes the range, that `layers` selects among content/forms/annotations, and how `cursor`/`next_cursor` interlock. It leaves `limit` and `password` unaddressed, so it is not fully compensating, but the coverage of the semantically demanding parameters is strong.

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 states a specific verb and resource ("Read the text of a PDF") and immediately enumerates what is returned: every span with its page, position, font and span id. It also distinguishes itself from siblings by positioning itself as the read/inspection step that precedes `pdf_edit`, so an agent can tell it apart from pdf_edit, pdf_preview and pdf_batch without opening schemas.

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 gives an explicit use case and sequencing: "Use it before `pdf_edit` to check what a document actually says and to pick the `scope` that selects the match you mean." That is clear when-to-use guidance anchored to a named sibling. It stops short of explicit when-not guidance (e.g. when to prefer `pdf_preview` for rendered pages or `pdf_batch` for multiple files), which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_jobJob resultA
Read-onlyIdempotent
Inspect

The result of an async edit or a batch, by job_id: the same body pdf_edit returns once the job is done, plus progress while it is still queued or running, and records for a batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe `job_id` an async edit or a batch returned.
output_pathNoWhere to write the finished document (stdio mode, single-document jobs only).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety bar is low. The description adds real value beyond them: the response shape varies by job lifecycle state (progress while queued/running, finished body once done, records for batches). It does not mention that output_path writes a file to disk, which is a minor undisclosed side effect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that identifies the resource first, then the two state-dependent fields. Every clause carries information; there is no filler.

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 no output schema, the description must describe return values, and it does so for the three main cases (finished body, progress, records). It leaves out error/failure states (e.g., what a failed job returns), which is the only notable gap for a polling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented at the schema level, which sets the baseline at 3. The description only echoes that job_id comes from an async edit or a batch, adding marginal context and nothing about output_path semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a precise resource (the result of an async edit or batch) keyed by job_id, and explicitly relates it to pdf_edit and pdf_batch, so an agent can tell it is the retrieval/polling counterpart rather than a new operation. The verb 'result' is implicit rather than stated, keeping it short of a 5.

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 description gives clear context: this is what you call with a job_id that an async edit or batch returned, and the payload differs by state (progress while queued/running, records for a batch). It offers no explicit exclusions, but no sibling competes for this job, so the guidance is functionally complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pdf_previewRender a PDF pageA
Read-onlyIdempotent
Inspect

Render one page of a PDF as a PNG image block, optionally cropped to region and with rectangles drawn over highlight. Use it to see a page before editing it, or to check the result afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesThe PDF: an absolute (or ~) local path, which this server uploads for you, an https:// URL the API fetches, or an `f_…` file id from an earlier call.
pageNo(default: 1)
scaleNo(default: 2)
regionNo
passwordNo
highlightNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds the return format ("PNG image block") and crop/highlight rendering behavior, which is useful, but says nothing about password-protected handling, scale implications, or page limits beyond what the schema implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the verb and resource before the optional features and usage note. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 6 parameters at 50% description coverage, the description should do more: the password parameter is unmentioned and the region/highlight formats are unexplained. It adequately conveys purpose and usage but leaves real gaps for an agent calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; region and highlight have no schema descriptions, and the description names both with their semantic role (crop region, drawn rectangles). However it omits coordinate format for region/highlight and never mentions the password parameter, so it only partly compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (Render), resource (one page of a PDF), and output format (PNG image block). Its purpose is clearly distinct from the edit/find/job/batch siblings, though it never names them explicitly to sharpen the contrast.

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?

"Use it to see a page before editing it, or to check the result afterwards" supplies concrete when-to-use context and implicitly positions it against pdf_edit in a workflow. It stops short of naming alternatives or stating exclusions, so it lands just below the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedpdf_batch
    • First observedpdf_edit
    • First observedpdf_find
    • First observedpdf_job
    • First observedpdf_preview

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables editing text in existing PDFs by modifying content stream operators, preserving original fonts and positions. Provides fidelity reports on every edit, indicating font preservation, substitution, overflow, and other degradations.
    23 PyPI
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to edit text inside real PDF files in place while preserving fonts and layout, with a before/after preview. Also supports compressing, merging, splitting, converting, translating, generating and querying PDFs through a hosted remote MCP endpoint.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables creating PDFs from text, Markdown, or tabular data and editing existing ones through metadata and page operations, with support for CJK font embedding, tagged PDF/PDF-UA, and PDF/A archival output.
    20
    53 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.