Batchwatch Mcp

io.github.batchwatchPublished by GitHub account batchwatchv0.1.1Updated Oct 25, 2026

Ask batchwatch whether to batch a job and get the real measured queue evidence, not a guess.

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

A local MCP server that lets an assistant ask batchwatch for measured LLM batch-queue wait evidence before deciding whether to batch a job.

What you can do
Ask whether a job should go to the batch queue given a model and a maximum wait, and get a verdict with confidence and freshness data. Estimate how long a job is likely to wait as a distribution rather than a single ETA. Check current queue conditions against the recent norm. Retrieve the full measured wait distribution and see which provider and model combinations have data. Read the public queue-movement reading, which is delayed without a key.
When to use it
Use it when an assistant is about to choose between an LLM provider's async batch queue and a synchronous call, and you want the choice based on measured queue evidence instead of habit or guesswork.
Requirements
Runs locally over stdio as an npm package and needs Node.js 18 or newer. Optional environment variables: BATCHWATCH_URL for the API base, BATCHWATCH_TOKEN for an API key, and BATCHWATCH_TIMEOUT_MS for the per-call timeout. Network access to the batchwatch API is required.
Before you install
Without BATCHWATCH_TOKEN the data is delayed by 15 minutes; fresher live figures require a paid tier tied to that key. The server is a read-only proxy that makes no decisions and returns an error rather than a number when the API fails or times out. Queries and the token are sent to the batchwatch API.

Installation

In SourceWeft

  1. Open Batchwatch Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

batchwatch MCP server

Let an AI agent ask batchwatch "should I batch this job?" instead of guessing.

When a developer asks Claude, Cursor, Cline or any MCP-speaking agent "should I send this to the batch queue or run it synchronously?", this server lets the agent call batchwatch and get the real queue evidence — the measured wait distribution, the current conditions, a graded confidence, and how fresh the data is.

It wraps batchwatch's existing read routes as MCP tools. It is a thin, faithful proxy: it makes no decision and invents no numbers. Every answer is the provider's own JSON, passed through verbatim, carrying the n, confidence, why, basis and freshness the API already returns. If the API is down or slow, the tool returns an error — never a fabricated figure.

Access & tiers — the same gate as the rest of batchwatch

Because it is a faithful proxy, the server runs on the same tiers as the batchwatch API — there is no separate MCP plan and no MCP fast lane. Each tool carries your BATCHWATCH_TOKEN and earns exactly the tier that key earns anywhere else:

  • No token → you read the public data, delayed 15 minutes. You still get every answer — the distribution, the conditions, the verdict — as fresh as the open API serves them.
  • A token → the agent earns that key's tier and its freshness, volume and live behaviour. Live figures are what let an agent route real traffic on the answer, and they are bought here the same way they are bought at the API.

One access model, gated in one place — the batchwatch tier system (see the Tiers, delay, quota and the free trial reference in the batchwatch API docs).

Tools

Each tool maps to a real route in src/index.js (there is deliberately no tradeoff tool — /v1/tradeoff is named in the KRAVSPEC but not built yet, and a tool for a route that does not answer would be exactly the fabricated capability this project refuses to ship).

ToolRouteWhat it answers
should_i_batchGET /v1/should-i-batchGiven a model and your own max_wait, does the batch queue currently honour it? The verdict.
estimate_batchtimeGET /v1/estimate-batchtimeHow long is my job likely to wait? A distribution, never a single ETA.
conditionsGET /v1/conditionsCurrent conditions vs the recent norm — "is it me or them?"
distributionGET /v1/distributionThe full measured wait distribution (the raw evidence).
coverageGET /v1/coverageWhich provider+model combos have data, and how answerable each is.
waitGET /v1/waitThe public "is the queue moving now?" reading (delayed without a key).

batchwatch reports distributions and current conditions, not point ETAs. A personal history of 3-minute medians once produced a 480-minute job; "your job finishes at 14:32" is a lie the one time it matters. The tools' descriptions say so, so the calling model uses the answer correctly.

Install & run

bash
cd mcpnpm installnode index.js       # speaks MCP over stdio

Requires Node ≥ 18 (uses the built-in fetch).

Configuration (environment)

VarDefaultMeaning
BATCHWATCH_URLhttps://batchwatch.devAPI base.
BATCHWATCH_TOKEN(unset)Optional API key. Without it the data is delayed, not absent — you still get answers, just older ones.
BATCHWATCH_TIMEOUT_MS8000Per-call timeout. On timeout the tool errors; it never guesses.

Wiring into a client

Claude Desktop / Cursor / Cline mcpServers entry:

json
{  "mcpServers": {    "batchwatch": {      "command": "node",      "args": ["/absolute/path/to/batchwatch/mcp/index.js"],      "env": { "BATCHWATCH_TOKEN": "tk_your_key_optional" }    }  }}

Tests

bash
npm test                      # offline unit tests (mocked fetch) — deterministicBATCHWATCH_LIVE=1 npm test    # also runs the live smoke against BATCHWATCH_URL

The unit tests assert the load-bearing properties: omitted numeric fields are never sent as 0; the provider JSON is passed through unchanged; only the real routes are exposed (no tradeoff); and an API error yields an error, never a number.

Publishing (registry reach — the point of #57)

The highest-leverage distribution channel for a 2026 dev tool is being the answer an agent reaches for by default. Once this is published so agents can install it, batchwatch wins the call instead of merely being mentioned. Targets: the Anthropic MCP registry, Smithery, and mcp.so. The package is publish-ready (bin: batchwatch-mcp, zero build step); registry submission is tracked on Vikunja task #57.

Why this exists

batchwatch measures how long jobs actually wait in LLM providers' async batch queues. Batch is half price, but "done within 24 hours" cannot be planned around, so most callers pay full price out of habit. This server puts the queue evidence one tool-call away from the agent that is about to make that choice.

Source: mcp/README.md at commit 41f69c2

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.