Arabic Pipeline API

io.github.skypantherr由 GitHub 账号 skypantherr 发布v0.2.0更新于 Oct 31, 2026

Pay-per-call Arabic text, audio and document utilities over x402. USDC on Base, no API key.

已验证Streamable HTTP可网页运行文件与存储AI 与机器学习

概览

AI 生成的概览

远程 MCP 服务器,提供按次付费的阿拉伯语文本、音频转写和文档字段提取工具,以 Base 上的 USDC 结算,无需 API 密钥。

可以做什么
  • 统计文本:字符、词、句子、阅读时长以及阿拉伯语/拉丁语占比
  • 规范化阿拉伯语文本用于搜索或索引,识别阿拉伯语、英语或混合语言,并把长文本切分为带精确偏移的片段
  • 逐词比较两段文本,并以规范化、整词、短语或模糊方式检索文本
  • 把以 base64 提交的阿拉伯语或英语音频转写为纯文本
  • 从阿拉伯语文档图片或 PDF 中提取金额、日期、姓名、税号等结构化字段,可单份或最多五份批量处理
适用场景
适合需要处理阿拉伯语内容的场景,例如变音符号、字母变体和阿拉伯-印度数字导致普通字符串匹配失败时;也适合需要阿拉伯语语音转写,或从收据、发票、证件中提取字段而不想自建模型的情况。
运行要求
无需安装,是远程 streamable HTTP 端点。不需要 API 密钥、账号或订阅。每次工具调用须通过 x402 流程以 Base 主网 USDC 支付,因此客户端需要已充值的钱包并支持 x402 支付。音频与文档工具接受最大 12 MB 的 base64 数据。
安装前请注意
每次工具调用都会花费真实的 Base 主网 USDC,文本工具低至 0.002 美元,文档批量最高 0.10 美元,款项结算至提供方钱包。客户端需要签署支付,因此涉及钱包凭据。音频和文档内容会发送到远程服务并由第三方模型处理,文本与文档数据会离开本机。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Arabic Pipeline API,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.skypantherr%2Farabic-pipeline/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "arabic-pipeline-api": {
      "type": "http",
      "url": "https://arabic-pipeline-mcp.arabic-pipeline.workers.dev/"
    }
  }
}

README

Arabic Pipeline API

[Arabic Pipeline API MCP server]

Pay-per-call utilities for Arabic text, audio and documents, sold over x402 in USDC on Base.

No API key. No account. No subscription. The first request returns 402 Payment Required; the client signs a payment and retries; the money lands in the provider's wallet. That is the whole protocol — and it is why this service can pay a provider directly, with no payment processor in between.

bash
# Claude Code (any Streamable HTTP MCP client works the same way)claude mcp add --scope user --transport http arabic-pipeline-mcp \  https://arabic-pipeline-mcp.arabic-pipeline.workers.dev/

No install, no key: the tools are already on the other end. A tool call without payment answers with the x402 challenge, and your client pays it on Base.

Live endpoints

URL
REST APIhttps://arabic-pipeline.arabic-pipeline.workers.dev
MCP server (streamable HTTP)https://arabic-pipeline-mcp.arabic-pipeline.workers.dev/
OpenAPIhttps://arabic-pipeline.arabic-pipeline.workers.dev/openapi.json
x402 manifest (/.well-known/x402)https://arabic-pipeline.arabic-pipeline.workers.dev/.well-known/x402
llms.txt (agent-readable summary)https://arabic-pipeline.arabic-pipeline.workers.dev/llms.txt
x402scanhttps://www.x402scan.com/server/298e1e2b-3f5c-4890-9791-6d063fd20931
mcprush (MCP marketplace)https://mcprush.com/skypantherr/arabic-pipeline-api-mcp
PayAPI Market (settlement-verified listing)https://payapi.market/api/arabic-pipeline-api
MCP registryio.github.skypantherr/arabic-pipeline (v0.2.0, active)
Sourcehttps://github.com/skypantherr/arabic-pipeline

The MCP server exposes the same nine capabilities as tools, each behind its own x402 payment (text_metrics, text_normalize, text_detect_language, text_chunk, text_diff, text_search, audio_transcribe, doc_extract, doc_extract_batch).

Why not a generic text tool

Arabic breaks naive string handling in ways that are invisible until they cost you a failed match:

  • Tashkeel — فَاطِمَة and فاطمة are the same name, but not the same bytes.
  • Letter variants — أ إ آ → ا, ى → ي, ة → ه are folded on purpose, not by accident.
  • Arabic-Indic digits — ١٢٣ must match 123, and the tashkeel range overlaps the digit range, so order of operations matters.
  • Bidi control characters — LRM/RLM and zero-width joiners are invisible, and strip "clean" text unless removed deliberately.
  • Offsets — every text tool returns start/end into the original string, so a result can be applied to the caller's own text rather than a rewritten copy.

The paid routes declare this in the 402 itself: each challenge carries a Bazaar input schema and an output example, so a client can see exactly what it is buying before it signs anything.

Endpoints

RouteWhat it doesPriceCost to serve
GET /text/metrics?text=…Counts, language mix, sentence/word stats, reading time$0.002$0 (pure code)
POST /text/metricsSame, JSON body$0.002$0 (pure code)
POST /text/normalizeArabic text cleanup: tashkeel/tatweel, alef/ya/ta-marbuta folding, digit unification, bidi-control removal, whitespace collapse$0.005$0 (pure code)
POST /text/detectArabic / English / mixed detection with confidence and script mix$0.002$0 (pure code)
POST /text/chunkSentence-aligned chunks with exact offsets, for model context windows$0.002$0 (pure code)
POST /text/diffWord-level diff after Arabic normalisation: equal flag, similarity, added/removed$0.002$0 (pure code)
POST /text/searchNormalised Arabic search (phrase / whole-word / fuzzy) with exact offsets and snippets$0.002$0 (pure code)
POST /audio/transcribeAudio → clean text (Arabic or English)$0.02model call
POST /doc/extractDocument image/PDF → structured fields (receipts, invoices, IDs)$0.03model call
POST /doc/extract/batch1–5 documents in one call, independent results and partial failures$0.10model call ×n

POST /text/normalize accepts a mode:

  • light — lossless: whitespace, digit unification, bidi cleanup only.
  • search — light + tashkeel removal + letter folding (أإآ→ا, ى→ي, ة→ه).
  • index — search + punctuation stripped (use as a dedup / index key).

Try it

bash
# 1. Any paid route answers 402 with a payment challengecurl -i https://arabic-pipeline.arabic-pipeline.workers.dev/text/normalize \  -H 'content-type: application/json' \  -d '{"text":"مُحَمَّدٌ عَلِيّ","mode":"search"}'
# 2. Free routes (no payment needed)curl https://arabic-pipeline.arabic-pipeline.workers.dev/openapi.jsoncurl https://arabic-pipeline.arabic-pipeline.workers.dev/

How x402 payment works (for agents)

  1. Call the route with no payment header → 402 Payment Required.
  2. The response carries a base64 PAYMENT-REQUIRED header and, in the body, accepts[] entries describing how to pay (network, asset, price, payTo).
  3. Pick one entry, sign a payment for it, and retry the request with the PAYMENT-SIGNATURE header (base64 payment payload).
  4. The server verifies and settles the payment (via the facilitator) and returns the real result plus a PAYMENT-RESPONSE header with the receipt.

The full machine-readable contract — including per-operation x-payment-info — is at GET /openapi.json.

Settlement

  • Network: Base mainnet (eip155:8453), asset USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913).
  • Payments are verified and settled by a public x402 facilitator (https://x402.dexter.cash — no account, no fees). The facilitator only executes the buyer's signed payment; it never holds funds.
  • Settlement destination: 0x05523af5bd166816D1418Ebf7D6371e1fFB1D2e6.

PayAPI Market independently verified this deployment by buying a call and publishing the receipt: POST /text/normalize for $0.005 USDC, settled in transaction 0xfc3e42f9…73ce9c at block 53,330,178 on Base. The listing is payapi.market/api/arabic-pipeline-api.

Model endpoints

/audio/transcribe uses gemini-3.5-transcribe; /doc/extract and /doc/extract/batch use gemini-3.6-flash with a JSON response schema. Both model names are configurable (GEMINI_TRANSCRIBE_MODEL, GEMINI_VISION_MODEL). The six text endpoints are pure computation and cost nothing to serve.

A batch runs one model call per document, concurrently. At $0.10 for five documents that is $0.02 each, a third below the $0.03 single-document price; for one or two documents the single route is cheaper, and the batch route says so. A failed document is reported in place (ok: false plus error) instead of failing the whole call, so a bad scan costs one slot rather than the payment.

Local development

bash
npm installcp .dev.vars.example .dev.vars   # then add GEMINI_API_KEYnpm run dev                       # wrangler devnpm test                          # vitestnpm run typecheck

Deployment

See DEPLOY.md. The short version: npm run login → npm run secret → npm run deploy → register the listing.

Two Workers are deployed from this repo:

bash
npm run deploy              # REST API  -> arabic-pipeline.arabic-pipeline.workers.devnpx wrangler deploy -c wrangler.mcp.toml   # MCP server -> arabic-pipeline-mcp.arabic-pipeline.workers.dev

Licence

Proprietary — all rights reserved. The source is public so the service can be audited; it is not licensed for reuse or redistribution. The API itself is sold per call, not licensed.

来源:README.md,提交 e45562a

工具

9

text_metrics

Text metrics

Measure text deterministically: characters, words, unique words, sentences, lines, paragraphs, digits, punctuation, average word and sentence length, reading time and an Arabic/Latin language mix. Works on any language, not only Arabic.

输入参数text必填

text_normalize

Normalize Arabic text

Canonicalise Arabic text for search, matching or indexing: remove tashkeel and tatweel, fold alef/ya/ta-marbuta, unify Arabic-Indic digits, strip bidi control characters and collapse whitespace. mode=light is lossless; search adds letter folding; index also strips punctuation so the result can be used as a dedup key.

输入参数modetext必填

text_detect_language

Detect language

Identify whether text is Arabic, English, mixed or unknown from its script mix, with a confidence score and the count of Arabic, Latin and other letters. Deterministic and model-free, so it is cheap enough to run on every incoming message to route Arabic work.

输入参数text必填

text_chunk

Chunk text

Split long text into chunks for a model context window. Cuts at sentence boundaries when possible, then at word boundaries, and never mid-word unless a single word is longer than max_chars. Returns each chunk with exact start/end offsets into the original string plus an optional overlap for context carry-over.

输入参数text必填overlapmax_chars

text_diff

Diff two texts

Compare two texts word by word after Arabic normalisation (tashkeel, alef/ya/ta-marbuta and digit variants are treated as equal). Returns an equal flag, a similarity score and the added and removed words. Use it for deduplication, re-import checks and QA of edited Arabic copy. Each side is limited to 1500 words.

输入参数a必填b必填

audio_transcribe

Transcribe audio

Transcribe Arabic or English speech to plain text. Send the audio as base64 (webm, mp3, wav or mp4); the payload limit is 12 MB of base64. Returns the transcript plus the model that produced it.

输入参数mime_typeaudio_base64必填

doc_extract

Extract document fields

Extract structured fields from an Arabic document image or PDF (receipts, invoices, official letters, national IDs, bank slips) as JSON: amounts, dates, names, identifiers and tax numbers, with null for fields the document does not contain. Send the file as base64 (jpeg, png or pdf); the limit is 12 MB of base64.

输入参数mime_typedocument_base64必填

doc_extract_batch

Extract document fields (batch)

Extract structured fields from 1 to 5 Arabic documents in one paid call: $0.10 for the batch, i.e. $0.02 per document instead of $0.03. Documents are processed independently and in parallel, results come back in request order with an echoed id, and one unreadable image does not fail the rest (it appears with ok=false and an error). Use this for a stack of receipts, invoices or bank slips.

输入参数documents必填mime_type

版本历史

2
  1. v0.2.0最新Oct 31, 2026
  2. v0.1.0Oct 22, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。