# FabTally Utility Belt [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/zvmzaretsky/fabtally-belt-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/fabtally-utility-belt

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

## Tools
Capabilities this server exposes over MCP:

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

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "fabtally-utility-belt": {
    "command": "npx",
    "args": ["-y","fabtally-belt-mcp"]
  }
}
```

## Documentation & 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

| Tool | Tier | What it does |
|---|---|---|
| `convert` | free | Unit conversion (length/mass/temperature/volume/data/time/area/speed/angle/pressure/energy). |
| `text` | free | slugify · case-convert (camel/pascal/snake/kebab/constant/…) · `{{template}}` fill. |
| `hash` | free | sha256/sha512/sha384/sha1/md5/sha3-256/keccak256/ripemd160, optional HMAC, hex/base64 out. |
| `encode` | free | base64 / base64url / hex / url / html encode & decode. |
| `id` | free | uuid v4/v7, ULID, nanoid, random hex/base64url/int (count up to 1000). |
| `regex` | free | test/match/extract/replace with catastrophic-backtracking protection (killable worker + timeout). |
| `timezone` | $0.001 | Instant → IANA zone with historically-correct DST; offsets, abbreviations, DST flags. |
| `cron` | $0.001 | Cron expression → next N run times + plain-English description. |
| `rrule` | $0.001 | iCal RRULE (RFC 5545) → next N occurrences. |
| `currency` | $0.001 | Live currency conversion at reference/mid-market rates (keyless ECB feed, cached). |
| `diff` | $0.001 | Text diff: unified patch + structured op-list + add/remove/hunk stats. |
| `jsonschema` | $0.001 | Validate against JSON Schema (draft 2020-12) and explain every error in plain English. |
| `datemath` | $0.001 | Add/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.

