{"name":"io.github.open-deltat/deltat","slug":"open-deltat-deltat","title":null,"description":"Give an agent a calendar it can book without double-booking: find, hold, then commit atomically.","url":"https://mcp.market/server/open-deltat-deltat","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"productivity","tags":["productivity","ai"],"presence":{"score":35,"stars":9,"forks":0,"downloads_week":35,"last_push_at":"2026-10-04T17:24:04.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/open-deltat/tap","website":"https://delt.at","version":"0.2.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@open-deltat/mcp","version":"0.2.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Password for the deltat server. Required; there is no default.","isRequired":true,"isSecret":true,"name":"DELTAT_PASSWORD"},{"description":"Hostname of the deltat server.","default":"localhost","name":"DELTAT_HOST"},{"description":"Port deltat listens on.","default":"5433","name":"DELTAT_PORT"},{"description":"Tenant to connect to. Each database name is an isolated tenant.","default":"public","name":"DELTAT_DATABASE"},{"description":"Username presented at connect time.","default":"user","name":"DELTAT_USER"},{"description":"on to encrypt the connection and verify deltat's certificate. Unset means off unless DELTAT_TLS_CA is set; without TLS the password is sent in the clear, so use it for any deltat that is not on this machine.","name":"DELTAT_TLS"},{"description":"Path to a PEM certificate to trust instead of the system's authorities, for a deltat with a self-signed certificate. Implies DELTAT_TLS=on.","name":"DELTAT_TLS_CA"}]}],"tools":[{"name":"book_slot","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"cancel_booking","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"commit_hold","description":"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","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_calendar","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"find_slots","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"hold_slot","description":"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 ","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_bookings","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"release_hold","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_availability","description":"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.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-10-14T12:22:59.010Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-14T12:22:58.908Z","components":{"code":{"score":25,"max":25,"notes":["12 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 10 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@open-deltat/mcp","version":"0.2.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-10-04T13:12:28.906Z","repositoryUrl":"git+https://github.com/open-deltat/tap.git","weeklyDownloads":35}],"repo":{"found":true,"owner":"open-deltat","repo":"tap","archived":false,"pushedAt":"2026-10-04T17:24:04Z","stars":9,"forks":0,"openIssues":9,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/248719935?v=4","ownerCreatedAt":"2025-12-09T16:10:17Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/248719935?v=4&s=128","source":"github"},"presence":{"stars":9,"forks":0,"downloadsWeek":35,"license":"MIT","lastPushAt":"2026-10-04T17:24:04.000Z","score":35}}}},"grade_history":[],"reviews":[]}