TOOLS.md - Acquisitions Agent
Credentials
API keys are in /home/opsadmin/.openclaw/workspace/.secrets/acquisitions-api-keys.json (chmod 600):
openphone_api_key— OpenPhone/Quo APIhubspot_pat— HubSpot PATsupabase_url+service_role_key— Supabase- SalesMsg OAuth:
/home/opsadmin/.openclaw/workspace/data/salesmessage-oauth.json
See workspace/TOOLS.md for full credential paths and API usage examples.
Available Tools
OpenPhone API
- Purpose: Read/send SMS, call history, contact management
- Line: RERI|CH —
+16578880122 - API Key:
api_keys.json→openphone_api_key - Base URL:
https://api.openphone.com/v1 - Auth header:
Authorization: <api_key>(no Bearer prefix) - Capabilities:
- Read inbound SMS and call transcripts on CH line
- Look up contact history by phone number
- Create and update contacts
- Read call recordings and voicemail transcripts
- Rate limits: 100 req/min
HubSpot API
- Purpose: Deal CRUD, contact management, pipeline stage updates
- Account: henry@reri.co
- PAT:
api_keys.json→hubspot_pat - Pipeline: Wholesale Deals (816046) — see FIELDS.md for full stage reference
- Capabilities:
- Create and update deals with qualification data
- Move deals between pipeline stages
- Create and associate contacts to deals
- Update deal properties (asking price, ARV, condition, etc.)
- Search deals and contacts
- Read deal activity timeline
SalesMsg API
- Purpose: SMS via SalesMsg platform, tag management
- API Base: https://api.salesmessage.com/pub/v2.2
- Auth: OAuth 2.0 — always read live token from
/home/opsadmin/.openclaw/workspace/data/salesmessage-oauth.json - Capabilities:
- Send and receive SMS messages
- Tag contacts (e.g., “has a property”, “qualified”, “dead”)
- Read conversation history
- Manage contact records
- Constraints:
- Max page size: 100 (422 error if >100)
- Direction detection: status==“received” means inbound, else outbound
- message_type must always be provided: “sms”, “mms”, or “call”
- Skip statuses: faked, transcript
Supabase
- Purpose: Persistent data storage for conversations, deals, and negotiations
- Project: svueekfvfrvhylxygktb
- Key tables:
salesmsg_inbox— SalesMsg message archive (52 cols, message_id UNIQUE)acquisition_deals— Deal tracking and qualification stateproperty_negotiations— Negotiation history and offer trackingconversations— CH conversation threadsmessages— Individual message records
- Auth: Service role key or anon key via api_keys.json
- RLS: Always call
set_agent_context('acquisitions')before queries
Discord Webhooks
- Purpose: Deal cards, escalation alerts, pipeline notifications
- Guild: Real Estate Resources (1473795019575132222)
- Channels used:
- Build channel: For routine operational updates
- aurora-red: For critical escalations only (>$10K impact or <24h deadline)
- ch-deals: Deal notifications and pipeline updates
- Format: Embed messages with deal details, stage, and action needed
Memory Search
- Purpose: Recall deal patterns, CH history, past negotiations
- Backend: SQLite vec0 hybrid search
- Search method: 70% vector (Voyage voyage-4) + 30% FTS keyword + MMR + temporal decay
- Max results: 4 per query
- Usage: Search before engaging any CH to pull prior context. Search for property addresses, CH names, phone numbers, and deal patterns.
- DB location:
/home/opsadmin/.openclaw/memory/acquisitions.sqlite
Shared Connectors (Reference Only)
These are integrated once and shared across agents. Do not re-integrate.
Messaging Stack
- OpenPhone/Quo: 34 phone lines (see workspace TOOLS.md for full list)
- SalesMessage: SMS/voice automation
- Twilio: WhatsApp Business API (pending OAuth setup)
- Google Workspace: aurora@reri.co, henry@reri.co
Slack
- Mode: HTTP webhook
- Henry User ID: U01HQ98LY90
- Angel User ID: U095EFGHWM8
- Steph User ID: U0854Q29J9E
Audit Logging (Mandatory)
Log every tool access, CH communication, and deal state change:
SELECT log_agent_action(
'acquisitions',
'read', -- or 'write', 'execute', 'send_sms', 'update_deal'
'tool_name_or_resource',
true, -- success boolean
'{"details": "additional context"}'::jsonb
);Skills (Claude Code) — added 2026-04-28
Acquisitions owns 2 skills covering Stage 1 outreach + follow-up cadence. READ each skill’s SKILL.md before working in these domains.
| Skill | Path | Purpose | Audit recipe |
|---|---|---|---|
acquisitions-outreach | ~/.claude/skills/acquisitions-outreach/ | Stage 1 SMS to wholesalers/contract holders. Wraps unified-outreach-engine.js + smart-outreach-worker.js + deal-outreach-worker.js + 5-gate compliance (gate-computer, compliance-gate, blast-safety, thread-context, response-generator, dispo-send) + 4 SMS templates | docs/HANDOFF-FOR-KIMI.md |
acquisitions-followup | ~/.claude/skills/acquisitions-followup/ | Cadence (NO_REPLY_4H, PRICE_DROP, NEW_DETAIL, STALLED_RECOVERY) + inbound A-G classifier. Wraps follow-up-scheduler.js + follow-up-engine.js + conversation-classifier.js + stage-sync.js + 2 webhook handlers (quo-handler-enhanced:18792, salesmessage-handler-v4-complete:18793) | docs/HANDOFF-FOR-KIMI.md |
Rules:
- NEVER bypass
compliance-gate.js(TCPA, quiet hours, suppression) - Stage 1 lives in acquisitions-outreach; Stage 2/3/4 + inbound lives in acquisitions-followup
- For buyer-side blasts (after a deal moves to dispo), route to dispo’s
dispo-blastskill
Cross-reference: project_skill_suite_il_outreach_pipeline.md
Perplexity Pro (web research with citations)
- Purpose: Real-time web data with citations — for per-deal research (comp validation, market context, CH/buyer-side intel) and nightly batch intel
- Auth: Cookie session (Henry’s 0 marginal cost per call)
- Wrapper:
/home/opsadmin/.openclaw/tools/perplexity-cookie-session/comprehensive_wrapper.py - Modes: ask (free auto), search (1 Pro query), reason (1 Pro query, thinking models), deep_research (1 Pro query, ~85s agentic)
- Per-deal usage (preferred for live CH/buyer threads):
from comprehensive_wrapper import PerplexityPro pp = PerplexityPro.from_env() r = pp.search("Recent comps for [address], 90d window", model="claude-sonnet-4.6", sources=["web"]) - Nightly batch intel:
/home/opsadmin/.openclaw/workspace/scripts/acquisitions_perplexity_collector.py— top-of-funnel CH/wholesale market intel (4 cited queries: inventory signals, distressed indicators, investor sentiment, platform changes). Output:/tmp/acquisitions-perplexity-intel-{date}.{json,md} - Skill:
/perplexity(Claude Code skill loader) - API tier (alternative):
POST http://127.0.0.1:18900/v1/chat/completionswith model=sonar/sonar-pro/sonar-reasoning-pro— bills against $5/mo API credit + per-call rates. Use for high-volume / cached scenarios. - Quotas: 400 cookie Pro queries/day total (soft alert via daily_summary.py); 30 deep_research/day
- KB:
workspace/knowledge-base/perplexity/(6 docs)