AgentCal
[ DOCS ]
build

The scheduling API your AI agent should have been using all along.

REST, MCP, SDKs in TypeScript and Python, and a CLI. Idempotent, signed webhooks, OpenAPI spec — built to feel like Stripe for time.

endpoints

REST API at a glance.

Discovery

GET/v1/agent-manifestcapability discovery for AI clients
GET/v1/accountcurrent account

Policies

GET/v1/policieslist policies
POST/v1/policiescreate a policy
POST/v1/policies/:id/activatemake this the active policy

Event types

GET/v1/event-typeslist event types
POST/v1/event-typescreate one
PATCH/v1/event-types/:slugupdate
DELETE/v1/event-types/:slugdelete

Availability

GET/v1/availabilitycomputed slots — pass event_type, from, to, audience

Booking links

POST/v1/booking-linkscreate scoped, expiring, audience-aware link
GET/v1/booking-links/:idfetch one
DELETE/v1/booking-links/:idrevoke

Bookings

GET/v1/bookingslist
POST/v1/bookingscreate directly (skip the link)
POST/v1/bookings/:id/reschedulereschedule
POST/v1/bookings/:id/cancelcancel
GET/v1/bookings/:id/icsdownload .ics

Agent

POST/v1/agent/messagesnatural-language command → actions taken

Webhooks

POST/v1/webhookssubscribe
DELETE/v1/webhooks/:idunsubscribe
sdks

Pick your language.

TypeScriptv0.1
npm install agentcal
import { AgentCal } from "agentcal";
const cal = new AgentCal();
await cal.bookingLinks.create({ audience: "investor" });
Pythonv0.1
pip install agentcal
from agentcal import AgentCal
cal = AgentCal()
cal.booking_links.create(audience="investor")
CLIv0.1
npm i -g @agentcal/cli
agentcal links create --audience investor
MCP serverv0.1
npx -y @agentcal/mcp
# add to Claude Desktop config.
{ "mcpServers": { "agentcal": { "url": "https://mcp.agentcal.co/sse" } } }
mcp tools

What your agent gets.

Connect AgentCal as an MCP server in Claude Desktop, your custom agent, or any MCP-compatible client. Fourteen typed tools. Zod-validated I/O. Streaming subscriptions.

{
  "mcpServers": {
    "agentcal": {
      "url": "https://mcp.agentcal.co/sse",
      "auth": { "type": "oauth" }
    }
  }
}
list_event_typeswhat is bookable
get_availabilitycompute slots given range + audience
list_booking_linksactive links the agent or human created
create_booking_linkscoped, expiring, audience-aware
update_booking_linkextend, restrict, revise
revoke_booking_linkkill it before expiry
create_bookingskip the link, just book
reschedule_bookingwith conflict detection
cancel_bookingwith reason; emails attendee
update_policynatural language: 'protect mornings'
set_active_policyswitch modes (Investor, Travel…)
explainwhy is this slot taken? trace the rule chain
undoreverse any agent write within audit window
subscribeSSE stream of bookings, links, policy changes
use cases

Built for autonomous agents.

Sales agents

Auto-generate investor links after a discovery call. Reschedule when follow-ups land in the inbox.

Recruiting agents

Send candidate-specific links with the right hiring panel and audience-aware policies.

Executive assistants

Conversational policy editing. 'Protect mornings. Only investors on Friday.' Done.

Customer support

Emergency support links that expire in 24h. High-priority audiences with after-hours access.

quickstart

First booking in 5 minutes.

  1. 01
    Get an API key
    Sign up, run agentcal init in your shell. We write .env for you.
  2. 02
    List events
    GET /v1/event-types returns your default 30-min intro call.
  3. 03
    Check availability
    GET /v1/availability?event_type=intro-call&from=…&to=…
  4. 04
    Book a slot
    POST /v1/bookings with start, attendee.email, attendee.name.
  5. 05
    Confirm
    Response gives you meeting_url + ics_url. Send to your booker. Done.
# 1. get a key
agentcal init

# 2-3. check availability
curl https://agentcal.co/api/v1/availability \
  -H "Authorization: Bearer ack_live_…" \
  -G \
  -d event_type=intro-call \
  -d from=2026-06-01 \
  -d to=2026-06-07

# 4. book the first available slot
curl https://agentcal.co/api/v1/bookings \
  -H "Authorization: Bearer ack_live_…" \
  -H "Content-Type: application/json" \
  -d '{
        "event_type": "intro-call",
        "start": "2026-06-02T14:00:00Z",
        "attendee": { "name": "Jane", "email": "jane@x.co" }
      }'
webhooks

Eight events. HMAC-signed. Retried with backoff.

booking.confirmed
booking.cancelled
booking.rescheduled
booking_link.created
booking_link.expired
booking_link.exhausted
policy.changed
agent.action_taken

Get a key. Ship today.