{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_cqt85dnq9ktx","handle":"tanod-docs","url":"https://wellknown.network/agents/tanod-docs","links":{"self":"https://wellknown.network/agents/tanod-docs/record.json","html":"https://wellknown.network/agents/tanod-docs","markdown":"https://wellknown.network/agents/tanod-docs/record.md","api":"https://wellknown.network/api/v1/agents/tanod-docs","status":"https://wellknown.network/api/v1/agents/tanod-docs/status","claim":"https://wellknown.network/agents/tanod-docs/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tanod-docs/claim.json","badge":"https://wellknown.network/agents/tanod-docs/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tanod-docs/history","tools":"https://wellknown.network/api/v1/agents/tanod-docs/tools"},"ard":{"identifier":"urn:air:tanod.dev:server:tanod-docs","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"PDF & Office Tools (Tanod)","summary":"Bank statement PDF to CSV, OCR, Office to PDF, PDF to Word, any file to Markdown, merge and split.","description":"Bank statement PDF to CSV, OCR, Office to PDF, PDF to Word, any file to Markdown, merge and split.","publisher":{"name":"dev.tanod","url":null},"homepage":"https://tanod.dev","repository":null,"version":"0.1.7","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tanod.dev/mcp/docs","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T14:54:53.552971Z","publishedAt":"2026-10-16T14:54:53.552971Z","registryName":"dev.tanod/docs"},"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":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"documents.ocr","name":"OCR","confidence":1,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":1,"provenance":"derived"},{"slug":"documents.presentations","name":"Presentations","confidence":1,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":1,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.977,"provenance":"derived"},{"slug":"finance.accounting","name":"Accounting","confidence":0.569,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.525,"provenance":"derived"}],"categories":["content","dev","documents","finance"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-22T11:35:36.901Z","lastProbedAt":"2026-10-22T11:35:36.901Z","statusComputedAt":"2026-10-22T11:38:40.429Z","reliability30d":{"probes":48,"successRate":1,"p50Ms":528,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":48,"ok":48,"authBoundaryOk":0,"serviceOk":48,"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-22T11:35:36.901Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":268,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Clear "},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"1f22ffd0cfd369092c0bcdbeaee43789ad83311bbbe951adcda9d8f7b6ea8677","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T05:32:14.589Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":242,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T22:31:02.664Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":279,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T12:27:29.425Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":735,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T04:27:41.247Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":707,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T22:23:41.401Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":741,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T15:29:46.016Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":725,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T08:32:41.417Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":263,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T02:32:21.772Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":275,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T19:33:20.622Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":312,"error":null,"detail":{"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Passwo"},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"toolCount":40,"toolsHash":"dde4e0473bd5b691d2013331f17cdd1f8a323c09b5e56fc4e73783424a592e19","serverName":"tanod-docs","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"extract_pdf","description":"sitepeek: extract the text of a public PDF. For tables use extract_pdf_tables; for scans use pdf_ocr; for other formats use convert_document_to_markdown. Clear "},{"name":"ocr_image","description":"sitepeek: OCR the text in a public image. For a scanned PDF use pdf_ocr; for QR codes and barcodes use read_qr_barcode. Returns width, height, format, text (lin"},{"name":"extract_pdf_tables","description":"pdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. For running text use extract_pdf; for a bank statement use conve"},{"name":"convert_bank_statement","description":"pdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. For any other table use extract_pdf_tables. Returns"},{"name":"convert_office_to_pdf","description":"pdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. For the reverse use convert_pdf_to_word. Returns the document as a PDF made by Libr"},{"name":"convert_excel_to_json","description":"pdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. To build a workbook use build_xlsx_workbook. Returns the .xlsx/.xlsm wo"},{"name":"convert_document_to_markdown","description":"pdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. For PDF tables as rows use extract_pdf_tables. Returns "},{"name":"convert_pdf_to_word","description":"pdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. For the reverse use convert_office_to_pdf; for plain text use convert_document_to_mar"},{"name":"fill_docx_template","description":"pdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. For slides from JSON use build_pptx_deck. Returns the filled document, bas"},{"name":"build_pptx_deck","description":"pdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. For a workbook use build_xlsx_workbook; for a Word file use fill_docx_temp"},{"name":"build_xlsx_workbook","description":"pdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. To read a workbook back use convert_excel_to_json; for slides use build_pptx_deck. Ro"},{"name":"compare_documents","description":"pdfpeek: Compare two PDF or Word documents: changed paragraphs and rows, word diff, redline. For two plain texts use diff_text. Returns `summary` (inserted, del"},{"name":"pdf_merge","description":"pdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. To cut one PDF apart use pdf_split. Returns o"},{"name":"pdf_split","description":"pdfpeek: Split a PDF by page ranges or every N pages. For one file of chosen pages use pdf_extract_pages. Returns a PDF split into several files: one per comma "},{"name":"pdf_extract_pages","description":"pdfpeek: Extract pages from a PDF. To drop pages use pdf_remove_pages; for several files use pdf_split. Returns a new PDF with the selected pages in the order g"},{"name":"pdf_remove_pages","description":"pdfpeek: Remove pages from a PDF. To keep only some pages use pdf_extract_pages. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); rem"},{"name":"pdf_rotate","description":"pdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. For several page operations in one call use pdf_pipeline. Returns the PDF with its pages (or a `pa"},{"name":"pdf_compress","description":"pdfpeek: Compress a PDF to shrink its file size. For an image-only copy use pdf_rasterize. Returns a smaller PDF: `level` lossless (structure only), recommended"},{"name":"pdf_to_images","description":"pdfpeek: Convert PDF pages to PNG or JPEG images. For one image-only PDF use pdf_rasterize. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaS"},{"name":"pdf_rasterize","description":"pdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. To shrink and keep text use pdf_compress; for page images use pdf_to_images. Retu"},{"name":"images_to_pdf","description":"pdfpeek: Convert 1-30 images into a PDF. For Office files use convert_office_to_pdf; for a web page use html_to_pdf. Returns one PDF page per image (PNG, JPEG o"},{"name":"pdf_watermark","description":"pdfpeek: Add a text watermark to a PDF. For page numbers use pdf_page_numbers; for images use image_watermark. Returns the PDF with a text watermark on every pa"},{"name":"pdf_page_numbers","description":"pdfpeek: Add page numbers to a PDF. For a text stamp use pdf_watermark. Returns the PDF with page numbers in a `format` such as \"Page {n} of {N}\" at one of 6 po"},{"name":"pdf_protect","description":"pdfpeek: Password-protect a PDF. To remove a password use pdf_unlock; to black out content use pdf_redact. Returns the PDF encrypted with AES-256: `user_passwor"},{"name":"pdf_unlock","description":"pdfpeek: Unlock a password-protected PDF. To add a password use pdf_protect. Returns the PDF decrypted, only with a password that opens it (the user or owner pa"},{"name":"pdf_metadata","description":"pdfpeek: Read, edit or strip the metadata of a PDF. For pages, forms and active content use pdf_inspect. Returns a PDF's document metadata (title, author, subje"},{"name":"html_to_pdf","description":"pdfpeek: Convert a web page URL to PDF. For images use images_to_pdf; for an image capture use take_website_screenshot. Returns a public web page printed to PDF"},{"name":"pdf_ocr","description":"pdfpeek: OCR a scanned PDF into a searchable PDF. For one image use ocr_image; for a PDF with a text layer use extract_pdf. Returns a searchable PDF: tesseract "},{"name":"pdf_inspect","description":"pdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. It changes nothing; for title, author and dates, or to edit t"},{"name":"pdf_reorder_pages","description":"pdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. To only drop pages use pdf_remove_pages. Returns a new PDF made of the pages in"},{"name":"pdf_crop","description":"pdfpeek: Crop the margins of a PDF. To change the paper size use pdf_resize. Returns the PDF with every page's (or a `pages` selection's) crop box set inside th"},{"name":"pdf_resize","description":"pdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. To trim margins use pdf_crop. Returns pages scaled to A4, Letter, Legal or a custom width x hei"},{"name":"pdf_outline","description":"pdfpeek: Read the bookmarks of a PDF as a nested tree. To write bookmarks use pdf_set_outline. Returns the bookmarks as a nested tree of {title, page, open, chi"},{"name":"pdf_set_outline","description":"pdfpeek: Write the bookmarks of a PDF from a nested tree. To read bookmarks use pdf_outline. Returns the PDF with its bookmarks replaced by the `outline` tree {"},{"name":"pdf_form_fields","description":"pdfpeek: List the form fields of a PDF. To fill the fields use pdf_fill_form. Returns the form's fields in reading order: name (for fill-form), type (text, chec"},{"name":"pdf_fill_form","description":"pdfpeek: Fill the form fields of a PDF from a JSON object. To make the values permanent use pdf_flatten. Returns the PDF with its form filled from `fields` (nam"},{"name":"pdf_flatten","description":"pdfpeek: Flatten the form fields and annotations of a PDF into the page content. To fill fields first use pdf_fill_form. Returns the PDF with form fields and an"},{"name":"pdf_repair","description":"pdfpeek: Repair a damaged PDF. For a report on a readable file use pdf_inspect. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, "},{"name":"pdf_attachments","description":"pdfpeek: List, extract or add the file attachments of a PDF. For a whole-file report use pdf_inspect. Returns the PDF's file attachments by `action`: list (defa"},{"name":"pdf_pipeline","description":"pdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. For one operation use its own tool, such as pdf_rotate. Returns a PDF put through "}],"package":null,"toolSurface":{"id":"ts_u5mmn6g69vem","endpointId":"ep_vctr262yr8a5","hash":"1f22ffd0cfd369092c0bcdbeaee43789ad83311bbbe951adcda9d8f7b6ea8677","toolCount":40,"serverName":"tanod-docs","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-22T11:35:36.907Z","lastSeenAt":"2026-10-22T11:35:36.907Z","observations":1,"toolNames":["extract_pdf","ocr_image","extract_pdf_tables","convert_bank_statement","convert_office_to_pdf","convert_excel_to_json","convert_document_to_markdown","convert_pdf_to_word","fill_docx_template","build_pptx_deck","build_xlsx_workbook","compare_documents","pdf_merge","pdf_split","pdf_extract_pages","pdf_remove_pages","pdf_rotate","pdf_compress","pdf_to_images","pdf_rasterize","images_to_pdf","pdf_watermark","pdf_page_numbers","pdf_protect","pdf_unlock","pdf_metadata","html_to_pdf","pdf_ocr","pdf_inspect","pdf_reorder_pages","pdf_crop","pdf_resize","pdf_outline","pdf_set_outline","pdf_form_fields","pdf_fill_form","pdf_flatten","pdf_repair","pdf_attachments","pdf_pipeline"],"distinctSurfaces":12},"endpointFacts":[{"id":"ep_vctr262yr8a5","url":"https://tanod.dev/mcp/docs","type":"mcp_streamable_http","factsCheckedAt":"2026-10-16T19:25:31.829Z","auth":{"observedAt":"2026-10-16T19:25:32.096Z","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-16T19:25:32.115Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"tanod.dev","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-06T15:23:54.000Z","validTo":"2027-01-04T15:23:53.000Z","daysToExpiry":73,"sanCount":2,"fingerprint256":"42:4E:C3:21:85:BF:3C:16:A2:A4:8A:B6:42:6C:B6:FD:E6:C5:58:F5:8B:E1:73:93:8B:FF:10:6E:25:A4:98:76"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.tanod/docs","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.tanod%2Fdocs","firstSeenAt":"2026-10-09T14:21:22.203Z","fetchedAt":"2026-10-22T06:18:31.501Z","normalizedAt":"2026-10-22T06:18:31.501Z"}]},"firstSeenAt":"2026-10-09T14:21:22.203Z","updatedAt":"2026-10-22T11:40:51.971Z"}