Server definition
- Hash
- sha256:92715ca0a15ad571c51c1372d387acd3f9df448bd9a00073f16992397af20c3e
- What it is
- What a remote MCP server returned when asked what it offers: 12 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"key": {
"description": "License key from checkout, MCPL1.<payload>.<signature>",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
},
"name": "license_activate",
"outputSchema": null
},
{
"description": "Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "license_status",
"outputSchema": null
},
{
"description": "Call this tool to add files to an existing archive under their own names, or under prefix. A name clash is refused unless replace. An archive holding unsafe entries is refused rather than rewritten.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"level": {
"description": "Deflate level 0 to 9 for the new entries, default 6",
"maximum": 9,
"minimum": 0,
"type": "integer"
},
"password": {
"description": "Not supported. Passing it is refused rather than ignored",
"type": "string"
},
"path": {
"description": "Path to the existing .zip file",
"type": "string"
},
"paths": {
"description": "Files to add, each stored under its own file name. A directory contributes its tree under its own name",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"prefix": {
"description": "Put the new entries under this folder inside the archive, for example \"invoices\"",
"type": "string"
},
"replace": {
"description": "Replace an entry whose name is already in the archive. Default false: a name clash is refused and nothing is changed",
"type": "boolean"
}
},
"required": [
"path",
"paths"
],
"type": "object"
},
"name": "zip_add",
"outputSchema": null
},
{
"description": "Local (stdio) install only. On this hosted endpoint /mcp/invoice, /mcp/quotes, /mcp/expense-tracker, /mcp/docx and /mcp/resume return their documents as one-hour download links and keep no output folder to read, so there is nothing for this tool to bundle. Pack the files with zip_upload plus zip_create instead.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"dry_run": {
"description": "Report what would go in and write nothing",
"type": "boolean"
},
"month": {
"description": "Month as YYYY-MM. Default: this month. Files are chosen by their modification date",
"pattern": "^\\d{4}-\\d{2}$",
"type": "string"
},
"out_path": {
"description": "Name for the bundle. Default: the month, e.g. 2026-09",
"type": "string"
},
"overwrite": {
"description": "Replace out_path if it exists. Default false",
"type": "boolean"
},
"servers": {
"description": "Only these sibling servers: invoice, quotes, expense-tracker, docx, resume. Default: all five",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"name": "zip_bundle_month",
"outputSchema": null
},
{
"description": "Call this tool to pack files uploaded with zip_upload into a new .zip and get a download link valid for one hour. Entry names are always relative, so the archive cannot write outside where it is unpacked.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"dir": {
"description": "Not available on this hosted endpoint: there are no directories. Passing it is refused rather than ignored, so nobody believes a tree was packed",
"type": "string"
},
"exclude": {
"description": "Drop entries matching one of these globs, applied after patterns",
"items": {
"type": "string"
},
"type": "array"
},
"level": {
"description": "Deflate level 0 to 9, default 6. 0 stores without compressing",
"maximum": 9,
"minimum": 0,
"type": "integer"
},
"out_path": {
"description": "Name for the archive, e.g. reports. It comes back as a download link valid for one hour; a name already produced in this request is refused without overwrite",
"type": "string"
},
"overwrite": {
"description": "Replace out_path if a file is already there. Default false: an existing file is never overwritten",
"type": "boolean"
},
"password": {
"description": "Not supported. Passing it is refused rather than ignored, so no one believes an archive is encrypted when it is not",
"type": "string"
},
"paths": {
"description": "Names of files uploaded with zip_upload, each packed under that name",
"items": {
"type": "string"
},
"type": "array"
},
"patterns": {
"description": "Only entries matching one of these globs (* and ? inside a segment, ** across segments; a pattern with no slash also matches the file name at any depth)",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"out_path"
],
"type": "object"
},
"name": "zip_create",
"outputSchema": null
},
{
"description": "Delete one uploaded file stored for your token. The register rows zip_history lists are kept.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"name": {
"maxLength": 70,
"minLength": 1,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "zip_delete_upload",
"outputSchema": null
},
{
"description": "Call this tool to unpack an archive; every entry comes back as its own download link valid for one hour. Traversal, absolute-path and symlink entries are refused, a size and ratio cap stops a zip bomb, and dry_run reports exactly what would be written.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"dry_run": {
"description": "Report what would be written, byte counts included, and write nothing",
"type": "boolean"
},
"max_ratio": {
"description": "Refuse an entry whose uncompressed/compressed ratio is above this. Default 100",
"minimum": 2,
"type": "number"
},
"max_total_mb": {
"description": "Refuse if the selected entries declare more than this uncompressed. Default 1024",
"minimum": 1,
"type": "number"
},
"out_dir": {
"description": "Ignored on this hosted endpoint: there are no directories, and every extracted entry comes back as its own download link valid for one hour",
"type": "string"
},
"overwrite": {
"description": "Replace files that already exist in out_dir. Default false: the whole extraction is refused if any would be replaced",
"type": "boolean"
},
"path": {
"description": "Path to the .zip file",
"type": "string"
},
"patterns": {
"description": "Only entries matching one of these globs (* and ? inside a segment, ** across segments)",
"items": {
"type": "string"
},
"type": "array"
},
"skip_unsafe": {
"description": "Skip the dangerous entries and extract the rest, naming what was skipped. Default false: one bad entry refuses the whole archive",
"type": "boolean"
}
},
"required": [
"path"
],
"type": "object"
},
"name": "zip_extract",
"outputSchema": null
},
{
"description": "Call this tool to read one text entry out of an archive without unpacking anything: give the entry name and the text comes back inline. Binary entries are refused by name rather than printed as noise.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"entry": {
"description": "Exact entry name, as zip_list prints it. A glob is accepted when it matches exactly one entry",
"type": "string"
},
"max_chars": {
"description": "Stop after this many characters (default 200000). The answer says when it was cut",
"maximum": 200000,
"minimum": 100,
"type": "integer"
},
"path": {
"description": "Path to the .zip file",
"type": "string"
}
},
"required": [
"path",
"entry"
],
"type": "object"
},
"name": "zip_extract_text",
"outputSchema": null
},
{
"description": "List the files stored for your token on this endpoint, with their sizes. These are the names every path argument here resolves against.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "zip_files",
"outputSchema": null
},
{
"description": "List the archives created for your token, newest first, with entry counts, sizes and names, plus how much of the free 20 a month is used. Each download link expires after an hour; the row keeps the name.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "How many rows to show, newest first (default 20)",
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "zip_history",
"outputSchema": null
},
{
"description": "Call this tool to list an archive's entries with sizes and ratios and flag what is dangerous: absolute paths, .., symlinks, encrypted entries, duplicate names and bombs. Read-only. Run it before zip_extract.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "How many entries to print, largest first (default 50). The totals always cover every entry",
"maximum": 2000,
"minimum": 1,
"type": "integer"
},
"max_ratio": {
"description": "Flag an entry whose uncompressed/compressed ratio is above this. Default 100",
"minimum": 2,
"type": "number"
},
"path": {
"description": "Path to the .zip file. Read-only: the archive is never modified and nothing is extracted",
"type": "string"
},
"patterns": {
"description": "Only entries matching one of these globs",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"path"
],
"type": "object"
},
"name": "zip_list",
"outputSchema": null
},
{
"description": "Send a file to this hosted endpoint. There is no filesystem here, so instead of a path you upload the file once with zip_upload and then pass its name wherever a path is asked for: an archive to zip_list, zip_extract, zip_extract_text or zip_add, a plain file to zip_create. Give exactly one of content_base64 (the file's bytes, the only paste form an archive can take), content (text, for a text file to pack) or url. url: fetch a public file instead of pasting base64 (recommended above about 10 KB): the url is fetched here with a 10 second timeout, at most 3 redirects, public http(s) hosts only, and a 1 MB cap, and a name ending .zip is checked for the PK magic before anything is stored. Uploads are kept for your token between calls; zip_files lists them and zip_delete_upload removes one. The request body cap is 256 KB, so the practical ceiling on a paste is about 190 KB of file once it is base64 inside a JSON-RPC envelope.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "The file as text (a .txt, .csv, .md or source file to pack). Not accepted for a .zip",
"type": "string"
},
"content_base64": {
"description": "The file's bytes, base64-encoded. This is the only paste form an archive can be uploaded in",
"type": "string"
},
"name": {
"description": "Name to refer to this file by: 1-64 characters of letters, digits, underscore or dash, with an optional extension. No extension means .zip, e.g. \"reports\" or \"notes.txt\"",
"maxLength": 70,
"minLength": 1,
"type": "string"
},
"url": {
"description": "url: fetch a public file instead of pasting base64 (recommended above about 10 KB). Public http(s) only; private, link-local and this endpoint's own zone are refused",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "zip_upload",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:92715ca0a15ad571c51c1372d387acd3f9df448bd9a00073f16992397af20c3e | sha256sum