{"server":"com.ainetcafe/netcafe-docs","count":23,"tools":[{"name":"check_job","title":"Check a long-running job","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>","input_schema":{"type":"object","required":["job_id"],"properties":{"job_id":{"type":"string","description":"The job_id returned when the task was started."}}},"output_schema":{"type":"object","required":["job_id","status"],"properties":{"kind":{"type":"string"},"error":{"type":"string"},"job_id":{"type":"string"},"result":{},"status":{"type":"string"},"is_terminal":{"type":"boolean"},"next_action":{"type":["object","null"]},"structured_result":{},"retry_after_seconds":{"type":"integer"}}},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"check_resume","title":"Can an ATS parse this resume?","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.","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the resume (PDF or .docx)."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"convert_to_pdf","title":"Convert a web page or HTML to PDF","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","input_schema":{"type":"object","properties":{"url":{"type":"string","description":"Page URL to convert (either url or html is required)."},"html":{"type":"string","description":"Raw HTML to convert (alternative to url)."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"csv_to_qbo","title":"Transaction CSV → QuickBooks .qbo bank feed file","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.","input_schema":{"type":"object","required":[],"properties":{"csv":{"type":"string","description":"CSV content with a header row."},"url":{"type":"string","description":"Or a link to the CSV."},"bank_id":{"type":"string","description":"Routing / bank identifier, if your import asks for one."},"currency":{"type":"string","description":"Three-letter currency code, default USD."},"account_id":{"type":"string","description":"Your account number as the accounting software expects it."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"deep_research","title":"Run an autonomous research agent","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","input_schema":{"type":"object","required":["topic"],"properties":{"depth":{"enum":["quick","standard"],"type":"string","description":"quick = outline only (~1 min); standard = full cited report (~3 min). Default standard."},"topic":{"type":"string","description":"The research question. Phrase it as a question, not a keyword."}}},"output_schema":{"type":"object","required":["job_id","status"],"properties":{"job_id":{"type":"string"},"status":{"type":"string"},"poll_interval_seconds":{"type":"integer"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"doc_translate_cn","title":"doc translate cn","description":"文档翻译成中文,保留段落结构。逐段翻译并核对段落条数进出一致 —— 漏译最常见的形态就是整段消失,这里会当场发现。入参 url(文档链接)或 text,可选 target(默认 zh)。自证不通过不计费。","input_schema":{"type":"object","properties":{"url":{},"text":{"type":"string"},"target":{"type":"string"}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"extract_invoices","title":"A batch of invoices → one ledger-ready table (arithmetic-checked)","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.","input_schema":{"type":"object","required":["urls"],"properties":{"urls":{"type":"string","description":"Invoice URLs — comma-separated, or pass an array. Up to 20 per call."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"extract_statement","title":"Bank statement PDF → transactions + reconciliation check","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).","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the statement PDF."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"extract_tables","title":"PDF tables → structured rows (with schema alignment)","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.","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the PDF."},"fields":{"type":"string","description":"Optional comma-separated target columns, e.g. \"invoice_no,supplier,date,amount\". Omit to infer from the header."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"fix_csv_encoding","title":"Fix a CSV that opens garbled in Excel","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.","input_schema":{"type":"object","required":[],"properties":{"url":{"type":"string","description":"Public URL of the CSV."},"text":{"type":"string","description":"Or paste the CSV content directly."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"make_slides","title":"Generate a PowerPoint deck","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","input_schema":{"type":"object","required":["topic"],"properties":{"topic":{"type":"string","description":"The topic, or a full outline to follow."},"slides":{"type":"integer","description":"Number of slides (default 8)."},"language":{"type":"string","description":"Output language, e.g. \"Chinese\", \"English\". Default Chinese."},"instructions":{"type":"string","description":"Optional extra guidance on style or emphasis."}}},"output_schema":{"type":"object","required":["job_id","status"],"properties":{"job_id":{"type":"string"},"status":{"type":"string"},"poll_interval_seconds":{"type":"integer"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"meeting_pack","title":"meeting pack","description":"会议录音 → 纪要包 PDF:转写、要点、决议、待办。纪要里点名的负责人会与转写原文比对 —— 把任务安排给一个从没在录音里出现过的人,报告会判不通过。入参 url(音频直链)。自证不通过不计费。","input_schema":{"type":"object","properties":{"url":{"type":"string"},"audio":{}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"pdf_add_page_numbers","title":"Add page numbers to a PDF","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}\".","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the PDF."},"text":{"type":"string","description":"Template, default \"{n}\". Use {n} and {total}."},"style":{"type":"string","description":"arabic (default) | roman (i, ii, iii) | ROMAN (I, II, III)"},"position":{"type":"string","description":"bottom-center (default) | bottom-left | bottom-right | top-center | top-left | top-right"},"start_at":{"type":"integer","description":"Number to start from (default 1)."},"font_size":{"type":"integer","description":"Font size, default 10."},"skip_first":{"type":"integer","description":"Leave this many leading pages unnumbered, e.g. 1 for a cover."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"pdf_page_count","title":"pdf page count","description":"Count pages and report each page size of a PDF (by URL).","input_schema":{"type":"object","properties":{"url":{}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"pdf_to_markdown","title":"PDF or scanned page → structured Markdown","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.","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the PDF, or of a page image (png/jpg) for scanned documents."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"pdf_watermark","title":"pdf watermark","description":"Stamp diagonal text watermark on every page of a PDF (by URL). text = the watermark.","input_schema":{"type":"object","properties":{"url":{},"text":{"type":"string"}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"pptx_to_pdf","title":"pptx to pdf","description":"PowerPoint .pptx (by URL) → PDF handout.","input_schema":{"type":"object","properties":{"url":{}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"redact_text","title":"Redact secrets and PII before sending text on","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.","input_schema":{"type":"object","required":["text"],"properties":{"only":{"type":"string","description":"Optional comma-separated subset, e.g. \"EMAIL,API_KEY,PRIVATE_KEY\"."},"text":{"type":"string","description":"The text to redact."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"transcribe_audio","title":"Transcribe audio to text","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>","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public URL of the audio file (mp3/wav/m4a/ogg, ≤15 MB)."},"language":{"type":"string","description":"Hint language code like \"zh\", \"en\"; default auto-detect."}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"translate_pdf","title":"Translate a PDF keeping its layout","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","input_schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Direct URL to the PDF (e.g. an arXiv PDF link)."},"pages":{"enum":["first","first5","all"],"type":"string","description":"How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive)."},"lang_to":{"type":"string","description":"Target language, e.g. \"Simplified Chinese\", \"Japanese\". Default Simplified Chinese."}}},"output_schema":{"type":"object","required":["job_id","status"],"properties":{"job_id":{"type":"string"},"status":{"type":"string"},"poll_interval_seconds":{"type":"integer"}}},"annotations":{"readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"webpage_to_docx","title":"webpage to docx","description":"Any article URL → Word .docx (rendered page → clean document).","input_schema":{"type":"object","properties":{"url":{}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"what_can_you_do","title":"Find the right tool for a task","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.","input_schema":{"type":"object","required":["task"],"properties":{"task":{"type":"string","description":"What you are trying to do, e.g. \"reconcile a bank statement against my books\" or \"把一堆发票整理成能入账的表格\""}}},"output_schema":{"type":"object","additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":false,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"},{"name":"xlsx_to_pdf","title":"xlsx to pdf","description":"Excel .xlsx (by URL) → PDF.","input_schema":{"type":"object","properties":{"url":{}},"additionalProperties":true},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-10-10T00:37:28.636Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/com.ainetcafe%2Fnetcafe-docs/connection?target=mcpServers","arguments":{"name":"com.ainetcafe/netcafe-docs","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/com.ainetcafe%2Fnetcafe-docs","arguments":{"name":"com.ainetcafe/netcafe-docs"}}]}