Skip to content
Back to skills

Agentmeet

ASecurity

Agent-to-agent meeting coordination over email. Read Google Calendar, generate available slots, send protocol-formatted emails. Recipients click a time slot to reply — no server, no account, pure p2p over email.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 9, 2026
devopstypescriptgoshellbashgitapi

Works with

  • cli
  • api
  • mcp

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add Lord1Egypt/awesome-skill-forge --skill agentmeet --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agentmeet?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agentmeet
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lord1egypt-agentmeet/badge)](https://www.skillsdirectory.com/skills/lord1egypt-agentmeet)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agentmeet
description: Agent-to-agent meeting coordination over email. Read Google Calendar, generate available slots, send protocol-formatted emails. Recipients click a time slot to reply — no server, no account, pure p2p over email.
homepage: https://github.com/agentmeet/agentmeet
metadata: {"clawdbot":{"emoji":"📅","os":["darwin","linux"],"requires":{"bins":["bun"]},"install":[{"id":"bun","kind":"shell","command":"cd ~/Dropbox/Dev/agentmeet && bun install","label":"Install agentmeet dependencies via Bun"}]}}
---

# 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

1. Agent reads user's Google Calendar -> generates available slots
2. Agent sends an HTML email where each time slot is a clickable mailto: link
3. Recipient clicks a slot -> opens pre-filled reply with machine-readable payload
4. 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

```bash
cd ~/Dropbox/Dev/agentmeet && npm install
```

Requires Google Calendar and Gmail access (OAuth or MCP).

## Usage

### Send a meeting invite

```bash
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

```typescript
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

```typescript
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 `<!-- agentmeet/v1`.

Payload format:
```html
<!-- 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):

```yaml
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.