Calendar infrastructure for AI agents
Chronary is a calendar for AI agents: create calendars, manage events, query availability, and sync with human calendar apps, all through a simple REST API and MCP server.
Free Pro tier until our public launch. No credit card.
# 1. Create an event on an agent's calendarcurl -X POST https://api.chronary.ai/v1/calendars/cal_a1b2c3d4/events \ -H "Authorization: Bearer chr_sk_..." \ -d '{"title": "Standup", "start_time": "2026-04-10T09:00:00Z"}'# → 201 Created. iCal feed updated, webhook fan-out fires.
# 2. Find a 30-minute slot across three agentscurl "https://api.chronary.ai/v1/availability?duration=30\&agent_ids=agt_alice,agt_bob,agt_carol" \ -H "Authorization: Bearer chr_sk_..."# → [{"start":"2026-04-10T14:00:00Z","end":"2026-04-10T14:30:00Z"},# {"start":"2026-04-10T16:30:00Z","end":"2026-04-10T17:00:00Z"}]import { Chronary } from '@chronary/sdk';const chronary = new Chronary({ apiKey: 'chr_sk_...' });
// 1. Create an event on an agent's calendarconst event = await chronary.events.create('cal_a1b2c3d4', { title: 'Standup', start_time: '2026-04-10T09:00:00Z', end_time: '2026-04-10T09:30:00Z',});// → { id: 'evt_...', ... } iCal feed + webhooks fire.
// 2. Find a 30-minute slot across three agentsconst { slots } = await chronary.availability.check({ agents: ['agt_alice', 'agt_bob', 'agt_carol'], start: '2026-04-10T00:00:00Z', end: '2026-04-11T00:00:00Z', slot_duration: { minutes: 30 },});// → [{ start: '2026-04-10T14:00:00Z', end: '...' }, ...]from chronary import Chronarychronary = Chronary(api_key="chr_sk_...")
# 1. Create an event on an agent's calendarevent = chronary.events.create( "cal_a1b2c3d4", title="Standup", start_time="2026-04-10T09:00:00Z", end_time="2026-04-10T09:30:00Z",)# → Event(id="evt_...", ...) iCal feed + webhooks fire.
# 2. Find a 30-minute slot across three agentsresult = chronary.availability.check( agents=["agt_alice", "agt_bob", "agt_carol"], start="2026-04-10T00:00:00Z", end="2026-04-11T00:00:00Z", slot_duration={"minutes": 30},)# → [{"start": "2026-04-10T14:00:00Z", ...}, ...]Built for the agent ecosystem
Works with any LLM framework. No SDK lock-in.
Features
Everything your agents need to manage time
A complete AI agent calendar and scheduling API — drive it over REST, the native SDKs, or the Chronary calendar MCP server. No human UI, no Google OAuth.
Scheduling Proposals
Negotiate meetings between multiple agents. Each agent responds with availability; the proposal resolves into events on every calendar.
POST /v1/scheduling/proposals → each agent responds → resolves into N events
Temporal Holds
Reserve a slot, then confirm or release within a window. Built for the 'agent A is checking 3 calendars before committing' pattern.
PUT /v1/events/:id/confirm PUT /v1/events/:id/release
Cross-Agent Availability
Find when N agents are free at once. Intersection algorithm across any number of calendars.
GET /v1/availability ?agent_ids=agt_a,agt_b,agt_c
Calendar & Event API
Full CRUD with arbitrary JSON metadata. Each calendar gets an iCal feed URL. Subscribe to external Google, Apple, or Outlook calendars too.
POST /v1/calendars/:id/events
{ "title": "Standup", "start_time": "..." } Webhook Events
18 event types covering agent, event, hold, proposal, and webhook lifecycle. HMAC-SHA256 signed.
x-chronary-signature: t=...,v1=...
{ "type": "event.created", "data": {...} } First-Class Agents
Agents are entities, not service accounts. Per-agent IDs, audit trails, and rate limits. Pro: dedicated API key per agent so each customer integration uses its own credential. Leaked keys revoke a single tenant, not the whole org.
POST /v1/agents → agt_xxx (with audit trail + per-agent key)
MCP Server
23 tools for Claude, GPT, and any MCP-compatible agent. stdio + HTTP transports.
npx @chronary/mcp → 23 tools registered with the host
Framework Adapters
Drop Chronary tools into the framework you already use: Vercel AI SDK, OpenAI SDK, LangChain, or Mastra. One package, same tool surface across all of them.
import { ChronaryToolkit } from '@chronary/toolkit/ai-sdk'
generateText({ tools: toolkit.getTools(), ... }) Native SDKs
TypeScript, Python, and Go SDKs plus a CLI. Versioned packages with typed responses and full surface coverage.
npm i @chronary/sdk pip install chronary go get github.com/chronary/go-sdk
Simple integration
Create an event in 5 lines
curl -X POST https://api.chronary.ai/v1/calendars/cal_a1b2c3d4/events \ -H "Authorization: Bearer chr_sk_..." \ -H "Content-Type: application/json" \ -d '{ "title": "Code review with Agent B", "start_time": "2026-04-10T14:00:00Z", "end_time": "2026-04-10T14:30:00Z", "metadata": { "priority": "high", "workflow_id": "wf_review_42" } }'import { Chronary } from '@chronary/sdk';
const chronary = new Chronary({ apiKey: process.env.CHRONARY_API_KEY! });
const event = await chronary.events.create('cal_a1b2c3d4', { title: 'Code review with Agent B', start_time: '2026-04-10T14:00:00Z', end_time: '2026-04-10T14:30:00Z', metadata: { priority: 'high', workflow_id: 'wf_review_42' },});
console.log(event.id); // "evt_x9y8z7w6"import osfrom chronary import Chronary
chronary = Chronary(api_key=os.environ["CHRONARY_API_KEY"])
event = chronary.events.create( calendar_id="cal_a1b2c3d4", title="Code review with Agent B", start_time="2026-04-10T14:00:00Z", end_time="2026-04-10T14:30:00Z", metadata={"priority": "high", "workflow_id": "wf_review_42"},)
print(event.id) # "evt_x9y8z7w6"Getting started
How it works
Sign up & get your API key
No credit card. API keys generated instantly.
Create a calendar and add events
One POST request. Full CRUD, metadata, timezone-aware.
See it on your phone
Every calendar gets an iCal feed URL. Subscribe in Google, Apple, or Outlook.
For agents
Or have your agent sign itself up
No console, no human in the loop. An agent provisions its own org, verifies an email OTP, and runs on the same Free tier as any developer signup.
Agent posts to /v1/agent/sign-up
Email + agent name + accepted ToS version. Returns an API key on the sandbox tier; a 6-digit OTP is sent to the email.
Try it on the sandbox tier
Create up to 10 events, register 1 webhook, subscribe via iCal. Real responses, real fan-out, enough to evaluate the API end-to-end before verifying.
Verify to unlock the Free tier
POST the OTP to /v1/agent/verify with the same key. Caps jump 50-250x, 2,500 events/mo, 50K API calls, 5K webhook deliveries.
# Step 1: Agent self-signup (unauthenticated)curl -X POST https://api.chronary.ai/v1/agent/sign-up \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "agent_name": "Alice Bot", "tos_version": "2026-04-17" }'
# → 200 OK# {# "org_id": "org_abc123",# "agent_id": "agt_abc123",# "api_key": "chr_sk_restricted_...",# "message": "Verification code sent to email"# }
# Step 2: Verify the OTP with the restricted keycurl -X POST https://api.chronary.ai/v1/agent/verify \ -H "Authorization: Bearer chr_sk_restricted_..." \ -H "Content-Type: application/json" \ -d '{"otp": "123456"}'
# → 200 OK { "verified": true } # same key, full Free-tier accessimport { Chronary, isAgentSignUpNewOrg } from '@chronary/sdk';
// Step 1: unauthenticated sign-upconst bootstrap = new Chronary();const signup = await bootstrap.agentAuth.signUp({ agent_name: 'Alice Bot', tos_version: '2026-04-17',});
if (isAgentSignUpNewOrg(signup)) { // Step 2: verify with the restricted key from the response const client = new Chronary({ apiKey: signup.api_key }); await client.agentAuth.verify({ otp: await readOtpFromInbox() });
// Step 3: same client now has full Free-tier access await client.calendars.create({ name: 'Alice ops' });}from chronary import Chronary
# Step 1: unauthenticated sign-upbootstrap = Chronary(api_key=None)signup = bootstrap.agent_auth.sign_up( agent_name="Alice Bot", tos_version="2026-04-17",)
if signup.is_new_org: # Step 2: verify with the restricted key from the response client = Chronary(api_key=signup.api_key) client.agent_auth.verify(otp=read_otp_from_inbox())
# Step 3: same client now has full Free-tier access client.calendars.create(name="Alice ops")Sandbox tier, pre-verification
Real calls, small budget
Enough to wire the API end-to-end and watch a webhook fire, not enough to run production. Once you hit a cap, verify your email to unlock the Free tier.
- Calendars
- 1
- Events
- 10/mo
- Webhook endpoints
- 1
- Webhook deliveries
- 25/mo
- iCal subscriptions
- 1
- Availability queries
- 50/mo
- API calls
- 1,000/mo
After OTP verification
Free tier, identical to developer signup
The same key gains full write access. Every cap below is the same number we enforce on a Free-tier developer signup, no discount, no penalty for self-signing-up.
- Calendars
- 10
- Events
- 2,500/mo
- Webhook endpoints
- 3
- Webhook deliveries
- 5,000/mo
- iCal subscriptions
- 5
- Availability queries
- 10,000/mo
- API calls
- 50,000/mo
Full contract: docs.chronary.ai/api-reference/agent
For agents · zero context
Three one-liners to bootstrap an agent
Discovery primitives at the root domain let a cold AI coding agent find Chronary, install skills, point an MCP client at the hosted server, and provision its own API key, without human hand-holding.
1 · Install skills
IDE skill packs
# Install Chronary skill packs into your IDE# targets: claude-code | cursor | windsurf | vscode | codex | allcurl -sSfL https://chronary.ai/skills.sh | bash2 · Wire MCP
MCP client config
# Claude Desktop / Cursor / Windsurf, claude_desktop_config.json{ "mcpServers": { "chronary": { "command": "npx", "args": ["-y", "@chronary/mcp@latest"], "env": { "CHRONARY_API_KEY": "chr_sk_..." } } }}3 · Bootstrap key
agent-init
# One-liner that signs up an agent, captures the OTP, verifies,# and creates a smoke calendar, exits with $CHRONARY_API_KEY set.npx @chronary/agent-init@latest
# Or shell fallback (no Node required):curl -sSfL https://chronary.ai/agent-init.sh | shMachine-readable entry points
Pricing
Start free. Scale as you grow.
Free
For prototyping and small agents
- 3 agents
- 10 calendars
- 50K API calls/mo
Pro
For production agent workflows
- 50 agents
- 250 calendars
- 1M API calls/mo
Custom
For multi-agent platforms and enterprise
- Custom volume limits
- Custom rate limits and webhook retries
- Custom audit log retention
Start building in 5 minutes
No credit card required. Free tier includes 3 agents, 10 calendars, and 50K API calls.
Get early access