nostrcalendar

Nostr-native scheduling — manage availability, book meetings, negotiate times over relay

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "nostrcalendar" with this command: npx skills add vveerrgg/nostrcalendar

NostrCalendar — Sovereign Scheduling for AI Agents

Give your AI agent the ability to manage calendars, publish availability, accept bookings, and negotiate meeting times — all over Nostr relays with no centralized server.

Install

pip install nostrcalendar

Core Capabilities

1. Publish Availability

Set your human's available hours. Stored as a replaceable Nostr event on their relay.

from nostrcal import AvailabilityRule, DayOfWeek, TimeSlot, publish_availability
from nostrkey import Identity

identity = Identity.from_nsec("nsec1...")
rule = AvailabilityRule(
    slots={
        DayOfWeek.MONDAY: [TimeSlot("09:00", "12:00"), TimeSlot("14:00", "17:00")],
        DayOfWeek.WEDNESDAY: [TimeSlot("10:00", "16:00")],
        DayOfWeek.FRIDAY: [TimeSlot("09:00", "12:00")],
    },
    slot_duration_minutes=30,
    buffer_minutes=15,
    max_per_day=6,
    timezone="America/Vancouver",
    title="Book a call with Vergel",
)

event_id = await publish_availability(identity, rule, "wss://relay.nostrkeep.com")

2. Check Free Slots

Query available time slots for any user on any date.

from nostrcal import get_free_slots
from datetime import datetime

slots = await get_free_slots(
    pubkey_hex="abc123...",
    relay_url="wss://relay.nostrkeep.com",
    date=datetime(2026, 3, 15),
)
for slot in slots:
    print(f"{slot.start} - {slot.end}")

3. Create a Booking

Send a booking request as an encrypted DM to the calendar owner.

from nostrcal import create_booking

event_id = await create_booking(
    identity=agent_identity,
    calendar_owner_pubkey="abc123...",
    start=1742054400,
    end=1742056200,
    title="Product sync",
    message="Let's review the Q1 roadmap",
    relay_url="wss://relay.nostrkeep.com",
)

4. Accept or Decline Bookings

from nostrcal import accept_booking, decline_booking

# Accept — publishes a calendar event + sends confirmation DM
cal_id, dm_id = await accept_booking(identity, request, relay_url)

# Decline — sends a decline DM with reason
dm_id = await decline_booking(identity, request, "Conflict with another meeting", relay_url)

5. Agent-to-Agent Negotiation

Two AI agents find mutual availability and agree on a time — no humans needed.

from nostrcal import find_mutual_availability, propose_times
from datetime import datetime, timedelta

# Find overlapping free slots
dates = [datetime(2026, 3, d) for d in range(15, 20)]
mutual = await find_mutual_availability(my_agent, other_pubkey, relay_url, dates)

# Or send a proposal with available times
await propose_times(my_agent, other_pubkey, relay_url, dates, title="Collab sync")

When to Use Each Module

TaskModuleFunction
Set available hoursavailabilitypublish_availability
Check someone's openingsavailabilityget_free_slots
Request a meetingbookingcreate_booking
Confirm a meetingbookingaccept_booking
Decline a meetingbookingdecline_booking
Cancel a meetingbookingcancel_event
RSVP to an eventbookingsend_rsvp
Find mutual free timenegotiatefind_mutual_availability
Propose times to another agentnegotiatepropose_times
Respond to a proposalnegotiaterespond_to_proposal

Nostr NIPs Used

NIPPurpose
NIP-01Basic event structure and relay protocol
NIP-04Encrypted direct messages (booking requests)
NIP-09Event deletion (cancellations)
NIP-52Calendar events (kind 31923) and RSVPs (kind 31925)
NIP-78App-specific data (kind 30078 for availability rules)

Important Notes

  • All times are UTC unless a timezone is specified in the AvailabilityRule
  • Booking requests are encrypted — only the calendar owner can read them
  • Calendar events are public — anyone on the relay can see your schedule
  • The agent needs its own Nostr keypair (mutual recognition principle)
  • Depends on nostrkey for all cryptographic operations

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Leads

Leads - command-line tool for everyday use

Registry SourceRecently Updated
General

Bmi Calculator

BMI计算器。BMI计算、理想体重、健康计划、体重追踪、儿童BMI、结果解读。BMI calculator with ideal weight, health plan. BMI、体重、健康。

Registry SourceRecently Updated
General

Blood

Blood — a fast health & wellness tool. Log anything, find it later, export when needed.

Registry SourceRecently Updated
General

Better Genshin Impact

📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 - UI A better genshin impact, c#, auto-play-game, automatic, g...

Registry SourceRecently Updated