Skip to main content
Glama

Server Details

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

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
sunholo-data/ailang-parse
GitHub Stars
0

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsC

Average 3.3/5 across 30 of 30 tools scored. Lowest: 1.1/5.

Server CoherenceB
Disambiguation2/5

Multiple tools serve overlapping purposes: four parse tools (editDocument, parseFileSecure, mcpParse, partitionGeneral), two auth flows (deviceAuth* and mcpAuth*), and several account info tools (mcpAccount, myEntitlements, pricing, health). An agent would struggle to select the correct one without deep context.

Naming Consistency3/5

All names use camelCase, but the verb placement is inconsistent: some start with verbs (editDocument, listApiKeys), others with nouns (agentCard, deviceAuthApprove). The mcp prefix is used but not uniformly across all tools (e.g., mcpParse vs parseFileSecure). This mixed pattern reduces predictability.

Tool Count3/5

30 tools is on the high side for a document parsing service. Many tools are dedicated to auth, key management, and account operations, which inflates the count. While not extreme, the set could be streamlined by consolidating redundant or rarely used tools.

Completeness4/5

The tool surface covers core parsing, editing, estimation, format listing, and sample management. Auth and key management are well-covered. A notable gap is the lack of a tool to generate a file from blocks (only editDocument returns blocks), but the SDK is referenced for that. Overall, minor gaps exist.

Available Tools

31 tools
agentCardInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
apiSamplesInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
apiToolsInspect

Tool definitions for Claude, OpenAI, MCP, and A2A agent frameworks. Delegates to the upstream package.

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
capabilitiesInspect

capabilities(() -> string ! {Env}) [pure]

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
deviceAuthApproveInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
deviceAuthInspectInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userCodeYes
deviceAuthPollInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceCodeYes
deviceAuthRequestInspect

Request a device authorization code. Returns device_code, user_code, and verification URL. The agent should display the verification_url to the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
editDocumentInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
deltasYes
filepathYes
estimateInspect

estimate((string, string) -> string ! {Clock, FS}) [pure]

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes
outputFormatYes
formatsInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
getKeyUsageInspect

Get usage stats for a user's API key. Accepts Firebase JWT or apiKey. Verifies that the requested keyId belongs to the authenticated user.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
getUploadUrlInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
filenameYes
mimeTypeYes
healthInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
listApiKeysInspect

List API keys for a user. Accepts either:

  • Authorization: Bearer (dashboard path)

  • {apiKey: "..."} or {args: ["dp_..."]} in body (CLI/SDK path) The resolved userId filters the Firestore query server-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
mcpAccountInspect

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
apiKeyYes
mcpAuthInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYes
mcpAuthPollInspect

Poll for device authorization completion. Returns "pending" (keep polling every 5s), "approved" (with api_key and tier), or "expired" (start over with mcpAuth).

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceCodeYes
mcpConvertInspect

Convert is not supported on the hosted server (no persistent local filesystem to write the output file to). Use the local stdio SDK (@ailang/parse) for local conversions, where the user has filesystem access.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYes
apiKeyYes
outputPathYes
outputFormatYes
mcpEstimateInspect

Estimate cost and latency for parsing a document. Accepts a file path or sample_id. No auth required.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes
outputFormatYes
mcpFormatsInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
mcpParseInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
filepathYes
requestIdYes
outputFormatYes
myEntitlementsInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
parseFileSecureInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
gcsRefYes
editableYes
filepathYes
sourceUrlYes
pdfBackendYes
outputFormatYes
partitionGeneralInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyYes
_headersYes
filepathYes
strategyYes
pricingInspect

pricing(() -> string) [pure]

ParametersJSON Schema
NameRequiredDescriptionDefault
_Yes
requestHistoryInspect

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 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
requestReplayInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
revokeApiKeyInspect

Revoke an API key by keyId. Authenticates via either Firebase JWT or apiKey.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
rotateApiKeyInspect

Rotate an API key: generate new key, revoke old one, preserve tier + usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
reqYes
submit_feedbackInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFull description (≤10 KB)
titleYesShort title for the report
contactNoOptional follow-up address (free-form, opaque to the server)
packageNoOptional vendor/name (e.g. "sunholo/auth") to route to that package's pkg:vendor/name inbox. Empty = general AILANG feedback.
snippetNoOptional code/error snippet (≤4 KB)
categoryYesbug | feature | docs | limitation
auto_dispatchNoAuthorize the receiving package's autonomous agent to act on this submission. Default false (files for human triage). Tagged on the Pub/Sub notification as category=auto:<original> for coordinator filtering.
ailang_versionYesThe reporter's CLI version (free-form, used for triage)

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.