protogrid

Search / com.ainetcafe/ai-netcafe

ai-netcafe

R0 · no sign-in

Tables and ledgers checked by arithmetic, not by a model. 24 tools. MCP 2026-07-28 ready.

v1.7.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.
Quality100strong
Trust87of 100
Uptime, 30 days89%
Latency p50560 ms

Connect

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

Quality 100 / 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 hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations34 of 34 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 6,121 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
dependencies100 · weight 15
  • pass
    deps.known_vulnsno known advisory in 2 resolved packages
  • n/a
    deps.mcp_sdk_versionthe official MCP SDK is not in the dependency graph
  • pass
    deps.resolvable[email protected], [email protected] resolved: 2 packages

34 tools, about 6,121 tokens to load them all · tool set 9e18fe4de4c0 · checked 2026-10-09 23:53 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 87 / 100

duplicate-repo
provenance85
liveness96
freshness85
hygiene80

+repository +dns-namespace +website +reachable +uptime-89% ~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.

Dependencies

[email protected] npm0 dependencies, resolved · advisories checked 2026-10-09

No known advisory affects this dependency graph.

[email protected] PyPI0 dependencies, resolved · advisories checked 2026-10-09

No known advisory affects this dependency graph.

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://ainetcafe.com/mcp?s=registry streamable-httpnoneyes89%560 ms2026-07-28, 2025-06-18, 2025-03-262026-10-09
packageregistryversionruntimesecrets
ai-netcafenpm1.2.1npx
ai-netcafepypi1.2.2uvx

Tools (34)

ai_visibilityread-onlyAudit a URL for AI visibility: which AI crawlers robots.txt actually allows (parsed per user-agent group, not keyword-matched), whether llms.txt / sitemap / JSON-LD / canonical exist, and how much real text an agent gets without running JavaScript. Returns a score plus the specific fixes, ordered by impact.
ask_modelSend a prompt to one specific large language model and get the answer plus measured platform cost metadata. The beta platform covers the user charge ($0.00); capacity limits still apply. Example — GET https://ainetcafe.com/t/ask_model?prompt=Say+hi&model=deepseek-v4-flash
build_appTurn one plain-language description into a LIVE single-page web tool: code is generated, deployed to managed hosting with HTTPS, and listed — you get the public URL in ~1-2 minutes. Best for tool-style apps: calculators, converters, checklists, timers, generators, small games. Async — poll with check_job. Example — tools/call build_app {"description":"a tip calculator web app"} → poll check_job
check_jobread-onlyGet 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>
china_reachabilityread-onlyFetch a URL from a real mainland-China network egress and report HTTP status, latency and China DNS resolution. Answers "is my site/API usable from China?" with a measurement instead of a guess — you cannot get this from a VPS abroad.
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.
compare_modelsRun one prompt across multiple LLMs in parallel and return every answer side by side with measured platform cost metadata and latency. The beta platform covers the user charge ($0.00). This answers "which model should I actually use for this kind of task?" with data instead of guesswork. Example — GET https://ainetcafe.com/t/compare_models?prompt=Explain+CAP+theorem+in+1+line
create_taskCreate a task that runs on a schedule in our cloud — you do not keep anything running. It only notifies you when the result actually changes. Kinds: watch_page (Watch a web page and report when its content changes); daily_answer (Re-run a web-researched question on a schedule and report when the answer changes); watch_reachability (Track whether a site stays reachable from mainland China); pipeline (Run one of your production lines (create_pipeline) on a schedule; every run leaves a proof-carrying work order). Needs a workspace token (?w=ws_... on your MCP URL) so you can manage it later. Application and model calls are subsidized during the free beta; your charge is $0.00 and capacity limits apply.
delete_taskdestructiveStop and remove a scheduled task and its run history.
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.
diff_textread-onlyReturns which lines were added and which were removed, with line numbers — computed with a longest-common-subsequence, not guessed by a model. Use to compare two versions of a config, a document, or any command output, instead of asking an LLM to eyeball two blobs and hoping it notices.
extract_invoicesread-onlyGive 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.
extract_statementread-onlyTurn 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).
extract_tablesread-onlyExtract 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.
fetch_pageread-onlyFetch a public URL and return clean LLM-ready Markdown from the server-rendered response. This tool does not execute browser JavaScript; for SPA or empty-text pages, use web_search, a browser, or the site's API. Use it after web_search to read a reachable public source, or to ingest a static page for analysis. Example — GET https://ainetcafe.com/t/fetch_page?url=https://example.com
get_appread-onlyFull details of one hosted application: what it does, how to use it, measured benchmark scores, source repository, and the URL a human can open to run it. Example — GET https://ainetcafe.com/t/get_app?slug=<slug-from-list_apps>
get_task_runsread-onlyRecent runs of one scheduled task: what it returned, whether the result changed, and measured platform cost metadata. User charge is $0.00.
json_yamlread-onlyConverts JSON to YAML or YAML to JSON. It works out which one you gave it, so you do not have to say. A parse failure comes back with the parser message instead of silently producing something that looks fine and is not. Use when a config, a CI file, or a Kubernetes manifest needs to be in the other format.
jwt_decoderead-onlyDecodes the header and payload of a JWT and reports issued-at / expiry as readable timestamps plus seconds remaining. The signature is NOT verified and the response says so — decoding is fine for debugging a token you already hold, but never treat these values as proof of anything; verification needs the secret and belongs in your own service.
list_appsread-onlyList the open-source AI applications hosted and ready to run at AI NetCafé (ainetcafe.com). Each one normally requires local setup (Docker/Python + your own model API key); here they run pre-configured. Use this to find a tool for a task like translating a PDF with formulas intact, generating a PowerPoint file, polishing an academic paper, or running an autonomous research report. Do not call this first when the request already clearly matches compare_models, translate_pdf, deep_research, or make_slides; call that task tool directly. Example — GET https://ainetcafe.com/t/list_apps
list_modelsread-onlyList every model currently available in the free beta with reference input/output rates and health metadata. Those rates are platform cost metadata only; every user charge is $0.00 during the beta. Example — GET https://ainetcafe.com/t/list_models
list_tasksread-onlyShow scheduled tasks, next run times, run counts, and measured platform cost metadata. User charge is $0.00 during the beta.
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.
model_costsread-onlyMeasured platform cost metadata for one call on each model; your charge is $0.00 during the free beta. Vendors publish per-million-token list prices, but a call's cost depends on how many tokens the model chooses to emit — models differ by an order of magnitude on the same prompt. standard_bench sends an IDENTICAL prompt to every model, so the difference is the model, not the workload — use that to choose a model before bulk work. production_mixed is real traffic and is NOT comparable across models. Free to cite, CC BY 4.0. Example — GET https://ainetcafe.com/t/model_costs
pdf_to_markdownread-onlyConvert 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.
recallread-onlyRetrieve previously stored memories, optionally filtered by search query and/or project. Call at the start of work on a known project to restore context: why decisions were made, known fixes, preferences. Example — GET https://ainetcafe.com/t/recall?query=<what+to+remember> (needs a workspace/key for durable memory)
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.
regex_testread-onlyRuns a regular expression against sample text and returns every match with its position and capture groups (named groups included). Use before wiring a pattern into code, instead of guessing whether the escaping survived the trip through JSON and the shell.
rememberPersist a durable memory: an architecture decision, a stable user preference, a verified bug fix, or an important discovery. The free beta provides a bounded per-caller/workspace memory pool; no personal API key is required. Do not store secrets or raw logs. Example — tools/call remember {"content":"Deploy key rotates monthly"}
render_diagramread-onlyTurn diagram-as-code into an image: Mermaid, PlantUML, Graphviz/DOT, C4, Excalidraw and 20+ more (self-hosted Kroki). Returns a hosted SVG/PNG URL you can embed directly in Markdown or HTML. Example — GET "https://ainetcafe.com/t/render_diagram?source=graph TD;A--%3EB&format=png"
transpile_sqlread-onlyConvert a SQL statement from one dialect to another — mysql, postgres, sqlite, tsql, oracle, snowflake, bigquery, redshift, spark, hive, presto, trino, duckdb, clickhouse, databricks, doris, starrocks and more. Deterministic parser (sqlglot), not an LLM: the same input always produces the same output, and syntax errors come back with the exact line and column. Use it when migrating queries between databases or debugging dialect-specific syntax.
validate_jsonread-onlyChecks that text parses as JSON, and optionally that required keys are present with the right top-level types. Returns the specific violations, not just true/false. Checks required + types only — not full JSON Schema, and it says so rather than pretending. Use before feeding generated JSON into something that will fail on it.
web_searchread-onlySearch the live web through a self-hosted SearXNG meta-search (aggregates dozens of engines, no tracking). Returns titles, URLs and snippets. Use when you need current information or sources. Example — GET https://ainetcafe.com/t/web_search?query=latest+MCP+spec
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.

Schemas: list_tools.

Also listed as

12 other active names share this repository (showing 10): 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, com.ainetcafe/netcafe-tables

Official server.json
{
  "name": "com.ainetcafe/ai-netcafe",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
  "remotes": [
    {
      "url": "https://ainetcafe.com/mcp?s=registry",
      "type": "streamable-http"
    }
  ],
  "version": "1.7.0",
  "packages": [
    {
      "version": "1.2.1",
      "transport": {
        "url": "https://ainetcafe.com/mcp?s=registry",
        "type": "streamable-http"
      },
      "identifier": "ai-netcafe",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org"
    },
    {
      "version": "1.2.2",
      "transport": {
        "url": "https://ainetcafe.com/mcp?s=registry",
        "type": "streamable-http"
      },
      "identifier": "ai-netcafe",
      "runtimeHint": "uvx",
      "registryType": "pypi",
      "registryBaseUrl": "https://pypi.org"
    }
  ],
  "repository": {
    "url": "https://github.com/mario03690/ai-netcafe",
    "source": "github"
  },
  "websiteUrl": "https://ainetcafe.com/mcp.html",
  "description": "Tables and ledgers checked by arithmetic, not by a model. 24 tools. MCP 2026-07-28 ready."
}