Calendar Infrastructure for AI Agents

Give every agent
its own calendar.

AgentCal is an API-first calendar platform built for the agentic era. No OAuth nightmares. No per-seat caps. One API call creates a calendar. Scale to thousands.

quickstart.py
from agentcal import AgentCal

client = AgentCal(api_key="ac_...")

# One call. One calendar identity.
calendar = client.calendars.create(
    name="Fleet Coordinator",
    timezone="America/New_York"
)

# Schedule with a prompt payload
client.calendars.events.create(
    calendar.calendar_id,
    summary="Daily health check",
    start="2026-03-12T09:00:00-05:00",
    end="2026-03-12T09:15:00-05:00",
    recurrence=["RRULE:FREQ=DAILY"],
    prompt_payload={
        "action": "health_check",
        "targets": ["prod-01", "prod-02"],
        "on_failure": "page_oncall"
    }
)

# CalDAV + iCal included. No extra setup.
print(calendar.caldav_url)
print(calendar.ical_url)
API key auth — no OAuth
·
🗓️ CalDAV & iCal compatible
·
🤖 Agent-to-agent invites
·
🔌 MCP server built-in
·
📦 Python & TypeScript SDKs
The Problem

Traditional calendars weren't
built for agents.

Every existing calendar API was designed for a human clicking "Allow" in a browser. Your agents don't have a browser. They shouldn't need one.

Bottleneck
No API for Calendar Creation
Legacy providers have no API to create new calendar identities on demand. You're forced to bolt your agent onto a human's account.
Friction
OAuth Nightmares
Complex OAuth flows, app passwords, consent screens — designed for humans clicking buttons, not agents spinning up programmatically.
Scale Blocker
Restrictive Rate Limits
Per-user quotas, throttling, and API caps make it painful to run agents at any real scale. One fleet, a thousand rate-limit errors.
Missing Primitive
No Agent-to-Agent Scheduling
Traditional calendaring has zero concept of machine-to-machine scheduling, availability negotiation, or event-driven triggers between autonomous agents.
Features

Built for the agentic era.

Everything your agents need to own time — as first-class participants in the scheduling universe.

API-First Calendars
One API call creates one calendar identity. No OAuth, no consent screens, no per-seat licensing. Scale to thousands.
🧠
Scheduled Prompts
Attach prompt payloads to events. When an event fires, your agent gets triggered with full context. Calendar = programmable cron.
🤝
Availability Negotiation
Agents publish free/busy data and automatically negotiate meeting times with humans and other agents.
🤖
Agent-to-Agent Invites
First-class support for agent inviting agent. Accept, decline, or propose new times — all via API.
🗓️
CalDAV & iCal
Every calendar is a real CalDAV calendar with a subscribable iCal feed. Works with Google Calendar, Outlook, and Apple Calendar.
🔔
Webhooks + WebSockets
Real-time event notifications via webhooks or persistent WebSocket streams. React to event.triggered in milliseconds.
🔌
MCP Integration
Built-in MCP server at mcp.agentcal.to. Any MCP-compatible agent framework gets calendar superpowers out of the box.
🔍
Semantic Search
Search across all calendars by meaning. "Find my next meeting about Q3 planning" — it finds it.
Quickstart

From zero to scheduled
in three lines.

Install the SDK, grab an API key from the console, and you're scheduling.

Python pip install agentcal
from agentcal import AgentCal

client = AgentCal(api_key="ac_...")

# Create a calendar
calendar = client.calendars.create()

# Schedule an event
client.calendars.events.create(
    calendar.calendar_id,
    summary="Sync with engineering",
    start="2026-03-12T10:00:00-05:00",
    end="2026-03-12T11:00:00-05:00",
)

# Subscribe from any CalDAV client
print(calendar.caldav_url)
print(calendar.ical_url)
TypeScript npm install agentcal
import { AgentCal } from "agentcal";

const client = new AgentCal({ apiKey: "ac_..." });

// Create a calendar
const calendar = await client.calendars.create();

// Schedule an event
await client.calendars.events.create(
  calendar.calendarId, {
    summary: "Sync with engineering",
    start: "2026-03-12T10:00:00-05:00",
    end: "2026-03-12T11:00:00-05:00",
  }
);

// Subscribe from any CalDAV client
console.log(calendar.caldavUrl);
console.log(calendar.icalUrl);

Availability Negotiation

Find mutual availability across agents and humans in one call.

Python
# Find mutual availability across agents and humans
proposal = client.availability.negotiate(
    calendar_ids=[
        "[email protected]",
        "[email protected]",
        "[email protected]"         # works with external CalDAV too
    ],
    time_min="2026-03-12T09:00:00-05:00",
    time_max="2026-03-14T17:00:00-05:00",
    duration_minutes=30,
)

# Auto-book the best slot
best = proposal.options[0]
client.calendars.events.create(
    calendar.calendar_id,
    summary="Cross-agent sync",
    start=best.start, end=best.end,
    attendees=["[email protected]", "[email protected]"]
)
Killer Feature

Your calendar is a
programmable cron.

Attach a prompt_payload to any event. When the event fires, AgentCal sends a webhook to your agent with full context — no separate cron service, no polling, no glue code.

1

Create an event with a prompt payload

Embed any JSON into the prompt_payload field — action type, target IDs, escalation rules, context.

2

Register a webhook URL

Point AgentCal at your agent's endpoint. We handle HMAC signing, retries, and delivery guarantees.

3

Event fires at the scheduled time

AgentCal delivers an event.triggered webhook with the full event object and payload.

4

Your agent acts

No polling. No separate scheduler. Calendar is now the single source of truth for time-based agent behavior.

event.triggered — webhook payload
{
  "event_type": "event.triggered",
  "calendar_id": "cal_abc123",
  "event_id": "evt_def456",
  "event": {
    "summary": "Nightly pipeline audit",
    "start": "2026-03-14T02:00:00Z",
    "recurrence": ["RRULE:FREQ=DAILY"],
    "prompt_payload": {
      "action": "audit_pipeline",
      "pipeline_id": "etl-prod-001",
      "on_failure": "page_oncall",
      "notify_channel": "nats://fleet.alerts"
    }
  },
  "triggered_at": "2026-03-14T02:00:00.123Z"
}

Webhooks are HMAC-signed. The SDK verifies automatically. Also available via WebSocket streaming and NATS JetStream.

Integrations

Connects to everything
that speaks time.

AgentCal is built on open standards and plugs into the ecosystem you already use.

Protocol
CalDAV & iCal
Every AgentCal calendar is a standards-compliant CalDAV calendar. Subscribe from Google Calendar, Outlook, Apple Calendar, or any RFC 5545 consumer.
caldav.agentcal.to/calendars/{id}/
AI Framework
MCP Server
Built-in MCP server gives any MCP-compatible agent framework 9 calendar tools out of the box. Zero configuration required.
mcp.agentcal.to/sse
Real-time
Webhooks
8 event types including event.triggered, attendee.responded, and availability.requested. HMAC-signed, retried automatically.
POST https://your-agent/webhook
Real-time
WebSockets
Stream events in real time via persistent WebSocket connection. No polling. React to event.triggered in milliseconds.
client.calendars.events.stream()
High-throughput
NATS JetStream
For high-throughput fleets, route events directly into NATS JetStream instead of webhooks. Configurable per calendar.
agentcal.events.{calendar_id}
SDKs
Python + TypeScript
First-party SDKs for Python and TypeScript. Open source, MIT licensed. Auto-retry, HMAC verification, full type coverage.
pip install agentcal
Pricing

Usage-based.
Pay for what you use.

No per-seat fees. No arbitrary quotas. Calendars are cheap to run — pricing reflects that.

Starter
Free
forever
For solo developers and small experiments.
  • Up to 10 calendars
  • 1,000 events/month
  • Webhooks included
  • CalDAV + iCal access
  • Python + TypeScript SDKs
  • Community support
Get Started
Enterprise
Custom
volume pricing
For large-scale deployments and organizational needs.
  • Dedicated infrastructure
  • SLA guarantees
  • SSO + audit logs
  • On-premises option
  • Custom integrations
  • Dedicated support team
Contact Us
Get Started

Your agents deserve
a real calendar.

Not a workaround. Not a scratchpad cron. A first-class scheduling identity that talks to the whole world. API key in 60 seconds.

Free tier available. No credit card required to start.