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.
29 tools: 1 do something that can't be undone, 21 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things21Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
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.
- Warnfile_to_markdown
The server marks "file_to_markdown" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
- Warnurl_to_pdf
The server marks "url_to_pdf" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
The server marks "url_to_screenshot" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "url_to_screenshot" says "screenshot": a word for reading.
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".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":false}; The description's first verb is "convert": a word for a change.
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.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
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.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true}; The name "url_to_screenshot" says "screenshot": a word for reading.
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.
{
"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.