npm @toolstop/check-digitsstreamable-httpMITupdated 8d ago
Small, stateless MCP servers. Each one does a single narrow job exactly, so an assistant can call it instead of guessing.
What can you do with Check Digits?
toolstop
Small, stateless MCP servers. Each one does a single narrow job exactly, so an assistant can call it instead of guessing.
Every server runs on Cloudflare Workers at <name>.toolstop.dev, holds no
state, and can also run locally over stdio.
Servers
| Server | Does | Endpoint |
|---|---|---|
| check-digits | Validates check digits for IBAN, LEI, ISBN, GTIN/UPC/EAN, VIN, NPI, ISIN, ABA routing numbers and payment cards | https://check-digits.toolstop.dev |
Connecting
Remote, over streamable HTTP. No install, no account:
{
"mcpServers": {
"check-digits": {
"type": "url",
"url": "https://check-digits.toolstop.dev"
}
}
}
Local, over stdio:
npx @toolstop/check-digits
Design
Stateless. No database, no vector index, no metered upstream API. A request is answered from its arguments alone. Servers scale to zero and an idle one costs nothing.
Zero runtime dependencies. No MCP SDK, no schema library. MCP over streamable HTTP is request/response, which makes hand-rolled dispatch small enough to be worth it: faster cold starts, and no supply chain.
Telemetry records shape and outcome, never argument values. A check-digit
server that logged its input would be storing real IBANs and card numbers. The
transport emits one row per request describing what kind of call happened and
whether it succeeded. packages/_shared/transport.test.mjs asserts that no raw
argument value can reach it.
The row also carries a session id, and it is derived from the network the request came from, truncated to a /24 or /48 before hashing, never the full address. Hashing the whole IP would not have anonymised it: the IPv4 space is 32 bits and the other inputs are public, so the id was walkable back to one address until this was fixed on 2026-08-10. Each server's README states the complete recorded row rather than only what is left out.
Every tool declares readOnlyHint, a complete inputSchema and an
outputSchema, so a client can tell what a call will do before making it and
what shape comes back. The transport refuses to start a server whose tools do
not state their annotations, rather than defaulting them to something reassuring.
Repo layout
packages/_shared/ shared transport, dispatch and telemetry
packages/mcp-<name>/ one server
scripts/discover.mjs derives the CI matrix from the filesystem
scripts/smoke.mjs protocol check against a live endpoint
See CLAUDE.md for the operating manual.
Development
npm install
npm test # every server plus the shared transport
node scripts/smoke.mjs mcp-check-digits # protocol check against the live endpoint
License
MIT
Install
Add Check Digits to your client. Pick the one you use.
{
"servers": {
"check-digits": {
"type": "http",
"url": "https://check-digits.toolstop.dev"
}
}
}Add to `.vscode/mcp.json` in your workspace.
claude mcp add check-digits -- npx -y @toolstop/check-digitscodex mcp add check-digits -- npx -y @toolstop/check-digitsamp mcp add check-digits -- npx -y @toolstop/check-digits{
"mcpServers": {
"check-digits": {
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"check-digits": {
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"mcpServers": {
"check-digits": {
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"check-digits": {
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"check-digits": {
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"check-digits": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@toolstop/check-digits"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"check-digits": {
"command": {
"path": "npx",
"args": [
"-y",
"@toolstop/check-digits"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @toolstop/check-digitsRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Incomplete
- Documentation18/25
- Maintenance25/25
- Trust16/20
- Capability0/15
- Install experience15/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 0 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 18 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.2.2Latest | Aug 11, 2026 |
| 0.2.1 | Aug 11, 2026 |
| 0.2.0 | Aug 7, 2026 |
| 0.1.1 | Aug 7, 2026 |