Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
Work Automation Skill Work Automation Skill Connect your AI agent to Gmail, Google Calendar, Google Drive, Telegram, Slack, and Obsidian — giving it full situational awareness across the tools where work happens. **All access is read-only. Credentials stay on your server. Nothing is exfiltrated.** --- Overview This skill connects six work surfaces to your OpenClaw agent: | Integration | What It Provides | Example Uses | |---|---|---| | ** Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Freshness
Last checked 4/15/2026
Best For
openclaw-work-automation is best for still, already workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack
Work Automation Skill Work Automation Skill Connect your AI agent to Gmail, Google Calendar, Google Drive, Telegram, Slack, and Obsidian — giving it full situational awareness across the tools where work happens. **All access is read-only. Credentials stay on your server. Nothing is exfiltrated.** --- Overview This skill connects six work surfaces to your OpenClaw agent: | Integration | What It Provides | Example Uses | |---|---|---| | **
Public facts
4
Change events
1
Artifacts
0
Freshness
Apr 15, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Apr 15, 2026
Vendor
Clydedevv
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Setup snapshot
git clone https://github.com/clydedevv/openclaw-work-automation.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
Clydedevv
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
bash
pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client telethon slack-sdk python-dotenv
bash
python3 -m venv venv ./venv/bin/pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client telethon slack-sdk python-dotenv
bash
cd /path/to/openclaw-work-automation python3 scripts/google-auth.py
bash
# Step 1: Generate URL python3 scripts/google-auth.py --url-only # Step 2: User opens URL, authorizes, copies redirect URL # Step 3: Exchange code python3 scripts/google-auth.py --exchange "http://localhost/?state=...&code=..." # Step 4: Verify python3 scripts/google-auth.py --verify
python
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
creds = Credentials.from_authorized_user_file('token.json')
gmail = build('gmail', 'v1', credentials=creds)
# List recent messages
results = gmail.users().messages().list(userId='me', maxResults=10, q='is:unread').execute()
for msg_meta in results.get('messages', []):
msg = gmail.users().messages().get(userId='me', id=msg_meta['id'], format='metadata',
metadataHeaders=['From', 'Subject', 'Date']).execute()
headers = {h['name']: h['value'] for h in msg['payload']['headers']}
print(f"From: {headers.get('From')} | Subject: {headers.get('Subject')}")python
from datetime import datetime, timezone
cal = build('calendar', 'v3', credentials=creds)
now = datetime.now(timezone.utc).isoformat()
events = cal.events().list(calendarId='primary', timeMin=now, maxResults=10,
singleEvents=True, orderBy='startTime').execute()
for ev in events.get('items', []):
start = ev['start'].get('dateTime', ev['start'].get('date'))
print(f"{start}: {ev.get('summary', '(no title)')}")Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
Work Automation Skill Work Automation Skill Connect your AI agent to Gmail, Google Calendar, Google Drive, Telegram, Slack, and Obsidian — giving it full situational awareness across the tools where work happens. **All access is read-only. Credentials stay on your server. Nothing is exfiltrated.** --- Overview This skill connects six work surfaces to your OpenClaw agent: | Integration | What It Provides | Example Uses | |---|---|---| | **
Connect your AI agent to Gmail, Google Calendar, Google Drive, Telegram, Slack, and Obsidian — giving it full situational awareness across the tools where work happens.
All access is read-only. Credentials stay on your server. Nothing is exfiltrated.
This skill connects six work surfaces to your OpenClaw agent:
| Integration | What It Provides | Example Uses | |---|---|---| | Gmail (read-only) | Email threads, client/partner comms | Track outreach cadence, surface urgent replies | | Google Calendar (read-only) | Meeting schedule | Auto-prep meeting briefings, know what's coming | | Google Drive (read-only) | Meet transcripts (Gemini), shared docs | Extract action items from calls, search past meetings | | Telegram (user session) | Group chats, DMs, folders | Monitor partner groups, catch unanswered questions | | Slack (read-only) | Team channels, threads | Monitor key channels, surface mentions | | Obsidian (Git sync) | Personal notes, meeting notes | Persistent context from your own thinking |
Any single integration is useful. All of them together is transformative — the AI connects dots across email, chat, docs, meetings, and notes, surfacing things you'd otherwise miss.
pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client telethon slack-sdk python-dotenv
Or create a venv:
python3 -m venv venv
./venv/bin/pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client telethon slack-sdk python-dotenv
Which Google account? Use whichever account has your work email and Meet transcripts. If it's a Google Workspace account, you can still OAuth from a personal Cloud project — the token authorizes the account you sign in with, not the project owner.
credentials.jsoncd /path/to/openclaw-work-automation
python3 scripts/google-auth.py
This will:
http://localhost/?code=... — the page won't load, that's expectedtoken.json ✓For OpenClaw agents (non-interactive):
# Step 1: Generate URL
python3 scripts/google-auth.py --url-only
# Step 2: User opens URL, authorizes, copies redirect URL
# Step 3: Exchange code
python3 scripts/google-auth.py --exchange "http://localhost/?state=...&code=..."
# Step 4: Verify
python3 scripts/google-auth.py --verify
Read recent emails:
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
creds = Credentials.from_authorized_user_file('token.json')
gmail = build('gmail', 'v1', credentials=creds)
# List recent messages
results = gmail.users().messages().list(userId='me', maxResults=10, q='is:unread').execute()
for msg_meta in results.get('messages', []):
msg = gmail.users().messages().get(userId='me', id=msg_meta['id'], format='metadata',
metadataHeaders=['From', 'Subject', 'Date']).execute()
headers = {h['name']: h['value'] for h in msg['payload']['headers']}
print(f"From: {headers.get('From')} | Subject: {headers.get('Subject')}")
Check calendar:
from datetime import datetime, timezone
cal = build('calendar', 'v3', credentials=creds)
now = datetime.now(timezone.utc).isoformat()
events = cal.events().list(calendarId='primary', timeMin=now, maxResults=10,
singleEvents=True, orderBy='startTime').execute()
for ev in events.get('items', []):
start = ev['start'].get('dateTime', ev['start'].get('date'))
print(f"{start}: {ev.get('summary', '(no title)')}")
Read Meet transcripts from Drive:
drive = build('drive', 'v3', credentials=creds)
# Find recent Meet transcripts (they're Google Docs in Drive)
files = drive.files().list(
q="mimeType='application/vnd.google-apps.document' and name contains 'Meeting transcript'",
orderBy='modifiedTime desc', pageSize=5,
fields='files(id,name,modifiedTime)'
).execute()
# Read a transcript
for f in files.get('files', []):
content = drive.files().export(fileId=f['id'], mimeType='text/plain').execute()
print(f"\n--- {f['name']} ---")
print(content.decode('utf-8')[:500])
api_id and api_hashexport TELEGRAM_API_ID=12345678
export TELEGRAM_API_HASH=your_api_hash
export TELEGRAM_PHONE=+1234567890
Or create a .env file (see templates/.env.example).
Interactive:
python3 scripts/telegram-auth.py
Background (recommended for OpenClaw — survives session timeouts):
# Start auth in background
nohup python3 scripts/telegram-auth.py --background &
# Wait for it to be ready
cat status.txt # Should say "waiting"
# Write the code (DO NOT share via Telegram — see Gotcha #3!)
echo "71539" > auth_code.txt
# Check result
cat status.txt # Should say "OK: Name (@username)"
The .session file persists authentication indefinitely — you only need to do this once.
Read messages from a chat:
from telethon import TelegramClient
import os
client = TelegramClient('my_session', int(os.environ['TELEGRAM_API_ID']), os.environ['TELEGRAM_API_HASH'])
await client.connect()
# Get recent messages from a chat (use ID from telegram-auth.py output)
messages = await client.get_messages(CHAT_ID, limit=20)
for m in messages:
sender = getattr(m.sender, 'first_name', '?') if m.sender else '?'
print(f"[{m.date}] {sender}: {m.text}")
List chat folders:
from telethon.tl.functions.messages import GetDialogFiltersRequest
result = await client(GetDialogFiltersRequest())
for f in result.filters:
title = getattr(f, 'title', None)
if title:
t = getattr(title, 'text', title)
peers = getattr(f, 'include_peers', [])
print(f"📂 {t} ({len(peers)} chats)")
Search across chats:
# Search for a keyword in a specific chat
messages = await client.get_messages(CHAT_ID, search='keyword', limit=10)
channels:history — read public channel messageschannels:read — list channelsgroups:history — read private channel messagesgroups:read — list private channelsim:history — read DMsim:read — list DMsusers:read — resolve user namesxoxp-)export SLACK_USER_TOKEN=xoxp-your-token
python3 scripts/slack-verify.py
This lists all accessible channels with their IDs. Copy the ones you want to monitor into monitor-config.json.
Read channel history:
from slack_sdk import WebClient
client = WebClient(token=os.environ['SLACK_USER_TOKEN'])
result = client.conversations_history(channel='CHANNEL_ID', limit=20)
for msg in result['messages']:
print(f"[{msg.get('user', '?')}]: {msg.get('text', '')[:100]}")
Read thread replies:
result = client.conversations_replies(channel='CHANNEL_ID', ts='THREAD_TS', limit=20)
for msg in result['messages']:
print(f" {msg.get('text', '')[:100]}")
Resolve user names:
user_info = client.users_info(user='USER_ID')
print(user_info['user']['real_name'])
your-username/obsidian-vault)git clone https://github.com/youruser/obsidian-vault.git ~/obsidian-vault-temp
.git into your existing vault:
cp -r ~/obsidian-vault-temp/.git ~/path/to/your/vault/
cd ~/path/to/your/vault
git add -A && git commit -m "initial" && git push -u origin main
git clone https://USERNAME:TOKEN@github.com/youruser/obsidian-vault.git ~/obsidian-vault
Pull before using:
cd ~/obsidian-vault && git pull
# Search across all notes
grep -r "keyword" ~/obsidian-vault/ --include="*.md"
# Recent notes
find ~/obsidian-vault/ -name "*.md" -mtime -7 -type f
The monitor script scans Telegram and Slack for items needing your attention.
Copy and edit the config:
cp templates/monitor-config.json monitor-config.json
Fill in:
your_name and your_aliases — for @mention detectiontelegram.chats — chat names and IDs (from telegram-auth.py output)slack.channels — channel names and IDs (from slack-verify.py output)python3 scripts/monitor.py # Default: last 6 hours
python3 scripts/monitor.py --hours 12 # Last 12 hours
python3 scripts/monitor.py --json # JSON output only
# Morning scan (8 AM, last 12 hours)
0 8 * * * cd /path/to/openclaw-work-automation && python3 scripts/monitor.py --hours 12
# Midday check (1 PM, last 4 hours)
0 13 * * * cd /path/to/openclaw-work-automation && python3 scripts/monitor.py --hours 4
# Evening wrap-up (6 PM, last 5 hours)
0 18 * * * cd /path/to/openclaw-work-automation && python3 scripts/monitor.py --hours 5
Add to your HEARTBEAT.md:
- [ ] Run work monitor: `python3 /path/to/openclaw-work-automation/scripts/monitor.py --hours 4`
- [ ] If high-priority items found, notify me
1. Pull Obsidian vault (git pull)
2. Run monitor.py --hours 12 for overnight activity
3. Check calendar for today's meetings
4. Read unread emails
5. Generate briefing combining all sources
1. Read calendar event for attendee names
2. Search Gmail for recent threads with attendees
3. Search Telegram for recent messages with/about them
4. Check Slack for relevant channel activity
5. Pull relevant Obsidian notes
6. Generate talking points
1. Check Drive for new Meet transcript
2. Export and read transcript
3. Extract action items
4. Cross-reference with open threads in TG/Slack/email
These are real issues you will hit. Don't skip them.
InsecureTransportErrorProblem: OAuth fails because redirect URI is http://localhost (not https).
Solution: Set OAUTHLIB_INSECURE_TRANSPORT=1 before importing Google libraries. The auth script handles this automatically.
Problem: Trying to read Google Docs (Meet transcripts) via the Docs API fails if you haven't enabled it.
Solution: Use the Drive API's export method instead — it works without enabling the Docs API separately:
content = drive.files().export(fileId='DOC_ID', mimeType='text/plain').execute()
Problem: If you paste your login code in ANY Telegram message (even Saved Messages), Telegram detects it and blocks the login with "this code was previously shared by your account." Solution:
echo "71539" > auth_code.txt)Problem: Long-running processes (like waiting for a login code) get SIGTERM'd by orchestration platforms with session timeouts.
Solution: Use nohup for the auth script. The --background flag in telegram-auth.py handles this pattern.
Problem: An old bot process using the same Telegram bot token holds the polling lock, preventing new instances.
Solution: Kill all old processes before starting: pkill -f "bot.py" and verify with ps aux | grep bot.
send_code_request Invalidates Previous CodesProblem: Calling send_code_request again invalidates the previous code and its phone_code_hash.
Solution: Don't call it again — reuse the original phone_code_hash from the first call.
Problem: Model names like gpt-5.2-mini may not exist. APIs return cryptic errors.
Solution: Always check available models via the API first. Use confirmed model names.
max_tokens vs max_completion_tokensProblem: Newer models reject the max_tokens parameter.
Solution: Use max_completion_tokens instead.
Problem: Some models only accept temperature=1 and reject custom values.
Solution: Check model docs or use temperature=1 as a safe default.
git init Inside Existing VaultProblem: Running git init in your vault creates conflicts when you try to add a remote.
Solution: Clone the repo elsewhere, copy .git into your existing vault, then push.
Problem: git clone on a server fails with "could not read Username" for private repos.
Solution: Use a personal access token in the URL:
git clone https://USERNAME:TOKEN@github.com/youruser/obsidian-vault.git
gmail.readonly scope — cannot send, modify, or delete emailscalendar.readonly scope — cannot create or edit eventsdrive.readonly scope — cannot upload, modify, or delete filesopenclaw-work-automation/
├── SKILL.md ← This file
├── README.md ← GitHub README
├── scripts/
│ ├── google-auth.py ← Google OAuth flow
│ ├── telegram-auth.py ← Telegram auth (interactive + background)
│ ├── slack-verify.py ← Slack token verification
│ └── monitor.py ← Multi-platform activity scanner
├── templates/
│ ├── .env.example ← All environment variables
│ └── monitor-config.json ← Monitor configuration template
└── .gitignore
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/snapshot"
curl -s "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/contract"
curl -s "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:38:05.485Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "still",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "already",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:still|supported|profile capability:already|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clydedevv",
"href": "https://github.com/clydedevv/openclaw-work-automation",
"sourceUrl": "https://github.com/clydedevv/openclaw-work-automation",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T01:13:16.859Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T01:13:16.859Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/clydedevv-openclaw-work-automation/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to openclaw-work-automation and adjacent AI workflows.