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

Server definition

Hash
sha256:d928822c4ca0fd0b36942e01fb4248ef1fc4c26e263ac21ccfad0ff4a8a94ade
What it is
What a remote MCP server returned when asked what it offers: 5 tools

The blob, as servednamed by its sha256

{ "instructions": "PDF tools backed by the PDFops API. Pass PDFs as https:// URLs or data:application/pdf;base64 URIs (no local paths); produced PDFs come back inline as application/pdf resources. Call pdf_inspect before pdf_fill on an unfamiliar form.", "tools": [ { "description": "Fill AcroForm form fields in a PDF and return the result. Field names must exist in the PDF (use pdf_inspect first). All values are strings; checkboxes take \"true\"/\"false\"; dropdown/radio/optionlist values must be one of the field's options; text values must respect the field's maxLength from pdf_inspect. The source PDF is never modified. Returns the filled PDF inline as an application/pdf resource. Encrypted PDFs are rejected with decrypt advice (common for government blanks with an empty user password).", "inputSchema": { "additionalProperties": false, "properties": { "fields": { "additionalProperties": { "type": "string" }, "description": "Field name → string value (from pdf_inspect's fillTemplate)", "type": "object" }, "flatten": { "description": "Bake values into page content and drop the AcroForm so fields are no longer editable", "type": "boolean" }, "pdf_path": { "description": "Template PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).", "type": "string" } }, "required": [ "pdf_path", "fields" ], "type": "object" }, "name": "pdf_fill", "outputSchema": { "additionalProperties": false, "properties": { "bytes": { "description": "Size of the produced PDF in bytes", "type": "integer" }, "resource_uri": { "description": "pdfops:// uri of the inline application/pdf resource", "type": "string" } }, "required": [ "bytes" ], "type": "object" } }, { "description": "List a PDF's AcroForm form fields — names, types, options, current values, per-field maxLength where declared — plus a paste-ready fillTemplate object for pdf_fill and a hasXFA flag (hybrid AcroForm/XFA inputs lose their XFA layer when filled). A PDF with no fillable form returns count 0. Read-only: the PDF is fetched but never modified. Call this FIRST when filling an unfamiliar PDF, since pdf_fill rejects unknown field names and over-length values.", "inputSchema": { "additionalProperties": false, "properties": { "pdf_path": { "description": "PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).", "type": "string" } }, "required": [ "pdf_path" ], "type": "object" }, "name": "pdf_inspect", "outputSchema": { "additionalProperties": false, "properties": { "count": { "description": "Number of form fields found; 0 when the PDF has no fillable form", "type": "integer" }, "fields": { "description": "One entry per form field, in document order", "items": { "additionalProperties": false, "properties": { "checked": { "type": "boolean" }, "maxLength": { "description": "Longer values are rejected by pdf_fill", "type": "integer" }, "name": { "type": "string" }, "options": { "description": "Permitted values for radio/dropdown/optionlist fields", "items": { "type": "string" }, "type": "array" }, "raw": {}, "readOnly": { "type": "boolean" }, "type": { "description": "text, checkbox, dropdown, radio, optionlist, or unsupported", "type": "string" }, "value": { "type": "string" } }, "required": [ "name", "type", "readOnly" ], "type": "object" }, "type": "array" }, "fillTemplate": { "additionalProperties": { "type": "string" }, "description": "Field name to empty-or-current value, ready to edit and pass to pdf_fill", "type": "object" }, "hasXFA": { "description": "True for hybrid AcroForm/XFA documents, whose XFA layer is dropped when filled", "type": "boolean" }, "truncated": { "description": "True when the form exceeded an API enumeration cap; fields is then a prefix, not the full list", "type": "boolean" } }, "required": [ "count", "hasXFA", "truncated", "fields", "fillTemplate" ], "type": "object" } }, { "description": "Generate a complete, professionally laid-out invoice PDF from structured data — no template needed. Deterministic: the same input produces byte-identical output (safe to re-run). Note: without a paid PDFops key the output carries a small \"Generated with pdfops.dev\" footer line. Returns the invoice inline as an application/pdf resource. Use this when you have invoice DATA and no document; if you already have an invoice PDF or a fillable template to populate, use pdf_fill instead.", "inputSchema": { "additionalProperties": false, "properties": { "invoice": { "additionalProperties": false, "description": "Invoice data", "properties": { "currency": { "pattern": "^[A-Z]{3}$", "type": "string" }, "date": { "description": "Calendar date in YYYY-MM-DD form (other formats are rejected with invalid_date). Shown on the invoice; also pins metadata for determinism", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "due": { "type": "string" }, "from": { "anyOf": [ { "type": "string" }, { "additionalProperties": false, "properties": { "lines": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } ] }, "invoice_number": { "type": "string" }, "items": { "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "quantity": { "exclusiveMinimum": 0, "type": "number" }, "unit_price": { "minimum": 0, "type": "number" } }, "required": [ "description", "unit_price" ], "type": "object" }, "maxItems": 100, "minItems": 1, "type": "array" }, "notes": { "maxLength": 1000, "type": "string" }, "tax_rate": { "maximum": 100, "minimum": 0, "type": "number" }, "to": { "anyOf": [ { "type": "string" }, { "additionalProperties": false, "properties": { "lines": { "items": { "type": "string" }, "type": "array" }, "name": { "type": "string" } }, "required": [ "name" ], "type": "object" } ] } }, "required": [ "from", "to", "items" ], "type": "object" } }, "required": [ "invoice" ], "type": "object" }, "name": "pdf_invoice", "outputSchema": { "additionalProperties": false, "properties": { "bytes": { "description": "Size of the produced PDF in bytes", "type": "integer" }, "resource_uri": { "description": "pdfops:// uri of the inline application/pdf resource", "type": "string" } }, "required": [ "bytes" ], "type": "object" } }, { "description": "Merge two or more PDFs into one, in the order given, and return the result. Sources are read only and never modified. Returns the merged PDF inline as an application/pdf resource. This tool only concatenates whole documents: it does not reorder, rotate or delete pages within them, and it does not fill forms — use pdf_fill for a fillable form and pdf_invoice to build a document from data. An unreadable or rejected input fails with an error, so a partial merge is never returned.", "inputSchema": { "additionalProperties": false, "properties": { "pdf_paths": { "description": "In order, each a PDF source: an https:// URL or a data:application/pdf;base64,… URI (this hosted server cannot read local file paths).", "items": { "type": "string" }, "minItems": 2, "type": "array" } }, "required": [ "pdf_paths" ], "type": "object" }, "name": "pdf_merge", "outputSchema": { "additionalProperties": false, "properties": { "bytes": { "description": "Size of the produced PDF in bytes", "type": "integer" }, "resource_uri": { "description": "pdfops:// uri of the inline application/pdf resource", "type": "string" } }, "required": [ "bytes" ], "type": "object" } }, { "description": "Check the current PDFops API quota for the configured key: tier, limit, used, remaining, the billing period, and the reset timestamp. Read-only and safe to call before a batch to confirm there is headroom. Uses the API key this connection authenticated with.", "inputSchema": { "properties": {}, "type": "object" }, "name": "pdfops_usage", "outputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Calls allowed in the current period", "type": "integer" }, "period": { "description": "Billing period the counts belong to, YYYY-MM", "type": "string" }, "remaining": { "type": "integer" }, "resets_at": { "description": "ISO 8601 timestamp when used resets to 0", "type": "string" }, "tier": { "description": "Plan name, e.g. free", "type": "string" }, "used": { "type": "integer" } }, "required": [ "tier", "limit", "used", "remaining", "period", "resets_at" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:d928822c4ca0fd0b36942e01fb4248ef1fc4c26e263ac21ccfad0ff4a8a94ade | sha256sum