Tanod Docs

dev.tanod/docs · v0.1.5 · productivity

Tanod Docs is healthy: it completed an MCP handshake in 728 ms and exposes 39 tools.

Documents: DOCX template fill, Office to PDF, any file to Markdown, PDF to Word, OCR, PDF pipeline.

Endpoint: https://tanod.dev/mcp/docs (streamable-http)

No repository listed · Website · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count39
Latency728 ms
Last checked (UTC)2026-10-14T23:35:32.856Z

Health history

Checked (UTC)StatusLatencyError
2026-10-14T23:35:32.856ZHealthy728

Tools (39)

extract_pdfsitepeek: extract the text of a public PDF. Input: `url` and optional `max_pages`. Returns pages, extracted_pages, metadata (title, author, producer, created, modified), text (at most 200k characters, `truncated` when cut or when pages were skipped) and `encrypted`. Password-protected PDFs, files th
ocr_imagesitepeek: OCR the text in a public image. Input: `url` and optional `lang`. Returns width, height, format, text (lines and paragraphs kept), words and confidence_mean (0-100, mean word confidence). Non-images, oversize images and private addresses are a 422 (not charged). Typically 1-5 s. Price: USD
extract_pdf_tablespdfpeek: Use when an agent must pull the tables out of a PDF as JSON, CSV or XLSX for analysis. Returns every table of the selected pages (at most 200): `page`, `bbox`, `method`, `header` and `rows` of strings; `format` json (default), csv (a file per table) or xlsx (one workbook). Input: `url` or `
convert_bank_statementpdfpeek: Use when an agent must turn a PDF bank statement into dated transactions for bookkeeping or import. Returns transactions (`date`, `description`, signed `amount`, `balance`, `row_ok`), opening and closing balance, totals, `currency` and a `confidence` 0-1; every row is checked against the ru
convert_office_to_pdfpdfpeek: Convert a Word, Excel, PowerPoint, OpenDocument or RTF file to PDF. Returns the document as a PDF made by LibreOffice, base64 in `file`, with `format`, `pages` and `active_content_removed`. No options. Input: `url` or `file_base64`, and optional `filename`. Reads DOCX, XLSX, PPTX, ODT, ODS,
convert_excel_to_jsonpdfpeek: Read an Excel workbook into structured rows as JSON, or one CSV file per sheet. Returns the .xlsx/.xlsm workbook read into sheets of string rows. json returns `sheets` (name, columns, row_count, truncated, rows); csv returns one formula-guarded CSV per sheet. A formula cell is its last cach
convert_document_to_markdownpdfpeek: Use when an agent must read a Word, Excel, PowerPoint, PDF, HTML or EPUB file as Markdown text. Returns the document as Markdown (markitdown): headings, lists, links and tables kept, images skipped. `markdown` is cut at 500,000 characters (`truncated`); `format`, `characters` and, where kno
convert_pdf_to_wordpdfpeek: Use when an agent must convert a PDF to Word (.docx) for editing. Add output=url for a 24 h link. Returns a Word (.docx) file made by LibreOffice, base64 in `file`, plus `pages_without_text` and `warnings`: one positioned text box per line, not reflowable paragraphs. At most 50 pages (`page
fill_docx_templatepdfpeek: Fill the {{placeholders}} of a Word template with JSON data, as DOCX or PDF. Returns the filled document, base64 in `file` (DOCX, or PDF with output=pdf; delivery=url gives a 24 h link), with `placeholders_filled`, `missing` (names with no value, left as written) and `unmatched_loop_tags`.
build_pptx_deckpdfpeek: Generate a PowerPoint deck from JSON slides: titles, bullets, speaker notes. Returns the deck as a .pptx, base64 in `file` (output=url gives a 24 h link), with `slides` and `output_bytes`. Input: `slides`, optional deck `title` and optional `theme`. Slides: title, bullets (max 20), notes, l
build_xlsx_workbookpdfpeek: Build a styled Excel workbook from JSON sheets, columns and rows. Returns the workbook, base64 in `file` (.xlsx; output=url gives a 24 h link), with `sheets`, `rows`, `cells`, `formula_like_strings` and `sheet_summary`. Input: `sheets` and an optional `filename`. Rows are arrays or objects;
pdf_mergepdfpeek: Use when an agent must combine several PDFs into one file, optionally taking only selected pages of each. Returns one PDF made of 2-20 input PDFs in order, each optionally cut to a page selection (`pages`, e.g. 1-3,5); at most 500 pages out; bookmarks are not carried over. Input: `inputs`:
pdf_splitpdfpeek: Split a PDF by page ranges or every N pages. Returns a PDF split into several files: one per comma part of `ranges` (mode=ranges, e.g. 1-3,4-6,7-) or one every `every` pages (mode=every); at most 50 files. Input: `url` or `pdf_base64`, `mode` and `ranges` or `every`. More than 50 files is a
pdf_extract_pagespdfpeek: Extract pages from a PDF. Returns a new PDF with the selected pages in the order given (repeats allowed). Pages are 1-based: N, N-M, N- (to the end), -M and last, comma separated; an out-of-range or reversed part is a 422 page_out_of_range (never clamped). Pages not selected are really gone
pdf_remove_pagespdfpeek: Remove pages from a PDF. Returns the PDF without the selected pages (1-based: N, N-M, N-, -M, last); removed pages and everything only they reference are really gone. Removing every page is a 422 empty_result. Input: `url` or `pdf_base64` and `pages`. Output: base64 `file` (or `files`); ove
pdf_rotatepdfpeek: Rotate the pages of a PDF by 90, 180 or 270 degrees. Returns the PDF with its pages (or a `pages` selection) rotated clockwise by `angle` (90, 180, 270 or -90), added to each page's current rotation. Input: `url` or `pdf_base64`, `angle` and optional `pages`. Output: base64 `file` (or `file
pdf_compresspdfpeek: Compress a PDF to shrink its file size. Returns a smaller PDF: `level` lossless (structure only), recommended (images re-encoded as JPEG q75 at most 150 dpi) or extreme (q50, 96 dpi), with optional `image_quality` and `max_image_dpi`; bytes_before, bytes_after and saved_percent. It never re
pdf_to_imagespdfpeek: Convert PDF pages to PNG or JPEG images. Returns each selected page rendered to PNG or JPEG (PDFium, no JavaScript) at `dpi` 36-300, optionally grayscale; at most 20 pages per call (a page over 36 megapixels at a lower dpi, reported per image). Input: `url` or `pdf_base64`, optional `format
pdf_rasterizepdfpeek: Rasterize a PDF: every page rendered to an image, rebuilt as one PDF. Returns a new image-only PDF: each selected page rendered (PDFium, no JavaScript) at `dpi` 36-300, optional grayscale, re-embedded as JPEG or PNG; no selectable text, forms or active content; at most 20 pages. Input: `url
images_to_pdfpdfpeek: Convert 1-30 images into a PDF. Returns one PDF page per image (PNG, JPEG or WebP; JPEGs embedded byte for byte, EXIF orientation honoured, transparency flattened on white), sized to each image or to A4 / letter with `orientation` and `margin`; at most 30 images, each at most 40 megapixels.
pdf_watermarkpdfpeek: Add a text watermark to a PDF. Returns the PDF with a text watermark on every page (or a `pages` selection): Latin text in one of 6 built-in fonts, size, opacity, angle, one of 9 positions, colour, over or under the content; upright on rotated pages. The original content is never rewritten.
pdf_page_numberspdfpeek: Add page numbers to a PDF. Returns the PDF with page numbers in a `format` such as "Page {n} of {N}" at one of 6 positions, with font, size, colour, opacity, margin, `start_number` and a `pages` selection (e.g. 2- skips a cover; numbering counts the stamped pages). Input: `url` or `pdf_base
pdf_protectpdfpeek: Password-protect a PDF. Returns the PDF encrypted with AES-256: `user_password` opens it; `owner_password` lifts the `permissions` (all allowed by default; without an owner password a random one nobody knows is used). Input: `url` or `pdf_base64`, `user_password`, optional `owner_password`
pdf_unlockpdfpeek: Unlock a password-protected PDF. Returns the PDF decrypted, only with a password that opens it (the user or owner password, or "" for a file restricted by an owner password only), with `opened_with`. A wrong password is a 422 invalid_password, an unencrypted file a 422 not_encrypted, public
pdf_metadatapdfpeek: Read, edit or strip the metadata of a PDF. Returns a PDF's document metadata (title, author, subject, keywords, creator, producer, created and modified as ISO 8601, PDF version, XMP present); with `set` it writes fields ("" deletes one) and with `strip` removes all document metadata first,
html_to_pdfpdfpeek: Convert a web page URL to PDF. Returns a public web page printed to PDF in a sandboxed headless browser: `paper` (a4, letter, legal, a3, a5, tabloid), `landscape`, `margin_mm`, `print_background`, `scale` and `wait_ms` after load. The page can reach only its own host (other hosts and IP lit
pdf_ocrpdfpeek: OCR a scanned PDF into a searchable PDF. Returns a searchable PDF: tesseract OCR of the selected pages as an invisible text layer over the unchanged originals, plus the recognised `text` (at most 100,000 characters); `skip_text` (default true) leaves pages that have text alone. Input: `url`
pdf_inspectpdfpeek: Inspect a PDF: page sizes, text layer or scan, forms, attachments, JavaScript, bookmarks. Returns a report on one PDF (nothing changed): page count and version; per page the size in points (with the paper name), rotation, text layer or not and whether it looks scanned (no text, images cover
pdf_reorder_pagespdfpeek: Reorder, repeat or drop the pages of a PDF from a list of page numbers. Returns a new PDF made of the pages in `order` (1-based, at most 500), in that order: a page listed twice is copied, one not listed is left out (listed in the reply). Like extract-pages: bookmarks, forms and metadata ar
pdf_croppdfpeek: Crop the margins of a PDF. Returns the PDF with every page's (or a `pages` selection's) crop box set inside the page by `top`, `right`, `bottom`, `left` margins in points or percent of the page as displayed; new sizes listed. The content outside the box stays in the file: not redaction. Inp
pdf_resizepdfpeek: Resize PDF pages to A4, Letter, Legal or a custom size. Returns pages scaled to A4, Letter, Legal or a custom width x height (pt, mm, in): fit (whole page inside, centred, aspect ratio kept), fill (covered, overflow cut) or stretch; orientation auto keeps each page's. Scaled, not reflowed;
pdf_outlinepdfpeek: Read the bookmarks of a PDF as a nested tree. Returns the bookmarks as a nested tree of {title, page, open, children}; page is the 1-based target (null: nowhere or another file). At most 1,000 bookmarks and 8 levels (`truncated`); named destinations are resolved. Input: `url` or `pdf_base64
pdf_set_outlinepdfpeek: Write the bookmarks of a PDF from a nested tree. Returns the PDF with its bookmarks replaced by the `outline` tree {title, page, open?, children?} (at most 1,000 bookmarks, 8 levels; [] removes them all); each opens its page fit to the window. Input: `url` or `pdf_base64` and `outline`. A p
pdf_form_fieldspdfpeek: List the form fields of a PDF. Returns the form's fields in reading order: name (for fill-form), type (text, checkbox, radio, choice, button, signature), value, required, read_only, page, tooltip as description, options (and labels) of radio and choice fields, max_length, multiline, comb. I
pdf_fill_formpdfpeek: Fill the form fields of a PDF from a JSON object. Returns the PDF with its form filled from `fields` (names from form-fields): strings or numbers, true / false for checkboxes, an option for radio and choice fields (a list for multi-select), null clears. Appearances are drawn so every viewer
pdf_flattenpdfpeek: Flatten the form fields and annotations of a PDF into the page content. Returns the PDF with form fields and annotations merged into the pages (`mode` all, screen or print; annotations a mode does not flatten are removed). Fields with a value but no appearance are drawn first; links stay; i
pdf_repairpdfpeek: Repair a damaged PDF. Returns the PDF opened with qpdf's recovery (bad or missing xref, cut-off file, junk before the header) and written again, with qpdf's `warnings`; `linearize` also writes it for fast web view. Structure, not damaged page data. Input: `url` or `pdf_base64` and optional
pdf_attachmentspdfpeek: List, extract or add the file attachments of a PDF. Returns the PDF's file attachments by `action`: list (default: name, filename, media type, size, description), extract (one by `name`, base64, at most 10 MB) or add (`file_base64` as `name`, at most 5 MB; the existing ones are kept). Input
pdf_pipelinepdfpeek: Run up to 10 PDF operations in sequence on one PDF in a single call. Returns a PDF put through up to 10 `steps` [{op, params}] in order, the output of each the input of the next: rotate, remove-pages, extract-pages, reorder, crop, resize, set-outline, flatten, repair (params as on that oper