/install agent-zero
AgentZero Skill
AgentZero is a personal real estate listing tracker. Backend at http://localhost:8000.
Prerequisites
Before using this skill, ensure the following are in place:
| Requirement | Details |
|---|---|
| AgentZero backend | Must be running at http://localhost:8000 (Rust/Axum). Start with ./scripts/run_backend.sh in the project directory. |
| ANTHROPIC_API_KEY | Required for automatic listing triage. Set in your environment before starting the backend. Get your key at console.anthropic.com. |
| himalaya | CLI email client — must be installed (brew install himalaya or similar) and configured with your Gmail account via IMAP. Config at ~/.config/himalaya/config.toml. |
| himalaya credentials | Gmail app password or OAuth token stored in keychain. Required for the Daily Email Scan workflow. |
| openclaw browser | Used by the Daily Email Scan to open Gmail and click listing links. Start with openclaw browser --browser-profile openclaw start. |
| AgentZero frontend (optional) | Vite UI at http://localhost:5173 for reviewing listings. Start with ./scripts/run_frontend.sh. |
Privacy & Email Access
The Daily Email Scan workflow accesses your Gmail inbox. Specifically it:
- Reads envelope metadata (subject, sender, ID) of Redfin alert emails via
himalaya envelope list - Opens Gmail in the openclaw browser to click through listing links (no email body text is read or stored)
- Records processed email IDs and listing URLs in
~/.openclaw/\x3CWORKSPACE>/skills/agent-zero/agent_zero_claw_logs/
The scan only runs when explicitly triggered (cron or manual) and is scoped to from:redfin.com emails only.
Key APIs
| Action | Method | Endpoint | Body / Params |
|---|---|---|---|
| Add listing (AI) | POST | /api/listings/agent-suggest |
{"url": "..."} |
| List all listings | GET | /api/listings |
?status=... |
| Get single listing | GET | /api/listings/:id |
— |
Responses are JSON Property objects (see field list below).
Workflow: Add a Listing by URL
- POST
/api/listings/agent-suggestwith{"url": "\x3Curl>"}. - On
409 CONFLICTresponse: the listing already exists. Parse the JSON body forexisting_idandexisting_titleand report to user. - On success: the listing is saved as
AgentPending. The backend agent will further review i. - Log a summary to the daily notes file (see Logging section).
Logging — agent_zero_claw_logs/
After every action (add, refresh, skip), append a summary to:
~/.openclaw/\x3CWORKSPACE>/skills/agent-zero/agent_zero_claw_logs/YYYY-MM-DD.md
Here \x3CWORKSPACE> is the name of your OpenClaw workspace for the specific agent; it can be workspace if it is the default agent; or workspace followed by the agent name.
Create the folder and file if they don't exist.
Format:
## HH:MM — Added listing #38
- **Email:** https://mail.google.com/mail/u/0/#inbox/\x3Cthread_id>
- **Title:** 7778 Nanaimo St, Vancouver - 6 beds/3.5 baths
- **URL:** https://www.redfin.ca/...
- **Price:** $2,198,000
- **Status:** AgentPending (agent review running in background)
## HH:MM — Skipped listing
- **Email:** https://mail.google.com/mail/u/0/#inbox/\x3Cthread_id>
- **URL:** https://...
- **Reason:** No search profile matches — listing is in Burnaby, all profiles target Vancouver.
The thread_id is the hex ID visible in the Gmail URL after opening the email in the browser.
Workflow: Daily Email Scan (Cron)
This is the workflow for the scheduled daily cron task.
Requires: himalaya configured with Gmail + openclaw browser running. See Prerequisites above.
Step-by-step
-
Notify your user (via whatever messaging channel is configured): "🏠 AgentZero daily scan starting — checking Redfin emails..."
-
Write scan-start entry to
~/.openclaw/\x3CWORKSPACE>/skills/agent-zero/agent_zero_claw_logs/YYYY-MM-DD.mdimmediately (create file/folder if needed):## HH:MM — Scan started - Checking Redfin emails... -
Load state file
~/.openclaw/\x3CWORKSPACE>/skills/agent-zero/agent_zero_claw_logs/processed_emails.json- If missing, treat as
{"processed_ids": [], "date_counts": {}} - Format:
{"processed_ids": ["57471", ...], "date_counts": {"2026-03-09": 2}} processed_idsare himalaya envelope IDs (sequential integers) — used to avoid re-processing emails already handled in previous scans- Append to log:
## HH:MM — Loaded state - Already processed IDs: 57471, 57457 - Processed today: 1
- If missing, treat as
-
Check daily limit: count how many emails were processed today (from
date_counts[today]). If ≥ 3, append to log and notify your user:## HH:MM — Skipped scan - Reason: Daily limit (3) already reached. -
List emails via himalaya:
himalaya envelope list --output json 2>/dev/nullFilter to emails where
from.addrcontainsredfin.comand ID is NOT inprocessed_ids. Take up to3 - already_processed_today.Append to log immediately:
## HH:MM — Found N new Redfin email(s) - Email IDs: 57493, 57490 - Already processed today: 1 (limit: 3) -
For each email:
a. Append to log before opening:
## HH:MM — Processing email \x3Cid>: "\x3Csubject>" - Opening in Gmail...b. Open the email in Gmail via browser (run
openclaw browser --browser-profile openclaw startif not already running):- Navigate to Gmail and search using the subject and sender from the himalaya envelope (e.g.
from:[email protected] subject:"\x3Csubject from step 5>") - Click the matching email to open it
c. For each listing link visible in the email body:
- Skip "Go tour it", "Tour home", "Schedule a Tour", and "View all saved open houses" links — these go to booking pages, not listings
- Skip full address links (e.g. "930 Cambie St, Vancouver, BC, V6B 5X6") — these go to Google Maps
- Click the short property name links (e.g. "7778 Nanaimo St" or "2094 E 7th Ave") — these are the actual Redfin listing links
- Read the final URL from the new tab (e.g.
https://www.redfin.ca/bc/vancouver/.../home/200788210) - Close the tab
- ⚠️ Never construct or guess URLs. Only use URLs extracted directly by clicking through the email. Do not derive URLs from propertyId params or address strings.
- Append to log before submitting:
- Found listing URL: https://www.redfin.ca/... - Submitting to AgentZero... - Submit via Add Listing workflow above (no profile selection needed — agent assigns it)
- Append result to log immediately after each listing (success, skip, or 409)
d. Mark email as processed:
- Update
processed_idsin state file with this email ID - Increment
date_counts[today] - Add
agent_zerolabel in Gmail via himalaya:himalaya message copy \x3Cemail_id> "agent_zero" - Append to log:
- Email \x3Cid> marked as processed.
- Navigate to Gmail and search using the subject and sender from the himalaya envelope (e.g.
-
Append final summary to log:
## HH:MM — Scan complete - Processed N emails, added M listings (K skipped). -
Notify your user with summary and a prompt to review new listings in the frontend:
✅ AgentZero scan complete — processed 2 emails, added 3 listings (agent review running in background). 🏡 New listings will appear in Review once the agent finishes: http://localhost:5173/inbox
State file location
~/.openclaw/\x3CWORKSPACE>/skills/agent-zero/agent_zero_claw_logs/processed_emails.json
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install agent-zero - After installation, invoke the skill by name or use
/agent-zero - Provide required inputs per the skill's parameter spec and get structured output
What is AgentZero?
Interact with the AgentZero real estate listing tracker (local Rust/Axum backend at http://localhost:8000). Use when asked to add a property listing by URL,... It is an AI Agent Skill for Claude Code / OpenClaw, with 535 downloads so far.
How do I install AgentZero?
Run "/install agent-zero" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is AgentZero free?
Yes, AgentZero is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does AgentZero support?
AgentZero is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created AgentZero?
It is built and maintained by Yuchen (@yzhong52); the current version is v1.0.7.