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