Metadata-Version: 2.4
Name: agents-calendar
Version: 0.0.1
Summary: CalDAV calendar feeler for agents (CLI + MCP). Stdlib HTTP, no caldav/icalendar libs.
Author: Lolaplex
License-Expression: MIT
Project-URL: Homepage, https://github.com/Lolaplex/agents-calendar
Project-URL: Repository, https://github.com/Lolaplex/agents-calendar
Project-URL: Bug Tracker, https://github.com/Lolaplex/agents-calendar/issues
Keywords: caldav,calendar,mcp,agents,cli
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp<2,>=1.0.0
Dynamic: license-file

# agents-calendar

CalDAV calendar feeler for AI agents. CLI and MCP. Python stdlib HTTP plus `mcp`. No `caldav` / `icalendar` libraries.

Cursor (MCP) and Klanker (Cordis `call_job`) share this CLI.

```bash
pip install -e .
python -m agents_calendar --help-json
python -m agents_calendar list --from 2026-09-13T00:00:00Z --to 2026-09-14T00:00:00Z
python -m agents_calendar sync --init
```

MCP: `sync --init` (or `init`) merges `mcpServers.agents-calendar` into installed host configs. Merge by key only; other servers stay. Manual copy of `mcp.json.example` still works.

## Credentials

Write `~/.agents/calendar.json` (mode `0600`, never commit). Example: `calendar.json.example`.

```json
{
  "url": "https://example/dav/calendars/user/calendar/",
  "username": "user",
  "password": "app-password"
}
```

CLI and MCP both read this file, so Cursor MCP works without `mcp.json` `env` and without launching Cursor from a shell.

Load order (highest wins): process env `CALDAV_URL` / `CALDAV_USERNAME` / `CALDAV_PASSWORD`, else the JSON file, else `~/.agents/.env` with the same `CALDAV_*` keys. Optional `mcp.json` `"env"` still works because process env wins. `sync --init` never writes secrets into mcp.json.

Where to type the three values:

- Desktop / Cursor MCP: `~/.agents/calendar.json` (mode `0600`). File is primary so Cursor GUI works without inheriting a PowerShell session. `mcp.json` `env` is optional.
- VPS / Klanker serve / Coolify container: Coolify env `CALDAV_URL`, `CALDAV_USERNAME`, `CALDAV_PASSWORD`. Never git, never chat. Process env wins over the host file.

Tests: `python -m unittest discover tests`
