# com.ainetcafe/netcafe-docs (remote · ainetcafe.com)

Statements, invoices, tables, ledgers — every result carries its own arithmetic proof.

- Trust score: 71/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-16

## Components

- remote · `ainetcafe.com`: 71/100 (this document), [markdown](https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs.md), [page](https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs)

## Channel facts

- Endpoint: `https://ainetcafe.com/mcp/docs?s=registry`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-16.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2211 tokens (~138/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 10/100
  - Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### Claude

```bash
claude mcp add --transport http com-ainetcafe-netcafe-docs https://ainetcafe.com/mcp/docs?s=registry
```

### Codex

```toml
[mcp_servers.com-ainetcafe-netcafe-docs]
url = "https://ainetcafe.com/mcp/docs?s=registry"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-ainetcafe-netcafe-docs": {
      "type": "remote",
      "url": "https://ainetcafe.com/mcp/docs?s=registry",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-ainetcafe-netcafe-docs --url https://ainetcafe.com/mcp/docs?s=registry --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-ainetcafe-netcafe-docs:
    url: "https://ainetcafe.com/mcp/docs?s=registry"
```

### Other

```json
{
  "mcpServers": {
    "com-ainetcafe-netcafe-docs": {
      "type": "http",
      "url": "https://ainetcafe.com/mcp/docs?s=registry"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-16 (score 71, +38)

- [security improvement] Authorization: unverified → partial
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.10
- [functional improvement] MCP protocol: unverified → pass
- [functional] New tool “what_can_you_do”

### 2026-08-15 (score 33, −37)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.03 → unverified
- [security regression] Authorization: partial → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-08-14 (score 70, +12)

- [security improvement] Transport: fail → pass
- [functional improvement] Stability: unverified → 0.03
- [functional improvement] MCP protocol: fail → pass
- [functional] MCP protocol version: 2025-06-18 → 2026-07-28
- [functional] New tool “extract_invoices”

### 2026-08-13 (score 58)

First indexed and scored.

## MCP tools (16)

### `what_can_you_do` (~162 tokens)

Find the right tool for a task

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 a catalogue of 89 tools 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 parameters:

- `task` (string, required): What you are trying to do, e.g. "reconcile a bank statement against my books" or "把一堆发票整理成能入账的表格"

### `redact_text` (~110 tokens)

Redact secrets and PII before sending text on

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 parameters:

- `only` (string): Optional comma-separated subset, e.g. "EMAIL,API_KEY,PRIVATE_KEY".
- `text` (string, required): The text to redact.

### `csv_to_qbo` (~140 tokens)

Transaction CSV → QuickBooks .qbo bank feed file

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 parameters:

- `account_id` (string): Your account number as the accounting software expects it.
- `bank_id` (string): Routing / bank identifier, if your import asks for one.
- `csv` (string): CSV content with a header row.
- `currency` (string): Three-letter currency code, default USD.
- `url` (string): Or a link to the CSV.

### `check_resume` (~92 tokens)

Can an ATS parse this resume?

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 parameters:

- `url` (string, required): Public URL of the resume (PDF or .docx).

### `pdf_to_markdown` (~86 tokens)

PDF or scanned page → structured Markdown

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 parameters:

- `url` (string, required): Public URL of the PDF, or of a page image (png/jpg) for scanned documents.

### `extract_tables` (~109 tokens)

PDF tables → structured rows (with schema alignment)

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 parameters:

- `fields` (string): Optional comma-separated target columns, e.g. "invoice_no,supplier,date,amount". Omit to infer from the header.
- `url` (string, required): Public URL of the PDF.

### `extract_statement` (~101 tokens)

Bank statement PDF → transactions + reconciliation check

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 parameters:

- `url` (string, required): Public URL of the statement PDF.

### `extract_invoices` (~147 tokens)

A batch of invoices → one ledger-ready table (arithmetic-checked)

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 parameters:

- `urls` (string, required): Invoice URLs — comma-separated, or pass an array. Up to 20 per call.

### `pdf_add_page_numbers` (~216 tokens)

Add page numbers to a PDF

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 parameters:

- `font_size` (integer): Font size, default 10.
- `position` (string): bottom-center (default) | bottom-left | bottom-right | top-center | top-left | top-right
- `skip_first` (integer): Leave this many leading pages unnumbered, e.g. 1 for a cover.
- `start_at` (integer): Number to start from (default 1).
- `style` (string): arabic (default) | roman (i, ii, iii) | ROMAN (I, II, III)
- `text` (string): Template, default "{n}". Use {n} and {total}.
- `url` (string, required): Public URL of the PDF.

### `fix_csv_encoding` (~94 tokens)

Fix a CSV that opens garbled in Excel

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 parameters:

- `text` (string): Or paste the CSV content directly.
- `url` (string): Public URL of the CSV.

### `transcribe_audio` (~120 tokens)

Transcribe audio to text

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 parameters:

- `language` (string): Hint language code like "zh", "en"; default auto-detect.
- `url` (string, required): Public URL of the audio file (mp3/wav/m4a/ogg, ≤15 MB).

### `convert_to_pdf` (~91 tokens)

Convert a web page or HTML to PDF

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 parameters:

- `html` (string): Raw HTML to convert (alternative to url).
- `url` (string): Page URL to convert (either url or html is required).

### `deep_research` (~178 tokens)

Run an autonomous research agent

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 parameters:

- `depth` (string): quick = outline only (~1 min); standard = full cited report (~3 min). Default standard.
- `topic` (string, required): The research question. Phrase it as a question, not a keyword.

Output parameters:

- `job_id` (string)
- `poll_interval_seconds` (integer)
- `status` (string)

### `check_job` (~108 tokens)

Check a long-running job

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 parameters:

- `job_id` (string, required): The job_id returned when the task was started.

Output parameters:

- `error` (string)
- `is_terminal` (boolean)
- `job_id` (string)
- `kind` (string)
- `next_action` (object|null)
- `result`
- `retry_after_seconds` (integer)
- `status` (string)
- `structured_result`

### `translate_pdf` (~197 tokens)

Translate a PDF keeping its layout

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 parameters:

- `lang_to` (string): Target language, e.g. "Simplified Chinese", "Japanese". Default Simplified Chinese.
- `pages` (string): How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive).
- `url` (string, required): Direct URL to the PDF (e.g. an arXiv PDF link).

Output parameters:

- `job_id` (string)
- `poll_interval_seconds` (integer)
- `status` (string)

### `make_slides` (~156 tokens)

Generate a PowerPoint deck

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 parameters:

- `instructions` (string): Optional extra guidance on style or emphasis.
- `language` (string): Output language, e.g. "Chinese", "English". Default Chinese.
- `slides` (integer): Number of slides (default 8).
- `topic` (string, required): The topic, or a full outline to follow.

Output parameters:

- `job_id` (string)
- `poll_interval_seconds` (integer)
- `status` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs#diagnostics

## Score history

- 2026-08-16: 71
- 2026-08-15: 33
- 2026-08-14: 70
- 2026-08-13: 58

## Links

- Remote endpoint: https://ainetcafe.com/mcp/docs?s=registry
- Repository: https://github.com/mario03690/ai-netcafe
- Website: https://ainetcafe.com/mcp.html
- Changelog RSS feed: https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs.json
- HTML version of this page: https://verifymcp.io/servers/com-ainetcafe-netcafe-docs/mcp-docs
