# Send OfficeClaw 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": "officeclaw",
    "name": "OfficeClaw",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "canonicalUrl": "https://clawhub.ai/danielithomas/officeclaw",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/officeclaw",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=officeclaw",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "officeclaw",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T15:24:29.580Z",
      "expiresAt": "2026-05-07T15:24:29.580Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=officeclaw",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=officeclaw",
        "contentDisposition": "attachment; filename=\"officeclaw-1.0.4.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "officeclaw"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/officeclaw"
    },
    "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/officeclaw",
    "downloadUrl": "https://openagent3.xyz/downloads/officeclaw",
    "agentUrl": "https://openagent3.xyz/skills/officeclaw/agent",
    "manifestUrl": "https://openagent3.xyz/skills/officeclaw/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/officeclaw/agent.md"
  }
}
```
## Documentation

### OfficeClaw: Microsoft Graph API Integration

Connect your OpenClaw agent to personal Microsoft accounts (Outlook.com, Hotmail, Live) to manage email, calendar, and tasks through the Microsoft Graph API.

### Installation

Install from PyPI:

pip install officeclaw

Or with uv:

uv pip install officeclaw

Verify installation:

officeclaw --version

### Setup (One-Time)

Quick start: OfficeClaw ships with a default app registration — just run officeclaw auth login and go. No Azure setup needed.
Advanced: Want full control? Create your own Azure App Registration (free, ~5 minutes) and set OFFICECLAW_CLIENT_ID in your .env. See Microsoft's guide or follow the steps below.

### 1. Create an Azure App Registration

Go to entra.microsoft.com → App registrations → New registration
Name: officeclaw (or anything you like)
Supported account types: Personal Microsoft accounts only
Redirect URI: leave blank (not needed for device code flow)
Click Register
Copy the Application (client) ID — this is your OFFICECLAW_CLIENT_ID
Go to Authentication → Advanced settings → Allow public client flows → Yes → Save
Go to API permissions → Add permission → Microsoft Graph → Delegated permissions. Choose based on your needs:

Read-only (safest):

Mail.Read, Calendars.Read, Tasks.ReadWrite*

Full access (all features including send/delete):

Mail.Read, Mail.ReadWrite, Mail.Send
Calendars.Read, Calendars.ReadWrite
Tasks.ReadWrite

*Tasks.ReadWrite is the minimum available scope for Microsoft To Do — there is no read-only option.

Least privilege: Only grant the permissions you actually need. If you only want to read emails and calendar, skip Mail.ReadWrite, Mail.Send, and Calendars.ReadWrite. OfficeClaw will gracefully error on commands that require missing permissions.

### 2. Configure Environment

Create a .env file in your skill directory:

OFFICECLAW_CLIENT_ID=your-client-id-here

# Capability gates (disabled by default for safety)
# OFFICECLAW_ENABLE_SEND=true    # Allow sending/replying/forwarding emails
# OFFICECLAW_ENABLE_DELETE=true   # Allow deleting emails, events, and tasks

No client secret needed for device code flow. Write operations (send, delete) are disabled by default — enable only what you need.

### 3. Authenticate

officeclaw auth login

This displays a URL and code. Open the URL in a browser, enter the code, and sign in with your Microsoft account. Tokens are stored securely in ~/.officeclaw/token_cache.json (permissions 600).

### When to Use This Skill

Activate this skill when the user needs to:

### Email Operations

Read emails: "Show me my latest emails", "Find emails from john@example.com"
Send emails: "Send an email to...", "Reply to the last email from..."
Manage inbox: "Mark emails as read", "Archive old emails", "Delete emails"

### Calendar Operations

View events: "What's on my calendar today?", "Show meetings this week"
Create events: "Schedule a meeting with...", "Add dentist appointment on Friday"
Update events: "Move the 2pm meeting to 3pm", "Cancel tomorrow's standup"

### Task Management

List tasks: "What's on my to-do list?", "Show incomplete tasks"
Create tasks: "Add 'buy groceries' to my tasks", "Create a task to review report"
Complete tasks: "Mark 'finish proposal' as done", "Complete all shopping tasks"

### Authentication

officeclaw auth login       # Authenticate via device code flow
officeclaw auth status      # Check authentication status
officeclaw auth logout      # Clear stored tokens

### Mail Commands

officeclaw mail list --limit 10                # List recent messages
officeclaw mail list --unread                   # List unread messages only
officeclaw mail get <message-id>               # Get specific message
officeclaw mail send --to user@example.com --subject "Hello" --body "Message text"
officeclaw mail send --to user@example.com --subject "Report" --body "Attached" --attachment report.pdf
officeclaw mail search --query "from:boss@example.com"
officeclaw mail archive <message-id>           # Archive a message
officeclaw mail mark-read <message-id>         # Mark as read
officeclaw --json mail list                    # JSON output for parsing

### Calendar Commands

officeclaw calendar list --start 2026-02-01 --end 2026-02-28
officeclaw calendar create \\
  --subject "Team Meeting" \\
  --start "2026-02-15T10:00:00" \\
  --end "2026-02-15T11:00:00" \\
  --location "Conference Room"
officeclaw calendar get <event-id>
officeclaw calendar update <event-id> --subject "Updated Meeting"
officeclaw calendar delete <event-id>
officeclaw --json calendar list --start 2026-02-01 --end 2026-02-28

### Task Commands

officeclaw tasks list-lists                              # List task lists
officeclaw tasks list --list-id <list-id>                # List tasks
officeclaw tasks list --list-id <list-id> --status active  # Active tasks only
officeclaw tasks create --list-id <list-id> --title "Complete report" --due-date "2026-02-20"
officeclaw tasks complete --list-id <list-id> --task-id <task-id>
officeclaw tasks reopen --list-id <list-id> --task-id <task-id>

### Output Format

Use --json flag for structured JSON output:

officeclaw --json mail list

Returns:

{
  "status": "success",
  "data": [
    {
      "id": "AAMkADEzN...",
      "subject": "Meeting Notes",
      "from": {"emailAddress": {"address": "sender@example.com"}},
      "receivedDateTime": "2026-02-12T10:30:00Z",
      "isRead": false
    }
  ]
}

### Error Handling

Common errors and solutions:

ErrorCauseSolutionAuthenticationErrorNot logged in or token expiredRun officeclaw auth loginAccessDeniedMissing permissionsRe-authenticate with required scopesResourceNotFoundInvalid IDVerify the ID existsRateLimitErrorToo many API callsWait 60 seconds and retry

### Guidelines for Agents

When using this skill:

Confirm destructive actions: Ask before deleting or sending
Summarize results: Don't show raw JSON, provide summaries
Handle errors gracefully: Guide user through re-authentication
Respect privacy: Don't log email content
Use JSON mode: For programmatic parsing, use --json flag
Batch operations: Process multiple items efficiently

### Security & Privacy

Write operations disabled by default: Send, reply, forward, and delete are all blocked unless explicitly enabled via OFFICECLAW_ENABLE_SEND and OFFICECLAW_ENABLE_DELETE environment variables. This prevents accidental or unauthorised write actions.
No client secret required: Uses device code flow (public client) by default
Least-privilege permissions: You choose which Graph API scopes to grant — read-only is sufficient for most use cases. See the setup guide above.
Tokens stored securely: ~/.officeclaw/token_cache.json with 600 file permissions
No data storage: OfficeClaw passes data through, never stores email/calendar content
No telemetry: No usage data collected
Your own Azure app: Each user creates their own Azure app registration with their own client ID — no shared credentials

### Troubleshooting

If the skill isn't working:

Check authentication: Run officeclaw auth status
Re-authenticate: Run officeclaw auth login
Verify network: Ensure graph.microsoft.com is reachable
Check environment: Verify OFFICECLAW_CLIENT_ID is set in .env

### References

OfficeClaw on GitHub
OfficeClaw on PyPI
Microsoft Graph API
OpenClaw
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: danielithomas
- Version: 1.0.3
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-30T15:24:29.580Z
- Expires at: 2026-05-07T15:24:29.580Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/officeclaw)
- [Send to Agent page](https://openagent3.xyz/skills/officeclaw/agent)
- [JSON manifest](https://openagent3.xyz/skills/officeclaw/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/officeclaw/agent.md)
- [Download page](https://openagent3.xyz/downloads/officeclaw)