# Send PortEden - secured calendar(Gmail, Outlook, Exchange) access for OpenClaw to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "porteden-calendar",
    "name": "PortEden - secured calendar(Gmail, Outlook, Exchange) access for OpenClaw",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/porteden/porteden-calendar",
    "canonicalUrl": "https://clawhub.ai/porteden/porteden-calendar",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/porteden-calendar",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=porteden-calendar",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/porteden-calendar"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/porteden-calendar",
    "downloadUrl": "https://openagent3.xyz/downloads/porteden-calendar",
    "agentUrl": "https://openagent3.xyz/skills/porteden-calendar/agent",
    "manifestUrl": "https://openagent3.xyz/skills/porteden-calendar/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/porteden-calendar/agent.md"
  }
}
```
## Documentation

### porteden

Use porteden for calendar management across multiple accounts. Use -jc flags for AI-optimized output.

If porteden is not installed: brew install porteden/tap/porteden (or go install github.com/porteden/cli/cmd/porteden@latest).

Setup (once)

Browser login (recommended): porteden auth login — opens browser, credentials stored in system keyring
Direct token: porteden auth login --token <key> — stored in system keyring
Verify: porteden auth status
If PE_API_KEY is set in the environment, the CLI uses it automatically (no login needed).

Common commands

List calendars: porteden calendar calendars -jc
Events today (or --tomorrow, --week): porteden calendar events --today -jc
Events custom range: porteden calendar events --from 2026-02-01 --to 2026-02-07 -jc
All events (auto-pagination): porteden calendar events --week --all -jc
Search events: porteden calendar events -q "meeting" --today -jc
Events by contact: porteden calendar by-contact "user@example.com" -jc (or --name "John Smith")
Get single event: porteden calendar event <eventId> -jc
Create event: porteden calendar create --calendar <id> --summary "Meeting" --from "..." --to "..." --location "Room A" --attendees "a@b.com,c@d.com"
Update event: porteden calendar update <eventId> --summary "New Title" (also: --from, --to, --location)
Update attendees: porteden calendar update <eventId> --add-attendees "new@example.com" (or --remove-attendees; add --notify to send notifications)
Delete event: porteden calendar delete <eventId> (add --no-notify to skip attendee notifications)
Respond to invite: porteden calendar respond <eventId> accepted (or: declined, tentative)

Event Status Values

confirmed - Accepted/scheduled
tentative - Maybe attending
needsAction - Requires response from user
cancelled - Event was cancelled

Time Formats

All times use RFC3339 UTC format: 2026-02-01T10:00:00Z
For all-day events, use midnight-to-midnight with --all-day flag
JSON output includes startUtc, endUtc, durationMinutes fields

Notes

Credentials persist in the system keyring after login. No repeated auth needed.
Set PE_PROFILE=work to avoid repeating --profile.
-jc is shorthand for --json --compact: filters noise, truncates descriptions, limits attendees, reduces tokens.
Use --all to auto-fetch all pages; check meta.hasMore and meta.totalCount in JSON output.
Manual pagination: --limit 100 --offset 0, then --offset 100, etc.
by-contact supports partial matching: "@acme.com" for email domain, --name "Smith" for name.
Confirm before creating, updating, or deleting events.
"invalid calendar ID": Get IDs with porteden calendar calendars -jc.
Environment variables: PE_API_KEY, PE_PROFILE, PE_TIMEZONE, PE_FORMAT, PE_COLOR, PE_VERBOSE.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: porteden
- Version: 1.0.3
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/porteden-calendar)
- [Send to Agent page](https://openagent3.xyz/skills/porteden-calendar/agent)
- [JSON manifest](https://openagent3.xyz/skills/porteden-calendar/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/porteden-calendar/agent.md)
- [Download page](https://openagent3.xyz/downloads/porteden-calendar)