MCP.Market

Deltat MCP server

by open-deltat·io.github.open-deltat/deltat·v0.2.0·9 stars

Give an agent a calendar it can book without double-booking: find, hold, then commit atomically.

B82/100grade B
What users say
No reviews yet
Be the first
Safety scan
B82/100

full report

Adoption
Growing

9 stars35 downloads/wk

Reviews

Write one

Nobody has reviewed Deltat yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Deltat tools (9, 2 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • book_slot

    Use this when you were about to book a slot in one step. This calendar does not have a one-step booking verb, and calling this tool never books anything. Booking is two steps so a confirmation cannot lose a race: call hold_slot to reserve the time, then commit_hold to confirm it. This tool exists only to tell you that.

  • cancel_bookingwrite action

    Use this only when a human has asked for a confirmed booking to be cancelled. Permanently removes it and frees the slot for anyone else. Needs a booking_id from list_bookings or commit_hold, not a hold_id. To give up a slot you are only holding, use release_hold instead.

  • commit_hold

    Use this when you have the hold_ids from hold_slot and the booking is confirmed. Turns every hold into a booking in one atomic step: all of them or none, so the slot cannot be lost between reserving and confirming and a group can never be half booked. This is the only way to create a booking. If it is refused, the reply may list other free times: offer one and call hold_slot on it, since none of t

  • create_calendarwrite action

    Use this when someone needs a new bookable calendar and you do not already have a calendar_id. Returns the calendar_id every other tool needs. Pass `hours` to open it for business in the same call; without them the calendar exists but nothing can be booked on it yet.

  • find_slots

    Use this first, before offering anyone a time. Lists the genuinely free slots between two RFC 3339 instants (offset required, e.g. 2026-06-01T09:00:00Z). With several calendars it lists only the times when every one of them is free. A slot listed here is not reserved for you: another caller can take it a moment later, so call hold_slot before you promise it to anyone. Availability is materialized

  • hold_slot

    Use this the moment you are about to offer a specific time to a human, before you say it out loud. Reserves the slot for a few minutes so nobody else can take it while you confirm, and returns hold_ids. With several calendars it holds every one of them for the same time, or none. A hold is not a booking: call commit_hold to confirm it, or release_hold to give it back. If you do neither it expires

  • list_bookings

    Use this when someone asks what is already scheduled, or when you need a booking_id in order to cancel something. Returns confirmed bookings only; slots that are merely held do not appear here. To find free time instead, use find_slots.

  • release_hold

    Use this as soon as you know a held time is not wanted, for example the person picked a different slot or ended the conversation. Frees every slot immediately instead of leaving them blocked until the holds expire. Safe to call on a hold that already expired.

  • set_availability

    Use this when a calendar's opening hours need to change, or when find_slots returns nothing because none were set. Replaces the whole weekly schedule rather than adding to it, so send every open block you want, not just the new one. Existing bookings are kept even if they now fall outside open hours.

Public scan report

scanner v0.1.10 · 2026-10-14 · same rubric, same numbers if you re-run it

no findings
  • Code scan12 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 10 days ago15/15
  • Maintainer identityregistry namespace matches repository owner7/10
Overall 82/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Deltat compares

Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
82/100
higher than 58% of 1,299 Productivity servers
Tools
9
the typical Productivity server has 7
Tools that change things
22%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
9
more than 76% of 854 Productivity servers
Downloads a week
35
more than 22% of 427 Productivity servers with a package

What its tools let an agent do: 5 read · 2 create · 1 change · 1 delete

Install Deltat in Claude Code, Cursor or VS Code

Runs npx -y @open-deltat/mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add deltat -- npx -y @open-deltat/mcp
Add to Cursor

What the publisher says

From the Deltat repository's README, as published. We do not edit it. Read it on GitHub

TAP is the Time Allocation Protocol, an open standard for scheduling, booking, and availability: one shared way to describe time and ask "what is free, and can I claim it before someone else does?", so any app, service, or agent speaks it the same way.

This repo is TAP in practice: its typed TypeScript SDK (@open-deltat/client) and a set of demo apps (seat maps, calendars, capacity pools, recurring schedules, and hold-to-book flows with live updates). The SDK points at deltat, the database built to speak TAP, which treats availability as collision detection on the Unix-time number line. The protocol does not depend on it: any backend that implements TAP can be talked to the same way.

Install

npm install @open-deltat/client
# or: bun add @open-deltat/client

SDK

@open-deltat/client is a typed interface to deltat:

  • Resources - hierarchical create / update / delete / get
  • Rules - batch create(items[]), update, delete, get
  • Bookings - batch create(items[]), cancel, get with an optional {start, end} window
  • Holds - place, commit (atomic hold-to-booking conversion), release, get with an optional {start, end} window
  • Availability - single-resource and combined multi-resource queries
  • Events - real-time LISTEN/NOTIFY subscriptions
  • expandRecurrence() - turn a recurring pattern (days of week, time range, date range, exclusions) into concrete rule segments, DST-safe in an explicit IANA timeZone (default UTC)
import { DeltaT, expandRecurrence } from "@open-deltat/client";

const dt = new DeltaT({ host: "localhost", port: 5433 });

const room = await dt.resources.create({ name: "Room A" });

// Open weekdays 9 to 5 for the first quarter, as concrete rules. Wall-clock times are
// interpreted in the given IANA timeZone (default "UTC") and stay correct across DST.
const segments = expandRecurrence({
  daysOfWeek: [1, 2, 3, 4, 5],
  startTime: "09:00",
  endTime: "17:00",
  fromDate: "2025-01-01",
  toDate: "2025-03-31",
  timeZone: "Europe/Berlin",
});
await dt.rules.create(segments.map((s) => ({ resourceId: room.id, ...s })));

const slots = await dt.availability.get({
  resourceId: room.id,
  start: Date.now(),
  end: Date.now() + 86_400_000,
});

deltat's current transport is the PostgreSQL wire protocol, a transitional choice. A v2 framed protocol with HTTP and MCP adapters is planned (see deltat's docs/REQUIREMENTS.md, PROTO-01/02). The typed API above is built to outlast that swap.

CLI

@open-deltat/cli puts the same booking loop in a terminal, for people and for agents that have a shell. deltat-cli watch --json prints one line per change as it happens, so an agent can react to a time being held, booked or freed. See packages/cli.

npm install -g @open-deltat/cli
deltat-cli find <calendar> --from 2026-10-01T09:00:00+02:00 --to 2026-10-01T18:00:00+02:00

Demos

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Deltat: common questions

Is Deltat MCP server safe?
Mostly: it is graded B (82/100). Read the Deltat safety report
How do I install Deltat?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Deltat need an API key?
Yes. The registry entry asks for DELTAT_PASSWORD.
Is Deltat maintained?
The last commit was 31 days ago (2026-10-04). The latest release is v0.2.0.
What can I use instead of Deltat?
Servers from other publishers that do the same job: Agent-Native Calendar MCP server, AIquila — Nextcloud MCP Server and Intervals Icu MCP server.
How does Deltat compare with other Productivity MCP servers?
safety score 82/100 (higher than 58% of 1,299 Productivity servers); tools 9 (the typical Productivity server has 7); tools that change things 22% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Deltat

Same job from other publishers: the closest match first, then the best rated.

  • Agent-Native Calendar
    Agent-Native Google Calendar - manage events, sync, and public booking
    A
  • AIquila — Nextcloud MCP Server
    Nextcloud MCP server — 345 tools: files, calendar, contacts, mail, Talk, Deck, photos, maps, notes
    C
  • Intervals Icu
    Read/write Intervals.icu MCP server: activities, wellness, calendar, gear, and workouts.
    B
  • iCloud MCP
    Apple Mail, Calendar, Contacts, Reminders, Notes, Messages and Safari via AppleScript or iCloud
    B
  • Mu
    News, web search, mail, markets, weather, places, files, calendar, contacts. 67 tools, one endpoint.
    B