FabTally Utility Belt

io.github.zvmzaretsky由 GitHub 帳號 zvmzaretsky 發布v1.0.0更新於 Oct 24, 2026

13 deterministic agent utilities: timezone, cron, RRULE, currency, regex, diff, hashing & more.

發布方自己的服務:Tally

已驗證Streamable HTTP可網頁執行開發者工具資料與分析

概覽

AI 產生的概覽

一個遠端 MCP 伺服器,提供 13 項確定性工具:單位換算、雜湊、編碼、ID 產生、正規表示式、時區、cron、RRULE、匯率、文字差異與 JSON Schema 驗證。

可以做什麼
在長度、質量、溫度、體積、資料、時間、面積、速度、角度、壓力與能量之間換算數值,並對文字做 slugify、大小寫轉換與範本填寫,以及進行 base64、hex、URL 與 HTML 的編碼或解碼,以及計算加密摘要,支援選用 HMAC 與多種輸出編碼,以及產生 UUID、ULID、nanoid 或隨機識別碼,以及執行正規表示式的測試、比對、擷取或取代,並具備回溯保護,以及處理日期與排程:在 IANA 時區之間轉換時刻、解析 cron 運算式、展開 iCal RRULE、加減時長與工作日,以及用統一差異比對兩段文字,以及依 JSON Schema 驗證資料
適用情境
適合助理需要小而精確、可重複的計算時使用,例如單位或匯率換算、雜湊與編碼、ID 產生、正規表示式處理、時區與 cron 或重複規則計算、文字差異與結構描述驗證,而不必引入許多獨立套件。
執行需求
遠端 streamable-HTTP 端點;未宣告驗證、環境變數或標頭。README 另記錄了透過 npx 的本機 stdio 方式與自架 HTTP 模式,以及可選的 FABTALLY_BELT_BASE 用於設定 API 基底位址。
安裝前請注意
有七個工具(timezone、cron、rrule、currency、diff、jsonschema、datemath)每次呼叫收費 0.001 美元,透過 x402 以 Base 上的 USDC 支付;未付款時會回傳 402 挑戰,結算需將 x402 支付授權以 x_payment 傳入。伺服器聲明不持有私鑰,使用僅接收的錢包。匯率僅供參考,不構成可成交報價。輸入資料會傳送到第三方託管服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 FabTally Utility Belt,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.zvmzaretsky%2Futility-belt/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "fabtally-utility-belt": {
      "type": "http",
      "url": "https://belt.fabtally.com/mcp"
    }
  }
}

README

FabTally Utility Belt — MCP server

The deterministic micro-utilities AI agents call constantly, as an MCP server (stdio + streamable-HTTP) and a pay-per-call HTTP API. One reliable bundle instead of thirteen flaky npm deps.

  • Free tools return real results with no wallet: convert, text, hash, encode, id, regex.
  • Paid tools ($0.001/call, x402 · USDC on Base): timezone, cron, rrule, currency, diff, jsonschema, datemath. With no payment a paid tool returns the decoded x402 402 challenge (price / network / asset / payTo) so an agent can pay and retry with x_payment. Humans can instead prepay by card and use an X-FabTally-Key credit key against the HTTP API.

This server holds no private key. It fronts https://belt.fabtally.com. Every utility is a pure, deterministic function with strict input validation; bad input → 400, never charged; nothing is stored.

Tools

ToolTierWhat it does
convertfreeUnit conversion (length/mass/temperature/volume/data/time/area/speed/angle/pressure/energy).
textfreeslugify · case-convert (camel/pascal/snake/kebab/constant/…) · {{template}} fill.
hashfreesha256/sha512/sha384/sha1/md5/sha3-256/keccak256/ripemd160, optional HMAC, hex/base64 out.
encodefreebase64 / base64url / hex / url / html encode & decode.
idfreeuuid v4/v7, ULID, nanoid, random hex/base64url/int (count up to 1000).
regexfreetest/match/extract/replace with catastrophic-backtracking protection (killable worker + timeout).
timezone$0.001Instant → IANA zone with historically-correct DST; offsets, abbreviations, DST flags.
cron$0.001Cron expression → next N run times + plain-English description.
rrule$0.001iCal RRULE (RFC 5545) → next N occurrences.
currency$0.001Live currency conversion at reference/mid-market rates (keyless ECB feed, cached).
diff$0.001Text diff: unified patch + structured op-list + add/remove/hunk stats.
jsonschema$0.001Validate against JSON Schema (draft 2020-12) and explain every error in plain English.
datemath$0.001Add/subtract ISO-8601 durations, diff into chosen units, business-day add/diff.

Install / run

stdio (Claude Desktop, Cursor, any MCP client)

jsonc
// claude_desktop_config.json{  "mcpServers": {    "fabtally-belt": { "command": "npx", "args": ["-y", "fabtally-belt-mcp"] }  }}

Or clone and run: node index.js (speaks MCP over stdio).

streamable-HTTP (remote)

Hosted: https://belt.fabtally.com/mcp. Or self-host: MCP_HTTP_PORT=8108 node http.js.

Config

  • FABTALLY_BELT_BASE — API base (default https://belt.fabtally.com).

Paying for paid tools

A paid tool with no x_payment returns:

json
{ "payment_required": true, "http_status": 402,  "challenge": { "x402Version": 2, "accepts": [ { "scheme": "exact", "network": "eip155:8453",    "amount": "1000", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0x…" } ] } }

Build an x402 payment authorization (EIP-3009 transferWithAuthorization to payTo) for the accepts entry and call the tool again with the token in x_payment. amount is atomic USDC (1000 = $0.001).

Guarantees

Deterministic. Stateless — no PII or request data stored. Receive-only wallet (no custody). Currency figures are reference/mid-market rates for informational use, not a dealable quote. MIT licensed.

來源:README.md,提交 50dae27

工具

13

convert

Unit conversion

FREE. Convert a value between units in the same dimension: length, mass, temperature, volume, data, time, area, speed, angle, pressure, energy. Deterministic. Args: value (number), from (unit), to (unit). e.g. {value:100, from:'c', to:'f'} or {value:1, from:'GiB', to:'MB'}. Different-dimension conversions 400.

輸入參數to必填from必填value必填

text

Slugify / case-convert / template-fill

FREE. Text transforms. op='slugify' -> URL slug; op is one of camel|pascal|snake|kebab|constant|dot|path|title|sentence|upper|lower for case conversion; op='template' fills {{placeholders}} from `data`. Args: op, text (for slugify/case), or template + data (for template).

輸入參數op必填datatextstricttemplateseparator

hash

Hash / HMAC

FREE. Compute a cryptographic digest: sha256, sha512, sha384, sha1, md5, sha3-256, keccak256, ripemd160. Optional HMAC via hmac_key. Output hex (default), base64, or base64url. keccak256 also returns a 0x-form (handy for Ethereum). Args: algorithm, text (+ input_encoding utf8|hex|base64, output_encoding, hmac_key).

輸入參數text必填hmac_keyalgorithm必填input_encodingoutput_encoding

encode

Encode / decode (base64, hex, url, html)

FREE. Encode or decode text. op is one of base64-encode|base64-decode|base64url-encode|base64url-decode|hex-encode|hex-decode|url-encode|url-decode|html-encode|html-decode. Args: op, text.

輸入參數op必填text必填

id

Generate IDs (uuid v4/v7, ULID, nanoid)

FREE. Generate identifiers. kind is one of uuidv4|uuidv7|ulid|nanoid|hex|base64url|int. count up to 1000. nanoid takes `size`; hex/base64url take `bytes`. Uses a CSPRNG. Args: kind, count.

輸入參數kindsizebytescount

regex

Regex test / match / extract / replace (safe)

FREE. Run a regular expression against input with catastrophic-backtracking protection (it runs in a killable worker with a hard timeout, so a pathological pattern returns a 400 instead of hanging). op is test|match|extract|replace. Args: pattern, input, flags (gimsuy), op, replacement (for replace).

輸入參數opflagsinput必填limitpattern必填replacement

timezone

Timezone / DST convert (paid $0.001)

PAID $0.001 (x402, USDC on Base). Convert an instant between IANA time zones with historically-correct DST. Returns converted datetime, UTC offsets, tz abbreviations, DST flags, and the offset difference. Args: datetime (ISO 8601 or epoch), from_zone, to_zone. Without payment returns the x402 challenge; pass x_payment to settle. Free teaser exists on the HTTP API at /v1/timezone/free.

輸入參數to_zone必填datetime必填from_zonex_payment

cron

Cron -> next N runs + description (paid $0.001)

PAID $0.001. Parse a 5- or 6-field cron expression and return the next N run times plus a plain-English description. Args: expression, timezone (IANA, default UTC), count (default 5), from (ISO, optional). Without payment returns the x402 challenge; pass x_payment to settle.

輸入參數fromcounttimezonex_paymentexpression必填

rrule

iCal RRULE -> next N occurrences (paid $0.001)

PAID $0.001. Expand an iCal RRULE (RFC 5545) recurrence into its next N occurrences. Args: rrule (e.g. 'FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10'), after (ISO, default now), count (default 5), timezone. Tip: include DTSTART for anchored series. Without payment returns the x402 challenge; pass x_payment.

輸入參數aftercountrrule必填timezonex_payment

currency

Live currency convert (paid $0.001)

PAID $0.001. Convert an amount between currencies at reference/mid-market rates from a keyless public central-bank feed (ECB), cached. Informational, not a dealable quote. Args: amount, from, to (ISO-4217, e.g. USD, EUR, JPY). Without payment returns the x402 challenge; pass x_payment to settle.

輸入參數to必填from必填amount必填x_payment

diff

Text diff (unified + structured) (paid $0.001)

PAID $0.001. Diff two texts: a unified patch, a structured op-list (add/remove/equal), and add/remove/hunk stats. Args: a, b, mode (lines|words|chars, default lines), context (default 3), label_a, label_b. Without payment returns the x402 challenge; pass x_payment to settle.

輸入參數a必填b必填modecontextlabel_alabel_bx_payment

jsonschema

JSON-Schema (2020-12) validate + explain (paid $0.001)

PAID $0.001. Validate a value against a JSON Schema (draft 2020-12) and explain every error in plain English (which property, what was wrong, allowed values). Args: schema (object), data (any). Without payment returns the x402 challenge; pass x_payment to settle.

輸入參數dataschema必填x_payment

datemath

Date math: durations & business days (paid $0.001)

PAID $0.001. Calendar date math. op='add'/'subtract' an ISO-8601 duration (P1Y2M10DT2H30M) to a date; op='diff' two datetimes into chosen units; op='business-add' add business days (configurable weekend + holidays); op='business-diff' count business days between two dates. Without payment returns the x402 challenge; pass x_payment to settle.

輸入參數op必填todatedaysfromunitsweekenddurationholidaystimezonex_payment

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Tally 整合