OpenClaw · Skill
Thrd
This skill helps you create and operate an isolated inbox for an AI agent using thrd.email , without connecting your personal inbox.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install sergiorico1/thrdClawHub installer
npx clawhub@latest install sergiorico1/thrdOpenClaw CLI
openclaw skills install sergiorico1/thrdDirect OpenClaw install
openclaw install sergiorico1/thrdWhat this skill does
This skill helps you create and operate an isolated inbox for an AI agent using thrd.email , without connecting your personal inbox.
Why it matters
Isolates agent email activity from personal inboxes while adding built-in spam controls, tiered trust verification, and idempotent sending that raw SMTP or general-purpose email APIs lack.
Typical use cases
- Giving an AI agent its own inbox without exposing personal email
- Polling for inbound email replies in an automated workflow
- Sending cold outbound emails with spam-prevention challenges
- Verifying agent ownership by linking a responsible human on X
- Monitoring monthly email usage and delivery status
Source instructions
Thrd Email Skill
This skill helps you create and operate an isolated inbox for an AI agent using thrd.email, without connecting your personal inbox.
Safety by default: don't connect your primary inbox to an agent; use a dedicated agent inbox.
Workflows
Sync API Contract (Recommended Before Tool Use)
To avoid stale assumptions, refresh the OpenAPI contract and read info.version:
python3 scripts/openapi_sync.py
python3 scripts/openapi_sync.py --print-version
This uses HTTP cache validators (ETag/Last-Modified) and only re-downloads when changed.
Provision a New Email Account
To create a new email account, run the onboarding script:
python3 scripts/onboard.py --agent-name "My Agent" [--tenant-name "My Company"]
This prints a JSON payload to stdout with the new inbox data and a redacted API key by default.
If you explicitly need the one-time raw key in a trusted terminal:
python3 scripts/onboard.py --agent-name "My Agent" --reveal-api-key
Security note: Do not write your API key to disk. Store it in your runtime's secret manager and set THRD_API_KEY as an environment variable. (The rest of the tools require THRD_API_KEY; onboarding does not.)
Upgrade Plan (Billing)
To start paid billing for your current tenant, use the checkout script:
python3 scripts/checkout.py <plan_name>
Plans:
sandbox-> Sandbox Starter (9 EUR/month, raises Tier 1 monthly limit from 100 to 2,000 emails)limited-> Tier 2verified-> Tier 3
Forward the resulting Stripe URL to your human owner for payment.
Human Claiming (Verification)
Tier 3 (Verified Outbound) requires a responsible human linked via X.
- Start the flow:
POST /v1/claim/x/start - Forward the
claim_urlto your human owner. - Check status:
GET /v1/claim/x/status
Proof of Reasoning (PoR)
Cold outbound (Tier 3) may require a reasoning challenge to prevent spam.
- If you receive a
428 por_requirederror, solve the logical challenge provided in the response. - Re-send the request with
por_tokenandpor_answer.
Manage Emails and Track Delivery
For detailed API usage (polling, sending, replying, trust scores, and checking delivery status), see references/api.md.
Note: replies use reply-all behavior by default: they preserve historical CC and keep recipients from the latest inbound To line so participants are not dropped.
Tier2+ may add CC via cc[]. In Tier1, cc[] may only contain addresses already present in that thread's CC history.
Security note: when Prompt Shield marks an inbound email as high-risk, Tier2/3 flows may require creating a short-lived security_ack_token (POST /v1/security/ack) before reply/send.
Quota note: use GET /v1/usage to monitor monthly usage (used, remaining, state, reset_at) and avoid hitting hard limits mid-run.
Wake-Up Strategy (Recommended)
Many LLM runtimes do not reliably maintain background polling. Use wake webhooks when possible:
- Configure webhook:
PUT /v1/wake/webhook - Read status:
GET /v1/wake/webhook - Disable webhook:
DELETE /v1/wake/webhook
THRD sends signed inbox.pending pings, then your runtime should immediately pull with GET /v1/events and ACK.
Fallback when webhooks are not available:
python3 scripts/poll_daemon.py --cursor-file .thrd_cursor
This keeps pull-based delivery alive without requiring a public webhook endpoint.
Tools
scripts/onboard.py: Instant provisioning of a new email inbox.scripts/checkout.py: Generate a Stripe Checkout URL for upgrades.scripts/openapi_sync.py: Refresh/cache latest OpenAPI and read currentinfo.version.scripts/poll_daemon.py: Fallback long-poll daemon for runtimes without wake webhook support.