Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,561Letters: 14Defects: 1,336counted 1 min ago
teppi

Server definition

Hash
sha256:45dd6b0b0991ee53cf24045b2f33d7aaafeed355fc302d3c5263b52727ccabfc
What it is
What a remote MCP server returned when asked what it offers: 9 tools

The blob, as servednamed by its sha256

{ "instructions": "EasyPDF edits PDF files shared in the conversation. edit_pdf_text writes text changes (fix a typo, change a date, amount, name, update a CV, delete a line) into the ORIGINAL PDF, keeping its fonts and layout: use it instead of generating a new PDF whenever the user wants their document updated. Other tools: compress, merge, split, extract pages, rotate, protect or unlock with a password, add page numbers. Ask the user to attach the PDF, then call the matching tool with the file. Every tool returns a download link valid for one hour; show it to the user as a clickable link.", "tools": [ { "description": "Add page numbers to a PDF.", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The PDF to number.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "position": { "default": "bottom-center", "description": "\"bottom-center\" (default), \"bottom-left\", \"bottom-right\", \"top-center\", \"top-left\" or \"top-right\".", "type": "string" }, "start_number": { "default": 1, "description": "Number printed on the first page. Default 1.", "type": "integer" } }, "required": [ "file" ], "type": "object" }, "name": "add_page_numbers", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Compress a PDF to reduce its file size while keeping it readable.", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The PDF to compress (shared in the conversation).", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "quality": { "default": "medium", "description": "\"low\" (smallest file), \"medium\" (balanced, default) or \"high\" (best visual quality).", "type": "string" } }, "required": [ "file" ], "type": "object" }, "name": "compress_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Change, correct or delete text INSIDE the original PDF, keeping its fonts, sizes, colors and layout.\n\nUse this whenever the user wants their existing PDF updated rather than a\nnew document: fix a typo, change a date, amount, name or address, update a\nCV or a price list, translate a heading, remove a line. Read the PDF first,\nthen pass one edit per change with `find` copied exactly as printed in the\ndocument. Dates and amounts written differently in the PDF (12/08/2026 vs\nAugust 12, 2026; 1240 vs 1,240.00) are matched and rewritten in the\ndocument's format.", "inputSchema": { "additionalProperties": false, "properties": { "edits": { "description": "Changes to write, applied in order. Each one replaces every\noccurrence of `find` (only on `page` when given).", "items": { "description": "One change to write into the PDF.", "properties": { "find": { "description": "Text to replace, copied exactly as it is printed in the PDF (same spelling, accents and punctuation). Keep it short: one line or a few words is most reliable.", "type": "string" }, "page": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "1-based page number to limit this change to. Omit to change every occurrence in the document." }, "replace": { "description": "New text written in place of `find`. An empty string deletes the text.", "type": "string" } }, "required": [ "find", "replace" ], "type": "object" }, "type": "array" }, "file": { "description": "The PDF to edit (shared in the conversation).", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" } }, "required": [ "file", "edits" ], "type": "object" }, "name": "edit_pdf_text", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Extract specific pages from a PDF into a new PDF (pages are 1-indexed).", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The source PDF.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "page_numbers": { "description": "Pages to keep, e.g. [1, 3, 5]. Order is preserved.", "items": { "type": "integer" }, "type": "array" } }, "required": [ "file", "page_numbers" ], "type": "object" }, "name": "extract_pages", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Merge several PDF files into a single document, in the given order.", "inputSchema": { "additionalProperties": false, "properties": { "files": { "description": "Two or more PDFs shared in the conversation, in the order to merge them.", "items": { "description": "A file shared in the ChatGPT conversation (user upload).", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "type": "array" } }, "required": [ "files" ], "type": "object" }, "name": "merge_pdfs", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Protect a PDF with a password (AES-256 encryption).", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The PDF to protect.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "password": { "description": "Password that will be required to open the PDF.", "type": "string" } }, "required": [ "file", "password" ], "type": "object" }, "name": "protect_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Rotate all pages, or selected pages, of a PDF.", "inputSchema": { "additionalProperties": false, "properties": { "angle": { "description": "90, 180 or 270 degrees (clockwise).", "type": "integer" }, "file": { "description": "The PDF to rotate.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "pages": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Optional 1-indexed page numbers to rotate; omit to rotate every page." } }, "required": [ "file", "angle" ], "type": "object" }, "name": "rotate_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Split a PDF into several smaller PDFs.", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The PDF to split.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "pages_per_file": { "default": 1, "description": "Number of pages in each output file (default 1: one file per page).", "type": "integer" } }, "required": [ "file" ], "type": "object" }, "name": "split_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Remove the password protection from a PDF you own.", "inputSchema": { "additionalProperties": false, "properties": { "file": { "description": "The password-protected PDF.", "properties": { "download_url": { "description": "URL from which the file can be downloaded.", "type": "string" }, "file_id": { "description": "ChatGPT file identifier.", "type": "string" }, "file_name": { "default": "", "description": "Original file name, e.g. report.pdf.", "type": "string" }, "mime_type": { "default": "", "description": "MIME type of the file, e.g. application/pdf.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "password": { "description": "Its current password.", "type": "string" } }, "required": [ "file", "password" ], "type": "object" }, "name": "unlock_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:45dd6b0b0991ee53cf24045b2f33d7aaafeed355fc302d3c5263b52727ccabfc | sha256sum