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 yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:45dd6b0b0991ee53cf24045b2f33d7aaafeed355fc302d3c5263b52727ccabfc | sha256sum