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…