protogrid

Search / com.ainetcafe/netcafe-tables

netcafe-tables

R0 · no sign-in

Messy spreadsheets in, clean checkable tables out. Every result carries its arithmetic proof.

v1.0.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality94strong
Trust88of 100
Uptime, 30 days97%
Latency p50576 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "netcafe-tables": {
      "type": "http",
      "url": "https://ainetcafe.com/mcp/table?s=registry"
    }
  }
}
claude mcp add --transport http netcafe-tables https://ainetcafe.com/mcp/table?s=registry
[mcp_servers.netcafe-tables]
url = "https://ainetcafe.com/mcp/table?s=registry"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "netcafe-tables": {
      "type": "remote",
      "url": "https://ainetcafe.com/mcp/table?s=registry",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "netcafe-tables": {
      "type": "http",
      "url": "https://ainetcafe.com/mcp/table?s=registry"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=netcafe-tables&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYWluZXRjYWZlLmNvbS9tY3AvdGFibGU%2Fcz1yZWdpc3RyeSJ9"
}
{
  "servers": {
    "netcafe-tables": {
      "type": "http",
      "url": "https://ainetcafe.com/mcp/table?s=registry"
    }
  }
}
{
  "mcpServers": {
    "netcafe-tables": {
      "httpUrl": "https://ainetcafe.com/mcp/table?s=registry"
    }
  }
}
extensions:
  "netcafe-tables":
    enabled: true
    name: "netcafe-tables"
    type: streamable_http
    uri: "https://ainetcafe.com/mcp/table?s=registry"
    timeout: 300

Quality 94 / 100strong

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 300000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • warn
    tools.annotationsonly 7 of 15 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints7 of 15 tools declare all four hints; missing: match_transactions (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); dedupe_entities (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); csv_to_chart (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 2,359 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

15 tools, about 2,359 tokens to load them all · tool set 528655426e77 · checked 2026-10-10 02:27 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 88 / 100

duplicate-repo
provenance85
liveness99
freshness85
hygiene80

+repository +dns-namespace +website +reachable +uptime-97% ~updated-56d-ago -duplicate-repo(13 names)

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://ainetcafe.com/mcp/table?s=registry streamable-httpnoneyes97%576 ms2026-07-28, 2025-06-18, 2025-03-262026-10-10

Tools (15)

clean_tableread-onlyTidies a spreadsheet export: removes duplicate rows, trims whitespace (half-width and full-width — Chinese exports are full of  ), unifies the half-dozen ways a cell can say "empty" (NA / null / - / 无), drops empty rows and columns, and can split one column into several. Returns the cleaned CSV plus exactly what changed: rows in, rows out, duplicates removed, cells trimmed per column. It can also transpose rows/columns and unpivot a wide table into a long one. The row arithmetic is verified in code — if in − removed ≠ out, the response says so instead of handing back a table nobody can check. Use when a CSV came out of Excel or an export and needs cleaning before analysis.
csv_to_chartCSV (first column = labels, second = values) → chart PNG in one call.
csv_to_jsonCSV (text or URL) → JSON array of objects (first row = keys). Returns a .json file.
csv_to_md_tableCSV (text or URL) → GitHub-flavoured Markdown table.
csv_to_qboread-onlyConvert 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.
dedupe_entitiesFind records in a supplier/customer/store list that are probably the SAME entity under different names — "北京星辰科技有限公司" vs "星辰科技(北京)" — by cross-checking name similarity against hard identifiers: tax ID (统一社会信用代码, checksum-verified), phone, domain, bank account, address. It never merges anything: it returns candidate groups with the evidence for each link, pairs that need human review, and — just as
diff_tablesread-onlyMatches rows across two CSVs on a key column and reports three things: keys only in A, keys only in B, and keys in both whose other columns disagree — naming the exact column and both values. Unlike reconcile_ledger this needs no amount column, so it also fits name lists, inventory counts, permission tables, and any "these two exports should match" check.
fix_csv_encodingread-onlyDetect 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.
json_to_csvJSON array of objects → CSV file. Flattens keys, quotes fields containing commas.
match_transactionsMatch bank statement lines to ledger/invoice entries when there is NO shared key — by amount, date window, reference numbers found inside free-text descriptions, and fuzzy counterparty names ("北京XX科技" vs "XX科技(北京)"). Handles split payments (one invoice paid in instalments, 1:N) and combined payments (one transfer covering several invoices, N:1). Its rule is: never guess — a pair is only auto-match
merge_tablesread-onlyCombines up to 20 CSVs into a single table. Headers do not have to match: columns are unioned and a file missing a column contributes blanks for it, so rows never shift silently — the failure mode that makes hand-merged spreadsheets untrustworthy. Reports each source file row count and checks in code that they sum to the merged total. Use for monthly exports, per-store sheets, or any set of files with the same subject but drifting headers.
read_xlsxRead an Excel .xlsx workbook (by URL) into rows — every sheet, or one you name. Returns cell values (not formula text), dates as YYYY-MM-DD instead of Excel serial numbers, and keeps leading zeros so ID/postcode columns are not silently mangled. Says plainly which sheet it used, which sheets are hidden, and where merged cells left blanks, instead of guessing for you.
reconcile_ledgerread-onlyReconciles two sets of records — your books against a bank, platform, or supplier statement. Matches rows on a key column, compares an amount column, and returns three lists: only in A, only in B, and same key but different amount. Amounts are compared in integer cents, so 0.1 + 0.2 never invents a phantom difference for someone to chase. The response also proves the result: the listed differences are re-added and must equal the gap between the two totals, checked in code. Use for month-end close, platform payouts vs orders, or any "these two numbers should agree and do not" problem. This is the job people do by hand with VLOOKUP or a groupby and then cannot prove they got right.
what_can_you_doread-onlyDescribe 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.
write_xlsxBuild an Excel .xlsx file from rows (CSV text or JSON arrays), optionally several sheets at once. Numbers are written as real numbers so they sum in Excel, while values with leading zeros stay text so IDs and postcodes survive the round trip.

Schemas: list_tools.

Also listed as

12 other active names share this repository (showing 10): com.ainetcafe/ai-netcafe, com.ainetcafe/netcafe-almanac, com.ainetcafe/netcafe-build, com.ainetcafe/netcafe-china, com.ainetcafe/netcafe-devkit, com.ainetcafe/netcafe-docflow, com.ainetcafe/netcafe-docs, com.ainetcafe/netcafe-images, com.ainetcafe/netcafe-live-data, com.ainetcafe/netcafe-memory

Official server.json
{
  "name": "com.ainetcafe/netcafe-tables",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
  "remotes": [
    {
      "url": "https://ainetcafe.com/mcp/table?s=registry",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "repository": {
    "url": "https://github.com/mario03690/ai-netcafe",
    "source": "github"
  },
  "websiteUrl": "https://ainetcafe.com/duizhang",
  "description": "Messy spreadsheets in, clean checkable tables out. Every result carries its arithmetic proof."
}