Openworkdays
БесплатноНе проверенZero-signup business-day date-math API: add days, count days between dates, is-business-day.
Описание
Zero-signup business-day date-math API: add days, count days between dates, is-business-day.
README
A zero-signup business-day / working-day date-arithmetic API. No account, no API key — one GET request.
Add or subtract working days, count business days between two dates, or test whether a date is a business day — with your own holiday list. Pure UTC date math, returned as JSON. Built so autonomous AI agents get a deterministic date endpoint — an agent has no human to do a signup, and LLMs are measurably unreliable at date arithmetic.
Live: https://openworkdays.vercel.app
Quick start
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&days=5"
Sample response:
{
"mode": "add",
"start": "2026-05-15",
"days": 5,
"result": "2026-05-22",
"resultWeekday": "fri",
"startIsBusinessDay": true,
"weekend": ["sat", "sun"],
"holidaysApplied": 0,
"engine": "date-utc-v0.1",
"computedAt": "2026-05-17T00:00:00.000Z"
}
Any error returns JSON with an error key and an appropriate HTTP status
(400 bad params, 429 rate limited, 405 wrong method).
The three modes
The endpoint is always GET /api/businessdays. The mode is inferred from the
params you pass.
add — add/subtract working days
Params: start=YYYY-MM-DD, days=N (integer, +/- ok, |N| <= 10000),
optional weekend=, optional holidays=.
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&days=5"
N=0 returns start unchanged (even if start is itself non-working).
diff — count business days between two dates
Params: start=YYYY-MM-DD, end=YYYY-MM-DD, optional weekend=, optional
holidays=. Inclusive of both endpoints. Result is negative if
end < start.
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&end=2026-06-15&holidays=2026-05-25"
is — is this date a business day?
Params: date=YYYY-MM-DD, optional weekend=, optional holidays=.
curl "https://openworkdays.vercel.app/api/businessdays?date=2026-05-16"
Returns isBusinessDay plus a reason of "weekend", "holiday", or null.
Shared params
weekend(defaultsat,sun) — comma list. Tokens are case-insensitive from{sun,mon,tue,wed,thu,fri,sat}, or numeric0-6where0=Sunday…6=Saturday(matches JSgetUTCDay()). Cannot mark all 7 days as weekend.holidays— comma list ofYYYY-MM-DDdates treated as non-working (max 1000). Strictly validated.
Errors
Errors are JSON with an error key:
400— bad/missing params (missing start,invalid days (must be integer),invalid weekend token,invalid holiday date,invalid date,specify a mode(includes ausageobject), …)429— rate limited (Retry-Afterheader +retryAfterSec)405— wrong HTTP method (onlyGET/OPTIONSallowed)
JavaScript
const base = "https://openworkdays.vercel.app";
const r = await fetch(
base + "/api/businessdays?start=2026-05-15&days=5"
);
const out = await r.json(); // { mode:"add", result:"2026-05-22", resultWeekday:"fri", ... }
Use as an MCP tool (AI agents / Claude / Cursor / LLM clients)
OpenWorkdays is also a remote MCP server, so an agent can call it as a tool with no signup, no API key, no OAuth.
- Endpoint:
https://openworkdays.vercel.app/api/mcp - Transport: Streamable HTTP, stateless (POST JSON-RPC 2.0, single
application/jsonresponse — no sessions, no SSE) - Exposes exactly one tool:
businessdays— the mode (add/diff/is) is inferred from which args you pass, returning the same JSON as the REST endpoint (also asstructuredContent)
Drop this into any MCP client config (Claude Desktop, Cursor, or any client that speaks the Streamable HTTP transport):
{ "mcpServers": { "openworkdays": { "url": "https://openworkdays.vercel.app/api/mcp" } } }
Quick smoke test:
curl -s -X POST https://openworkdays.vercel.app/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"businessdays","arguments":{"start":"2026-05-15","days":5}}}'
Over MCP, an upstream error comes back as a tool result with isError: true.
Why
Every public business-day API gates behind an account or API key:
workingdays.org is test-only / subscription;
API Ninjas and Holiday API
need keys; timeanddate is a $299 product;
the RapidAPI business-day APIs need a RapidAPI key; Microsoft's "Calculate
Working Day" connector is Power-Platform-framework-gated and UK-bank-holidays
only. OpenWorkdays is a single anonymous GET — no signup, no key. That is
especially useful to autonomous agents, which have no human in the loop to
complete a signup. And because LLMs are measurably unreliable at date
arithmetic, an agent needs a deterministic endpoint rather than guessing.
Limitations
- Date-only, pure UTC arithmetic — no time-of-day, no DST, no timezones (that is recurrence-rule territory, intentionally out of scope for v0.1).
- Caller-supplied holidays only — there is no built-in country holiday
database. This is deliberate: we do not fake-compete on the
7000-holiday-DB axis where funded incumbents win. You pass the
holidays=list you care about. - Best-effort per-instance IP rate limit — a soft abuse brake, not a guarantee (serverless instances are ephemeral and not shared).
- MIT licensed and self-hostable — see below.
Self-host — it's zero-dependency files
The entire API is two single zero-dependency Node serverless functions:
api/businessdays.js (REST) and api/mcp.js
(remote MCP). No npm install, no deps at all. Deploy the folder to Vercel
(zero-config /api detection) or drop the handlers into any Node serverless
runtime.
git clone https://github.com/SolvoHQ/openworkdays
cd openworkdays
npx vercel --prod
License
MIT — see LICENSE.
Установка Openworkdays
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/SolvoHQ/openworkdaysFAQ
Openworkdays MCP бесплатный?
Да, Openworkdays MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Openworkdays?
Нет, Openworkdays работает без API-ключей и переменных окружения.
Openworkdays — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Openworkdays в Claude Desktop, Claude Code или Cursor?
Открой Openworkdays на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Openworkdays with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
