/install agentmeet
AgentMeet — Agent-to-Agent Meeting Coordination
An open protocol for AI agents to coordinate meetings over email. No server. No domain. No account. Pure p2p.
How It Works
- Agent reads user's Google Calendar -> generates available slots
- Agent sends an HTML email where each time slot is a clickable mailto: link
- Recipient clicks a slot -> opens pre-filled reply with machine-readable payload
- Sender's agent detects the reply -> creates calendar events for both parties
Every invite email also includes an "Add AgentMeet" link for viral adoption.
Setup
cd ~/Dropbox/Dev/agentmeet && npm install
Requires Google Calendar and Gmail access (OAuth or MCP).
Usage
Send a meeting invite
bun run -e '
import { buildInvite } from "~/Dropbox/Dev/agentmeet/src/invite";
import { writeFileSync } from "fs";
const result = await buildInvite({
from: { name: "YOUR_NAME", email: "YOUR_EMAIL" },
to: "RECIPIENT_EMAIL",
meeting: {
title: "Meeting Title",
duration_minutes: 30,
notes: "Optional description",
},
slots: [
{ start: "2026-03-25T10:00:00+08:00", end: "2026-03-25T10:30:00+08:00" },
],
});
// result.subject = email subject line
// result.html = email body (HTML with embedded protocol payload)
// Send via Gmail API or any email service
'
Parse an incoming agentmeet email
import { parseAgentMeetEmail, isAgentMeetSubject } from "agentmeet";
// Check subject line
if (isAgentMeetSubject(emailSubject)) {
const payload = parseAgentMeetEmail(emailHtmlBody);
if (payload) {
console.log(payload.type); // INVITE | COUNTER | SELECT | CONFIRM
console.log(payload.request_id); // am_xxx
console.log(payload.selected_slots); // for SELECT type
}
}
Generate available slots from calendar
import { getBusyPeriods, generateAvailableSlots, DEFAULT_PREFERENCES } from "agentmeet";
const busy = await getBusyPeriods(oauth2Client, startISO, endISO);
const slots = generateAvailableSlots(busy, startDate, endDate, 30, DEFAULT_PREFERENCES);
Protocol
Four message types, embedded as HTML comments in email body:
| Type | Direction | Purpose |
|---|---|---|
| INVITE | A -> B | Sender's available slots |
| COUNTER | B -> A | Recipient's alternative slots |
| SELECT | B -> A | Recipient picks one or more slots |
| CONFIRM | A -> B | Calendar events created |
Detection: subject starts with [AgentMeet], body contains \x3C!-- agentmeet/v1.
Payload format:
\x3C!-- agentmeet/v1
{
"protocol": "agentmeet",
"version": "0.1",
"type": "SELECT",
"request_id": "am_abc123",
"selected_slots": [{ "start": "ISO8601", "end": "ISO8601" }]
}
-->
Multi-Party Scheduling
Send INVITE to multiple recipients. Each responds with their available slots. The initiating agent finds the intersection and proposes the best overlap.
Email Format
Each slot in the invite email is a mailto: link. Clicking it opens a pre-filled reply email with the SELECT payload. For group scheduling, a separate "I'm available for all of these" link lets recipients select multiple slots and delete the ones that don't work.
Configuration
Default preferences (override per-invite):
working_hours:
start: "09:00"
end: "18:00"
timezone: "Asia/Taipei"
buffer_minutes: 15
max_slots_to_share: 5
blocked_days: ["saturday", "sunday"]
Source
Protocol spec: PROTOCOL.md
Implementation: src/ (TypeScript)
License: Apache-2.0
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install agentmeet - 安装完成后,直接呼叫该 Skill 的名称或使用
/agentmeet触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
AgentMeet 是什么?
Agent-to-agent meeting coordination over email. Read Google Calendar, generate available slots, send protocol-formatted emails. Recipients click a time slot... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 127 次。
如何安装 AgentMeet?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install agentmeet」即可一键安装,无需额外配置。
AgentMeet 是免费的吗?
是的,AgentMeet 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
AgentMeet 支持哪些平台?
AgentMeet 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(darwin, linux)。
谁开发了 AgentMeet?
由 lmanchu(@lmanchu)开发并维护,当前版本 v0.1.0。