Skip to content

PreteWorks API

by preteworks.com · remote · no sign-in to list tools · v1.0.2 · published by com.preteworks

One key for the document-to-web pipeline: scrape, AI-extract, build & edit PDFs, fill forms.

Final · 1Changes · 21

29 tools: 1 do something that can't be undone, 21 change things and 7 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http preteworks-api https://api.preteworks.com/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "file_to_markdown" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

    What this check looks for
  • The server marks "url_to_pdf" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.

    What this check looks for
  • The server marks "url_to_screenshot" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "url_to_screenshot" says "screenshot": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

29 tools

Can't be undone 1Claude Code: ask
  • merge_pdfsCombine 2+ PDFs into a single PDF, in the order given.No findings

    Why it is in this group

    • The name "merge_pdfs" says "merge": a word for a change that another call does not undo.
    Description, as the server wrote it
    Combine 2+ PDFs into a single PDF, in the order given. Inputs are file_ids (from prior tools) or base64 PDFs. Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Changes things 21Claude Code: ask
  • answer_from_documentAnswer a question grounded ONLY in a source document — a web page, PDF, Office file, or raw text.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Answer a question grounded ONLY in a source document — a web page, PDF, Office file, or raw text. Provide 'question' plus ONE source: 'url', 'pdf', 'file' (base64), or 'text'. Says so when the answer isn't in the document.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • data_to_spreadsheetTurn rows of data into a downloadable XLSX (default) or CSV.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Turn rows of data into a downloadable XLSX (default) or CSV. 'rows' is an array of objects (keys → header row) or an array of arrays (first row is the header). Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • docx_to_pdfConvert a .docx document (base64) to a PDF.No findings

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    Description, as the server wrote it
    Convert a .docx document (base64) to a PDF. Returns a file_id and a ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • docx_to_textExtract the text of a .docx document (base64).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Extract the text of a .docx document (base64). Returns the text inline.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • extract_dataExtract specified fields from a web page, PDF, or Office file as JSON, using AI.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Extract specified fields from a web page, PDF, or Office file as JSON, using AI. Provide 'fields' plus ONE source: a 'url', a 'pdf' (file_id or base64), or a 'file' (base64 .docx/.xlsx/.csv). Returns a JSON object mapping each field to its value, or null when absent.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • extract_pdf_textExtract the text content of a PDF — for RAG, summarization, or search.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Extract the text content of a PDF — for RAG, summarization, or search. Accepts a file_id (from a prior tool) or a base64-encoded PDF, and returns the text inline. Not OCR: a scanned/image-only PDF returns little or no text.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • file_to_markdownConvert a Word (.docx), Excel (.xlsx) or CSV file (base64) into clean Markdown — for RAG, agents and pipelines.1 finding

    Why it is in this group

    • The description's first verb is "convert": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "file_to_markdown" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Convert a Word (.docx), Excel (.xlsx) or CSV file (base64) into clean Markdown — for RAG, agents and pipelines. DOCX keeps headings/lists/tables; spreadsheets become Markdown tables (one per sheet). Returns Markdown inline. Optional 'format' (docx|xlsx|csv) overrides auto-detection.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • fill_pdf_formFill a PDF's form fields from a map of field -> value; optionally flatten.No findings

    Why it is in this group

    • The name "fill_pdf_form" says "fill": a word for a change.
    Description, as the server wrote it
    Fill a PDF's form fields from a map of field -> value; optionally flatten. Returns a file_id and a ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • images_to_pdfCombine PNG/JPEG images (base64) into a PDF, one image per page.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Combine PNG/JPEG images (base64) into a PDF, one image per page. Returns a file_id and a ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • map_siteDiscover the same-origin URLs linked from a page — the site map, with no page content fetched.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Discover the same-origin URLs linked from a page — the site map, with no page content fetched. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • markdown_to_pdfRender Markdown to a clean, print-styled PDF.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Render Markdown to a clean, print-styled PDF. Returns a file_id and a ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • number_pdfStamp a page number on every page.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Stamp a page number on every page. position: bottom-center (default) | bottom-left | bottom-right | top-center | top-left | top-right. format supports {n} and {total}. Returns a file_id + ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • render_documentRender a structured document to a PDF from a named template (invoice, receipt, report).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Render a structured document to a PDF from a named template (invoice, receipt, report). Money/totals are computed for you. Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • render_html_to_pdfRender a full HTML document to a PDF.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Render a full HTML document to a PDF. External subresources are blocked for safety — inline images/fonts as data: URIs. Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • rotate_pdfRotate every page of a PDF by 90, 180, or 270 degrees (clockwise).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Rotate every page of a PDF by 90, 180, or 270 degrees (clockwise). Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • select_pagesKeep only the specified pages of a PDF (e.g.No findings

    Why it is in this group

    • The name "select_pages" says "select": a word for a change.
    Description, as the server wrote it
    Keep only the specified pages of a PDF (e.g. [1,3,5]) and drop the rest, preserving order. Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • set_pdf_metadataSet a PDF's title, author, subject, keywords (array or comma string) and/or creator.No findings

    Why it is in this group

    • The name "set_pdf_metadata" says "set": a word for a change.
    Description, as the server wrote it
    Set a PDF's title, author, subject, keywords (array or comma string) and/or creator. Only the fields you provide change. Returns a file_id + ~1h URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • split_pdfSplit a PDF into multiple PDFs — one per page by default, or by page ranges like '1-3;4-6'.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Split a PDF into multiple PDFs — one per page by default, or by page ranges like '1-3;4-6'. Returns a file_id + URL per part.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
  • url_to_pdfFetch a public http/https URL and render the live page to a PDF.1 finding

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "url_to_pdf" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Fetch a public http/https URL and render the live page to a PDF. Returns a file_id (chainable into the PDF tools) and a ~1h download URL. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • url_to_screenshotFetch a public http/https URL and capture a PNG screenshot.1 finding

    Why it is in this group

    • The name "url_to_screenshot" says "screenshot": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "url_to_screenshot" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "url_to_screenshot" says "screenshot": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Fetch a public http/https URL and capture a PNG screenshot. Set full_page for the entire scroll height. Returns a file_id and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • watermark_pdfStamp a diagonal grey text watermark (e.g.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Stamp a diagonal grey text watermark (e.g. "DRAFT", "CONFIDENTIAL") across every page of a PDF. Returns a file_id (for chaining) and a ~1h download URL.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: false
Only reads 7Claude Code: allow
  • batch_scrapeFetch up to 10 public URLs and return each as clean Markdown, in one call — for research/RAG over several pages at once.No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    Fetch up to 10 public URLs and return each as clean Markdown, in one call — for research/RAG over several pages at once. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • crawl_siteFetch a URL plus up to 7 more same-origin pages it links to (≤8 total), each as clean Markdown.No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    Fetch a URL plus up to 7 more same-origin pages it links to (≤8 total), each as clean Markdown. Bounded and synchronous. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pdf_infoRead a PDF's metadata (title, author, subject, keywords, creator, producer, dates) plus page count and page size, as JSON.No findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.
    Description, as the server wrote it
    Read a PDF's metadata (title, author, subject, keywords, creator, producer, dates) plus page count and page size, as JSON.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • read_pdf_formList a PDF's form fields (name, type, value, options) as JSON.No findings

    Why it is in this group

    • The name "read_pdf_form" says "read": a word for reading.
    Description, as the server wrote it
    List a PDF's form fields (name, type, value, options) as JSON.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • read_urlFetch a public http/https URL and return its main content as clean Markdown — ideal for giving an agent readable web content for research or RAG.No findings

    Why it is in this group

    • The name "read_url" says "read": a word for reading.
    Description, as the server wrote it
    Fetch a public http/https URL and return its main content as clean Markdown — ideal for giving an agent readable web content for research or RAG. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • scrape_pageFetch a public http/https URL and return its rendered HTML, the links on the page, and page metadata (title/description/OpenGraph/canonical/favicon) — in one render.No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    Fetch a public http/https URL and return its rendered HTML, the links on the page, and page metadata (title/description/OpenGraph/canonical/favicon) — in one render. For clean Markdown use read_url instead. Private/internal hosts are blocked.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • summarize_documentSummarize a web page, PDF, Office file (.docx/.xlsx/.csv), or raw text using AI.No findings

    Why it is in this group

    • The name "summarize_document" says "summarize": a word for reading.
    Description, as the server wrote it
    Summarize a web page, PDF, Office file (.docx/.xlsx/.csv), or raw text using AI. Provide ONE source: 'url', 'pdf' (file_id or base64), 'file' (base64), or 'text'. Optional 'max_words'. Returns the summary.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.2. Values in angle brackets are yours to fill in.

claude mcp add --transport http preteworks-api https://api.preteworks.com/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__preteworks-api__pdf_info",
      "mcp__preteworks-api__read_pdf_form",
      "mcp__preteworks-api__batch_scrape",
      "mcp__preteworks-api__crawl_site",
      "mcp__preteworks-api__summarize_document",
      "mcp__preteworks-api__read_url",
      "mcp__preteworks-api__scrape_page"
    ],
    "ask": [
      "mcp__preteworks-api__render_html_to_pdf",
      "mcp__preteworks-api__number_pdf",
      "mcp__preteworks-api__set_pdf_metadata",
      "mcp__preteworks-api__render_document",
      "mcp__preteworks-api__merge_pdfs",
      "mcp__preteworks-api__select_pages",
      "mcp__preteworks-api__rotate_pdf",
      "mcp__preteworks-api__watermark_pdf",
      "mcp__preteworks-api__extract_pdf_text",
      "mcp__preteworks-api__images_to_pdf",
      "mcp__preteworks-api__markdown_to_pdf",
      "mcp__preteworks-api__split_pdf",
      "mcp__preteworks-api__fill_pdf_form",
      "mcp__preteworks-api__file_to_markdown",
      "mcp__preteworks-api__data_to_spreadsheet",
      "mcp__preteworks-api__map_site",
      "mcp__preteworks-api__extract_data",
      "mcp__preteworks-api__answer_from_document",
      "mcp__preteworks-api__docx_to_text",
      "mcp__preteworks-api__docx_to_pdf",
      "mcp__preteworks-api__url_to_pdf",
      "mcp__preteworks-api__url_to_screenshot"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as preteworks-api. Review it before you use it.