{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_a9fbkg8vmwd5","handle":"pdfoven","url":"https://wellknown.network/agents/pdfoven","links":{"self":"https://wellknown.network/agents/pdfoven/record.json","html":"https://wellknown.network/agents/pdfoven","markdown":"https://wellknown.network/agents/pdfoven/record.md","api":"https://wellknown.network/api/v1/agents/pdfoven","status":"https://wellknown.network/api/v1/agents/pdfoven/status","claim":"https://wellknown.network/agents/pdfoven/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/pdfoven/claim.json","badge":"https://wellknown.network/agents/pdfoven/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/pdfoven/history","tools":"https://wellknown.network/api/v1/agents/pdfoven/tools"},"ard":{"identifier":"urn:air:pdfoven.com:server:pdfoven","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"PDFOven","summary":"Generate PDFs and images from HTML, Markdown, URLs or JSON templates.","description":"Generate PDFs and images from HTML, Markdown, URLs or JSON templates.","publisher":{"name":"com.pdfoven","url":null},"homepage":"https://pdfoven.com","repository":null,"version":"0.2.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://pdfoven.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T20:08:19.903592Z","publishedAt":"2026-10-16T20:08:19.903592Z","registryName":"com.pdfoven/pdfoven"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"ai.prompting","name":"Prompt Management","confidence":0.938,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"}],"categories":["ai","dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-10-27T01:27:03.507Z","lastProbedAt":"2026-10-27T01:27:03.507Z","statusComputedAt":"2026-10-27T01:28:45.205Z","reliability30d":{"probes":30,"successRate":1,"p50Ms":102,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":30,"ok":30,"authBoundaryOk":0,"serviceOk":30,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-27T01:27:03.507Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":100,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T18:31:52.034Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":111,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T10:31:05.406Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":107,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T03:29:29.859Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":102,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T20:27:01.685Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":127,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T12:31:21.655Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":102,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-25T05:30:13.775Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":99,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T22:24:23.892Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":101,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T14:24:35.787Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":93,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-24T07:28:40.338Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":97,"error":null,"detail":{"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"toolCount":13,"toolsHash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","serverName":"pdfoven","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"render_pdf","description":"Render a PDF from exactly one source: html, markdown, url, template (+data) or template_id (+data). Returns the PDF as a base64 embedded resource. Each successf"},{"name":"render_image","description":"Render a PNG image from exactly one source: html, markdown, url (a website screenshot), template (+data) or template_id (+data). Built-in 1200x630 social cards:"},{"name":"merge_pdfs","description":"Join 2-50 PDFs into one, in order, optionally picking pages from each. Returns the merged PDF as a base64 resource. Uses one render from the monthly quota."},{"name":"split_pdf","description":"Split a PDF. Send pages to extract one PDF, ranges for one PDF per range (returned as a zip), or every to split into chunks of N pages. Uses one render."},{"name":"compress_pdf","description":"Make a PDF smaller by recompressing and downscaling large images and cleaning unused data. Returns the original unchanged if it can't be made smaller. Uses one "},{"name":"watermark_pdf","description":"Stamp text (Latin characters) or a PNG/JPEG image onto a PDF's pages: centred and diagonal, tiled, or in a corner. Uses one render."},{"name":"list_pdf_form_fields","description":"List a fillable PDF's form fields: name, type, current value, options and page. Use the names with fill_pdf_form. Does not use render quota."},{"name":"fill_pdf_form","description":"Fill a PDF form's fields by name (text, checkboxes as true/false, radio and dropdown options) and optionally flatten it so it can't be edited. Unknown field nam"},{"name":"list_templates","description":"List every template saved in the PDFOven account, newest first, as JSON with id, name, engine and sample_data. Use an id with render_pdf/render_image (template_"},{"name":"get_template","description":"Fetch one saved template in full: content, css, sample_data and page_options. Use it before update_template to see the current body. Does not use render quota."},{"name":"create_template","description":"Save a new reusable template to the account and return its id. Templates are capped per plan (Free 3); at the cap this returns a tool error. Render it later wit"},{"name":"update_template","description":"Change a saved template. Only the fields you pass are replaced; others keep their current values. Future renders with this template_id use the new version immed"},{"name":"delete_template","description":"Permanently delete a saved template. This cannot be undone, and renders that reference its template_id will fail afterwards. Confirm with the user first."}],"package":null,"toolSurface":{"id":"ts_gjk6qm3ss5dr","endpointId":"ep_zk3wtyb782us","hash":"88b8f66f1a9d20ea9be81d31b78668d5ca4a0ca4d2ea1be86cb4917aca0b4c8e","toolCount":13,"serverName":"pdfoven","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-22T21:30:58.229Z","lastSeenAt":"2026-10-27T01:27:03.512Z","observations":15,"toolNames":["render_pdf","render_image","merge_pdfs","split_pdf","compress_pdf","watermark_pdf","list_pdf_form_fields","fill_pdf_form","list_templates","get_template","create_template","update_template","delete_template"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_zk3wtyb782us","url":"https://pdfoven.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-24T22:24:23.905Z","auth":{"observedAt":"2026-10-24T22:24:24.003Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-24T22:24:24.012Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"pdfoven.com","issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validFrom":"2026-10-16T00:19:18.000Z","validTo":"2027-01-14T00:19:17.000Z","daysToExpiry":78,"sanCount":1,"fingerprint256":"A0:E5:35:10:4C:01:EF:5D:A6:C8:1E:5F:62:5A:A7:10:64:61:BD:00:3A:13:DA:BD:04:15:1F:1E:A5:6A:4B:C4"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.pdfoven/pdfoven","url":"https://registry.modelcontextprotocol.io/v0/servers/com.pdfoven%2Fpdfoven","firstSeenAt":"2026-10-18T10:18:54.087Z","fetchedAt":"2026-10-25T08:18:50.986Z","normalizedAt":"2026-10-25T08:18:50.986Z"}]},"firstSeenAt":"2026-10-18T10:18:54.087Z","updatedAt":"2026-10-27T01:29:31.942Z"}