ZBS Index What actually exists in applied AI, with the source next to it

mcp server

AILANG Parse

Deterministic DOCX/PPTX/XLSX/PDF parser: track changes, comments, headers, footers, merged cells.

Description as published by the maintainer. Source

  • version 0.8.0
  • active
  • document understanding

active — Registry entry last updated 2026-05-29. Dashed tags are derived by ZBS Index from the published description, not stated by the maintainer.

What this server can do

32 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.

agentCard(_)
A2A Agent Card for agent-to-agent discovery. Returns a hand-crafted Agent Card with AILANG Parse-specific skills, supported formats, and capability descriptions. @raw: return raw JSON (no {result:..., elapsed_ms:N} envelope) for A2A compliance. Switch to @nowrap once available (lighter than @raw). If using --a2a flag, the built-in route takes precedence (collision guard skips this). Required: _.
apiSamples(_)
Sample files inventory — delegates to the upstream package. Package @route annotations don't auto-register with serve-api, so we provide a local wrapper here. Required: _.
apiTools(_)
Tool definitions for Claude, OpenAI, MCP, and A2A agent frameworks. Delegates to the upstream package. Required: _.
capabilities(_)
capabilities(() -> string ! {Env}) [pure] Required: _.
convertDocument(apiKey, gcsRef, target, filepath, sourceUrl, pdfBackend)
Convert a document to another format — deterministic conversion only. Parse to blocks, then generate. Every generator lives in pkg/sunholo/ailang_parse and is the same code the CLI's `--convert` runs, so fidelity here is whatever the CLI produces, not a second implementation. Input modes match POST /api/v1/parse exactly: multipart upload or sample_id via `filepath`, a public/signed https URL via `sourceUrl`, or `gs://` via `gcsRef` (Business tier). target: one of html, md, qmd, docx, pptx, xlsx, odt, odp, ods. ".docx", "DOCX", "markdown" and "htm" are normalised; anything else is a typed UNSUPPORTED_TARGET_FORMAT error, never a 500. Response is JSON, not a binary body — serve-api response bodies are strings. `content` holds the document, `encoding` says how to read it ("base64" for the ZIP container formats, "utf8" for html/md/qmd) and `content_type` is the MIME type to save it as. Metering: one request per conversion, on the same counters and the same key gate as /parse, plus the AI sub-quota when the SOURCE format needs AI (PDF, images). Output size does not affect the charge. This is the "per generated document" model — deliberately the simplest of the three candidates in v0_32_0_generation_surfaces.md, and the only one that is safe to change later, since per-byte or allowance-based pricing can be layered on top of a per-document counter but not extracted from one that was never recorded. AI generation (--generate --prompt) is NOT in scope here: it burns model tokens and cannot share this price or this rate limit. @nowrap: raw JSON (no envelope), _headers extracted as HTTP response headers. Required: filepath, target, apiKey, gcsRef, sourceUrl, pdfBackend.
deviceAuthApprove(req)
Approve a device authorization request. Called by the browser approval page after user signs in and confirms. Verifies Firebase ID token from Authorization header to ensure the caller is a real authenticated user. Extracts uid from the verified token. Dev mode: ALLOW_SELF_APPROVE=true skips Firebase verification (for testing). Required: req.
deviceAuthInspect(userCode)
Look up a pending device code by user_code and return its provenance. No authentication required — possession of the user_code is the proof. The dashboard /approve.html page calls this BEFORE showing the approve UI so the user can see where the request came from (IP, User-Agent, Referer, age) and decide whether to trust it. Returns 404 if the user_code does not match any pending device_codes doc. Already-approved or expired codes return as INPUT_NOT_FOUND too — there is nothing to inspect after the fact. Required: userCode.
deviceAuthPoll(deviceCode)
Poll for device authorization approval. Returns AUTHORIZATION_PENDING if user hasn't approved yet. Returns DEVICE_CODE_EXPIRED if the code has timed out. Returns approved status with API key on success. Required: deviceCode.
deviceAuthRequest(req)
Request a device authorization code. Returns device_code, user_code, and verification URL. The agent should display the verification_url to the user. Required: req.
editDocument(apiKey, deltas, filepath)
Parse a document, apply JSON edit deltas, and return the modified blocks as JSON (same format as POST /api/v1/parse with outputFormat=blocks). filepath: uploaded file path (multipart upload). deltas: JSON array of edit operations — see edit_apply.ail for format. Empty array or "" → round-trip (parse + return unchanged blocks). apiKey: dp_ API key. Response: modified blocks JSON. Use the AILANG SDK or CLI to generate a file from the returned blocks (e.g. ailang run ... --convert output.docx). Only deterministic office formats are supported (docx, pptx, xlsx, odt, odp, ods). AI-required formats (pdf, image, audio, video) are rejected. Required: filepath, deltas, apiKey.
estimate(filepath, outputFormat)
estimate((string, string) -> string ! {Clock, FS}) [pure] Required: filepath, outputFormat.
formats(_)
List all supported document formats for parsing and generation. Returns: parse formats (13), generate formats (9), output formats (blocks/markdown/html/a2ui), and which formats require AI (PDF, images). Required: _.
getKeyUsage(req)
Get usage stats for a user's API key. Accepts Firebase JWT or apiKey. Verifies that the requested keyId belongs to the authenticated user. Required: req.
getUploadUrl(apiKey, filename, mimeType)
Request a pre-authenticated GCS upload URL for direct file upload. Business tier only. The returned URL allows the client to PUT file content directly to GCS, bypassing the 32MB Cloud Run request limit. After upload, pass the gcs_ref to POST /api/v1/parse. Required: filename, mimeType, apiKey.
health(_)
Health check for the AILANG Parse API. Returns service status, version, AILANG commit hash, supported format counts, and billing catalog status. `billing_catalog_loaded` is FALSE when the BILLING_PLAN_CATALOG env var is unset or parses to an empty list — in that mode every authenticated request silently falls back to the safety-net "fallback" plan (limit=1) and is rejected as over-quota. release.sh asserts `billing_catalog_loaded == true` after every promotion to catch this regressing. Required: _.
listApiKeys(req)
List API keys for a user. Accepts either: - Authorization: Bearer <firebase_id_token> (dashboard path) - {apiKey: "..."} or {args: ["dp_..."]} in body (CLI/SDK path) The resolved userId filters the Firestore query server-side. Required: req.
mcpAccount(action, apiKey)
View account info, pricing, entitlements, or list keys. Actions: "status" (default) → tier, quota, usage from /me/entitlements "pricing" → public pricing tiers (no auth required) "keys" → list user's API keys with per-key usage "usage" → alias for "keys" (per-key usage is shown there) Required: apiKey, action.
mcpAuth(label)
Start device authorization to get an API key. Returns device_code, user_code, and verification URL. The agent should display the verification URL to the user, who signs in and approves the code. Then call mcpAuthPoll with the device_code. MCP wrappers don't have HTTP request headers, so provenance is empty here. Required: label.
mcpAuthPoll(deviceCode)
Poll for device authorization completion. Returns "pending" (keep polling every 5s), "approved" (with api_key and tier), or "expired" (start over with mcpAuth). Required: deviceCode.
mcpConvert(input, apiKey, outputPath, outputFormat)
Convert a document to another format. Targets: html, md, qmd, docx, pptx, xlsx, odt, odp, ods. `input` is a file path, a sample_id, an https:// URL, or a gs:// ref (Business tier). The converted file comes back as base64 in the JSON response rather than written to disk, so decode `content` to get the bytes. `outputPath` is accepted but ignored; it stays in the signature because removing it would change the auto-generated MCP tool schema for existing clients. Required: input, outputFormat, outputPath, apiKey.
mcpEstimate(filepath, outputFormat)
Estimate cost and latency for parsing a document. Accepts a file path or sample_id. No auth required. Required: filepath, outputFormat.
mcpFormats(_)
List supported formats, samples, and service capabilities. Pure JSON, no auth required. Delegates to package implementation. Single source of truth lives in pkg/sunholo/ailang_parse/services/mcp/tools. Required: _.
mcpParse(apiKey, filepath, requestId, outputFormat)
Parse a document. Accepts a file path or sample_id (e.g. "sample_docx_formatting"). The hosted server requires a valid dp_ API key — get one via mcpAuth. Output formats: blocks (default), markdown, html, a2ui. requestId is reserved for future replay support. Required: filepath, outputFormat, apiKey, requestId.
myEntitlements(apiKey)
Get the authenticated user's billing entitlements, usage, and plan details. Returns: plan name, monthly request limit, requests used, remaining requests, upgrade/manage URLs. Requires a valid AILANG Parse API key (dp_ prefix). Required: apiKey.
parseFileSecure(apiKey, gcsRef, editable, filepath, sourceUrl, pdfBackend, outputFormat)
Parse a document. Requires a valid API key. Validates the key, checks entitlement quotas, logs for replay. filepath: file path OR sample_id (e.g. "sample_docx_formatting" → resolved via /api/v1/samples). outputFormat: "blocks", "markdown", "html", or "a2ui". editable: "true" to emit editable A2UI component variants with block_index props; only meaningful when outputFormat="a2ui". gcsRef: optional gs:// URI for Business tier large file uploads (>32MB). When provided, the file is downloaded from GCS via our service account. Business tier only — Free/Pro users get TIER_UPGRADE_REQUIRED error. sourceUrl: optional https:// URL (e.g., a signed GCS URL or any public file). When provided, the file is fetched over HTTPS by docparse and parsed. Available on all tiers; tier dictates the max fetched-file size. Cannot be combined with gcsRef or filepath — sourceUrl wins. pdfBackend: optional PDF extraction backend override. "" — use server default (DOCPARSE_PDF_BACKEND env var, default "pdftotext"). "pdftotext" — deterministic text extraction via poppler. Fast, no AI cost. "docling" — IBM Docling layout analysis. No AI cost. "liteparse" — run-llama LiteParse. No AI cost. "ai" — Gemini multimodal via Vertex AI. Required for scanned/image-only PDFs. Explicit non-"ai" selection returns an error on failure (no silent AI fallback). @nowrap: raw JSON (no envelope), _headers extracted as HTTP response headers. Required: filepath, outputFormat, apiKey, gcsRef, sourceUrl, editable, pdfBackend.
partitionGeneral(apiKey, _headers, filepath, strategy)
Unstructured API-compatible endpoint (drop-in replacement for Unstructured.io). Returns elements in Unstructured JSON format (Title, NarrativeText, Table, ListItem, etc.). Accepts file upload (multipart/form-data) or JSON body with filepath/sample_id. API key: via unstructured-api-key header (Unstructured convention) or apiKey form field. strategy parameter: "auto" (default), "hi_res", "fast", "ocr_only". Uses _headers for header access while keeping @route multipart support. Required: filepath, apiKey, strategy, _headers.
pricing(_)
pricing(() -> string) [pure] Required: _.
requestHistory(req)
List recent parse requests for a user. Returns up to 50 entries. Accepts Firebase ID token (dashboard) OR dp_ API key (programmatic). Dashboard sends Authorization: Bearer <firebase_token> with {args: [uid]}. API clients send {args: [apiKey]}. Uses Firestore structured query to filter by user_id server-side and order by timestamp descending. Only reads matching docs (not full scan). Required: req.
requestReplay(req)
Retrieve a stored request/response pair for replay. Requires authentication: Firebase JWT or dp_ API key. The request must belong to the authenticated user (user_id match). Accepts optional outputFormat (blocks/markdown/html/a2ui) to re-render the stored blocks server-side using the ailang_parse pipeline. Required: req.
revokeApiKey(req)
Revoke an API key by keyId. Authenticates via either Firebase JWT or apiKey. Required: req.
rotateApiKey(req)
Rotate an API key: generate new key, revoke old one, preserve tier + usage. Required: req.
submit_feedback(body, title, contact, package, snippet, category, auto_dispatch, ailang_version)
Anonymous bug report / feature request / docs gap, queued for human review. Default routing: `public-feedback` inbox (general AILANG). Pass `package="vendor/name"` (e.g. "sunholo/auth") to route to that package's `pkg:vendor/name` inbox where its autonomous agent watches. Categories: bug, feature, docs, limitation. Body limit 10KB, snippet limit 4KB. Optional contact field for follow-up; opaque to the server. Set `auto_dispatch=true` to authorize the package agent to act on your submission immediately (default false — files for human triage; pkg-feedback agent template lands in a separate sprint). Required: title, body, category, ailang_version.

Last successful function declaration observed on . Source: https://docparse.ailang.sunholo.com/mcp/. We list what the server declared; we do not call any of these functions.

Endpoint status observed on . Source: https://docparse.ailang.sunholo.com/mcp/.

Signals

These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.

Signal Value What it measures Window Observed Source
Latest published version 0.8.0 Latest version string the maintainer published to the registry. as of fetch Model Context Protocol
Registry record last updated 2026-05-29 When the registry record was last updated by its maintainer. point in time Model Context Protocol
First listed in the MCP Registry 2026-05-29 Date this server was first published to the official MCP Registry. Not a usage or quality measure. point in time Model Context Protocol
mcp tools declared 32 tools Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. as of probe docparse.ailang.sunholo.com
mcp endpoint status ok The server listed 32 functions when asked. as of probe docparse.ailang.sunholo.com

Where to get it

This record as data

Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.

GET /api/v1/entries/mcp_server.json

Sources

  1. Tools declared by the MCP server at https://docparse.ailang.sunholo.com/mcp/ — docparse.ailang.sunholo.com, observed , trust tier 4.
  2. Official MCP Registry — Model Context Protocol, observed , trust tier 1.