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

Server definition

Hash
sha256:17a4ba1d80093f397a03952c19215521c86e7d8a9f4f01c56d3783ca46ed04fe
What it is
What a remote MCP server returned when asked what it offers: 23 tools

The blob, as servednamed by its sha256

{ "instructions": "Documents in, verified structure out. extract_statement turns a bank statement PDF into a transaction table AND cross-checks it (opening + credits - debits must equal closing — you are told if it does not balance). extract_tables aligns tables from differently-formatted documents onto one schema. pdf_to_markdown keeps headings, tables and multi-column reading order. Scanned images (png/jpg URLs) are read by a vision model. Files are processed in memory and not retained; the beta platform covers the user charge ($0.00).", "tools": [ { "description": "Get the status or result of a job started by deep_research, translate_pdf, or make_slides. Poll every 15-30 seconds until status is \"done\" or \"error\". While work is pending, follow retry_after_seconds and next_action; when complete, prefer structured_result when present. Example — GET https://ainetcafe.com/t/check_job?job_id=<id-from-a-job-tool>", "inputSchema": { "properties": { "job_id": { "description": "The job_id returned when the task was started.", "type": "string" } }, "required": [ "job_id" ], "type": "object" }, "name": "check_job", "outputSchema": { "properties": { "error": { "type": "string" }, "is_terminal": { "type": "boolean" }, "job_id": { "type": "string" }, "kind": { "type": "string" }, "next_action": { "type": [ "object", "null" ] }, "result": {}, "retry_after_seconds": { "type": "integer" }, "status": { "type": "string" }, "structured_result": {} }, "required": [ "job_id", "status" ], "type": "object" } }, { "description": "Check a resume (PDF or .docx) the way an applicant tracking system reads it: is the text extractable, are email/phone/sections findable, do multi-column layouts, tables or emoji break parsing. Returns a score plus concrete fixes ordered by impact — like the W3C validator, but for resumes.", "inputSchema": { "properties": { "url": { "description": "Public URL of the resume (PDF or .docx).", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "check_resume", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Print-quality PDF from a URL or raw HTML via self-hosted Gotenberg (headless Chromium). Returns a hosted PDF download URL. Example — GET https://ainetcafe.com/t/convert_to_pdf?url=https://example.com", "inputSchema": { "properties": { "html": { "description": "Raw HTML to convert (alternative to url).", "type": "string" }, "url": { "description": "Page URL to convert (either url or html is required).", "type": "string" } }, "type": "object" }, "name": "convert_to_pdf", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Convert a transaction CSV into a .qbo / OFX bank-feed file that QuickBooks and similar accounting software import directly. Needs date, description and amount columns (or debit + credit). Pairs with extract_statement: statement PDF in, importable bank feed out.", "inputSchema": { "properties": { "account_id": { "description": "Your account number as the accounting software expects it.", "type": "string" }, "bank_id": { "description": "Routing / bank identifier, if your import asks for one.", "type": "string" }, "csv": { "description": "CSV content with a header row.", "type": "string" }, "currency": { "description": "Three-letter currency code, default USD.", "type": "string" }, "url": { "description": "Or a link to the CSV.", "type": "string" } }, "required": [], "type": "object" }, "name": "csv_to_qbo", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Start an autonomous web research task. The agent plans sub-questions, searches the web, reads the sources and writes a report with citations — this is real research, not a single model call, and takes 2-5 minutes. Returns a job_id immediately; poll check_job to get the report. Use this when you need sourced, current information rather than what a model already knows. Powered by gpt-researcher (29k stars) hosted at AI NetCafé. Example — tools/call deep_research {\"topic\":\"State of MCP adoption in 2026?\"} → poll check_job", "inputSchema": { "properties": { "depth": { "description": "quick = outline only (~1 min); standard = full cited report (~3 min). Default standard.", "enum": [ "quick", "standard" ], "type": "string" }, "topic": { "description": "The research question. Phrase it as a question, not a keyword.", "type": "string" } }, "required": [ "topic" ], "type": "object" }, "name": "deep_research", "outputSchema": { "properties": { "job_id": { "type": "string" }, "poll_interval_seconds": { "type": "integer" }, "status": { "type": "string" } }, "required": [ "job_id", "status" ], "type": "object" } }, { "description": "文档翻译成中文,保留段落结构。逐段翻译并核对段落条数进出一致 —— 漏译最常见的形态就是整段消失,这里会当场发现。入参 url(文档链接)或 text,可选 target(默认 zh)。自证不通过不计费。", "inputSchema": { "additionalProperties": true, "properties": { "target": { "type": "string" }, "text": { "type": "string" }, "url": {} }, "type": "object" }, "name": "doc_translate_cn", "outputSchema": null }, { "description": "Give it up to 20 invoice URLs (PDF or page images) and get back one table ready to post: number, date, seller, buyer, net / tax / gross, currency. Every row is checked in code — net + tax must equal gross — and the batch total is re-added independently, so a row the model misread is flagged with the exact difference instead of quietly landing in your books. Mixed currencies get no batch total on purpose: adding them together would be an accounting error. CSV is UTF-8 with BOM so Excel opens it right.", "inputSchema": { "properties": { "urls": { "description": "Invoice URLs — comma-separated, or pass an array. Up to 20 per call.", "type": "string" } }, "required": [ "urls" ], "type": "object" }, "name": "extract_invoices", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Turn a bank statement or transaction PDF into a clean transaction table (JSON + CSV), then cross-check it: opening + credits - debits must equal the stated closing balance. If it does not balance you get the exact difference and which row the running balance first breaks at — so you know whether the table is safe to use for accounting. Text-layer PDFs only (scanned images not yet supported).", "inputSchema": { "properties": { "url": { "description": "Public URL of the statement PDF.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "extract_statement", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Extract tables from a PDF into structured rows (JSON + CSV). Pass fields to force a fixed set of columns — that aligns a pile of documents that each name their headers differently into one consistent table. Rows the model was unsure about are flagged rather than guessed. Text-layer PDFs only.", "inputSchema": { "properties": { "fields": { "description": "Optional comma-separated target columns, e.g. \"invoice_no,supplier,date,amount\". Omit to infer from the header.", "type": "string" }, "url": { "description": "Public URL of the PDF.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "extract_tables", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Detect the real encoding of a CSV (GB18030, Shift-JIS, Windows-1252…), repair mojibake (UTF-8 that was read as Latin-1, e.g. \"é\"), and re-emit UTF-8 with a BOM so Excel opens it correctly.", "inputSchema": { "properties": { "text": { "description": "Or paste the CSV content directly.", "type": "string" }, "url": { "description": "Public URL of the CSV.", "type": "string" } }, "required": [], "type": "object" }, "name": "fix_csv_encoding", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Turn a topic or an outline into a real downloadable .pptx file — not a link into someone's web editor. Returns a job_id; poll check_job for the download URL. Usually 1-3 minutes. Powered by Presenton (open source) hosted at AI NetCafé. Example — tools/call make_slides {\"topic\":\"Q3 review\",\"slides\":8} → poll check_job", "inputSchema": { "properties": { "instructions": { "description": "Optional extra guidance on style or emphasis.", "type": "string" }, "language": { "description": "Output language, e.g. \"Chinese\", \"English\". Default Chinese.", "type": "string" }, "slides": { "description": "Number of slides (default 8).", "type": "integer" }, "topic": { "description": "The topic, or a full outline to follow.", "type": "string" } }, "required": [ "topic" ], "type": "object" }, "name": "make_slides", "outputSchema": { "properties": { "job_id": { "type": "string" }, "poll_interval_seconds": { "type": "integer" }, "status": { "type": "string" } }, "required": [ "job_id", "status" ], "type": "object" } }, { "description": "会议录音 → 纪要包 PDF:转写、要点、决议、待办。纪要里点名的负责人会与转写原文比对 —— 把任务安排给一个从没在录音里出现过的人,报告会判不通过。入参 url(音频直链)。自证不通过不计费。", "inputSchema": { "additionalProperties": true, "properties": { "audio": {}, "url": { "type": "string" } }, "type": "object" }, "name": "meeting_pack", "outputSchema": null }, { "description": "Stamp page numbers or footer text onto every page of a PDF. Supports a starting number, roman numerals, skipping a cover page, position and font size — the combination Acrobat cannot do without scripting. Template supports {n} and {total}, e.g. \"Page {n} of {total}\".", "inputSchema": { "properties": { "font_size": { "description": "Font size, default 10.", "type": "integer" }, "position": { "description": "bottom-center (default) | bottom-left | bottom-right | top-center | top-left | top-right", "type": "string" }, "skip_first": { "description": "Leave this many leading pages unnumbered, e.g. 1 for a cover.", "type": "integer" }, "start_at": { "description": "Number to start from (default 1).", "type": "integer" }, "style": { "description": "arabic (default) | roman (i, ii, iii) | ROMAN (I, II, III)", "type": "string" }, "text": { "description": "Template, default \"{n}\". Use {n} and {total}.", "type": "string" }, "url": { "description": "Public URL of the PDF.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "pdf_add_page_numbers", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Count pages and report each page size of a PDF (by URL).", "inputSchema": { "additionalProperties": true, "properties": { "url": {} }, "type": "object" }, "name": "pdf_page_count", "outputSchema": null }, { "description": "Convert a PDF (or a scanned page image) into clean Markdown that keeps headings, lists and tables, and puts multi-column pages in the right reading order. Text-layer PDFs are read exactly and cost far less; images go through a vision model.", "inputSchema": { "properties": { "url": { "description": "Public URL of the PDF, or of a page image (png/jpg) for scanned documents.", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "pdf_to_markdown", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Stamp diagonal text watermark on every page of a PDF (by URL). text = the watermark.", "inputSchema": { "additionalProperties": true, "properties": { "text": { "type": "string" }, "url": {} }, "type": "object" }, "name": "pdf_watermark", "outputSchema": null }, { "description": "PowerPoint .pptx (by URL) → PDF handout.", "inputSchema": { "additionalProperties": true, "properties": { "url": {} }, "type": "object" }, "name": "pptx_to_pdf", "outputSchema": null }, { "description": "Strip emails, phone numbers, ID numbers, API keys, private keys, JWTs, card numbers and IPs out of text, returning the redacted text plus a mapping table to restore them afterwards. Rule-based only — no model sees the input. The same value always maps to the same placeholder, so the answer can be restored.", "inputSchema": { "properties": { "only": { "description": "Optional comma-separated subset, e.g. \"EMAIL,API_KEY,PRIVATE_KEY\".", "type": "string" }, "text": { "description": "The text to redact.", "type": "string" } }, "required": [ "text" ], "type": "object" }, "name": "redact_text", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Fetch an audio file from a URL and transcribe it to text with open-source Whisper (100 languages, self-hosted). Good for voice memos, podcast clips and meeting recordings up to ~15 MB. Example — GET https://ainetcafe.com/t/transcribe_audio?url=<public-audio-url>", "inputSchema": { "properties": { "language": { "description": "Hint language code like \"zh\", \"en\"; default auto-detect.", "type": "string" }, "url": { "description": "Public URL of the audio file (mp3/wav/m4a/ogg, ≤15 MB).", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "transcribe_audio", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Translate a PDF from a URL while preserving the original layout — formulas, figures and two-column academic typesetting stay intact, unlike ordinary translators that flatten the document. Returns a job_id; poll check_job for the download links (translated-only and bilingual side-by-side). Typically 20-60 seconds for a few pages. Powered by PDFMathTranslate (36k stars) hosted at AI NetCafé. Example — tools/call translate_pdf {\"url\":\"<pdf-url>\",\"target\":\"zh\"} → poll check_job", "inputSchema": { "properties": { "lang_to": { "description": "Target language, e.g. \"Simplified Chinese\", \"Japanese\". Default Simplified Chinese.", "type": "string" }, "pages": { "description": "How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive).", "enum": [ "first", "first5", "all" ], "type": "string" }, "url": { "description": "Direct URL to the PDF (e.g. an arXiv PDF link).", "type": "string" } }, "required": [ "url" ], "type": "object" }, "name": "translate_pdf", "outputSchema": { "properties": { "job_id": { "type": "string" }, "poll_interval_seconds": { "type": "integer" }, "status": { "type": "string" } }, "required": [ "job_id", "status" ], "type": "object" } }, { "description": "Any article URL → Word .docx (rendered page → clean document).", "inputSchema": { "additionalProperties": true, "properties": { "url": {} }, "type": "object" }, "name": "webpage_to_docx", "outputSchema": null }, { "description": "Describe a task in plain language (any language) and get back exactly which tools on this server do it, with ready-to-run example calls — instead of reading the whole catalogue and guessing. Also returns multi-step recipes when a task needs several tools chained (invoices to a ledger, a bank statement reconciled, a messy CSV turned into a deliverable). Deterministic and free: it calls no model, costs nothing, and never runs out of quota. Call this FIRST when you are not sure what this server offers.", "inputSchema": { "properties": { "task": { "description": "What you are trying to do, e.g. \"reconcile a bank statement against my books\" or \"把一堆发票整理成能入账的表格\"", "type": "string" } }, "required": [ "task" ], "type": "object" }, "name": "what_can_you_do", "outputSchema": { "additionalProperties": true, "type": "object" } }, { "description": "Excel .xlsx (by URL) → PDF.", "inputSchema": { "additionalProperties": true, "properties": { "url": {} }, "type": "object" }, "name": "xlsx_to_pdf", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:17a4ba1d80093f397a03952c19215521c86e7d8a9f4f01c56d3783ca46ed04fe | sha256sum