108 lines
4.6 KiB
Markdown
108 lines
4.6 KiB
Markdown
---
|
|
name: handoff-pro
|
|
description: "Construction estimation, proposals, invoicing, and project management for Kellow Construction. Syncs with JobTread and QuickBooks Online. Use for any estimate, proposal, invoice, budget, or project tracking request."
|
|
---
|
|
|
|
# Handoff Pro — Construction Project Management
|
|
|
|
MCP server at `http://192.168.86.11:3101/sse` (registered in mcporter as `handoff-pro`).
|
|
|
|
## Quick Reference
|
|
|
|
Call tools via: `mcporter call handoff-pro.<tool> key=value`
|
|
|
|
### Estimation Workflow
|
|
1. User describes job → `generate_estimate description="kitchen remodel, 200sqft, new cabinets and countertops"`
|
|
2. Optionally enrich with design-agent: `mcporter call design-agent.estimate_cost ...` and `design-agent.get_permit_matrix ...`
|
|
3. Review estimate → `get_estimate estimate_id=<id>`
|
|
4. Generate proposal → `draft_proposal estimate_id=<id>`
|
|
5. Request signature → `request_signature estimate_id=<id> client_name="John Smith"`
|
|
|
|
### Invoice Workflow
|
|
1. Create invoice → `create_invoice estimate_id=<id>`
|
|
2. Sync to JobTread → `jt_push_invoice invoice_id=<id>`
|
|
3. Sync to QBO → `sync_invoice_qbo invoice_id=<id>`
|
|
4. Mark paid → `mark_invoice_paid invoice_id=<id>`
|
|
|
|
### JobTread Sync
|
|
- Pull all jobs: `jt_pull_jobs`
|
|
- List customers: `jt_list_customers`
|
|
- Push estimate: `jt_push_estimate estimate_id=<id>`
|
|
- Check sync: `jt_sync_status job_id=<id>`
|
|
|
|
### Daily Operations
|
|
- Log work: `create_daily_log job_id=<id> notes="framed walls" crew_names="Mike, Sarah" hours_worked=8`
|
|
- Analyze site: `analyze_site observations="water damage in corner, cracked foundation" job_id=<id>`
|
|
- Budget check: `get_budget_report job_id=<id>`
|
|
- Set milestone: `set_milestone job_id=<id> phase_name="Framing" start_date="2026-06-01"`
|
|
|
|
### Pricing Catalogs
|
|
- List: `list_catalogs`
|
|
- Create: `create_catalog name="Commercial" labor_rates={"framing":95,"electrical":110}`
|
|
|
|
## All Tools (30)
|
|
|
|
| Tool | Purpose |
|
|
|------|---------|
|
|
| `list_catalogs` | List pricing catalogs |
|
|
| `create_catalog` | Create pricing catalog |
|
|
| `get_catalog` | Get catalog by ID |
|
|
| `update_catalog` | Update catalog rates |
|
|
| `delete_catalog` | Delete catalog |
|
|
| `create_job` | Create local job |
|
|
| `list_jobs` | List jobs (optional status filter) |
|
|
| `get_job` | Get job + estimates + invoices |
|
|
| `update_job` | Update job fields |
|
|
| `create_estimate` | Create estimate with line items |
|
|
| `get_estimate` | Get estimate + line items |
|
|
| `generate_estimate` | AI: parse description → estimate |
|
|
| `draft_proposal` | Generate proposal from estimate |
|
|
| `create_invoice` | Create invoice from estimate |
|
|
| `list_invoices` | List invoices |
|
|
| `mark_invoice_paid` | Mark invoice paid |
|
|
| `sync_invoice_qbo` | Sync invoice to QuickBooks |
|
|
| `jt_list_customers` | List JobTread customers |
|
|
| `jt_pull_jobs` | Pull jobs from JobTread |
|
|
| `jt_push_estimate` | Push estimate to JobTread |
|
|
| `jt_push_invoice` | Push invoice to JobTread |
|
|
| `jt_sync_status` | Get sync status |
|
|
| `generate_scope` | Generate scope of work |
|
|
| `generate_material_list` | Generate shopping list |
|
|
| `create_daily_log` | Log daily work |
|
|
| `list_daily_logs` | List logs for job |
|
|
| `analyze_site` | Analyze site conditions |
|
|
| `get_budget_report` | Budget vs actual report |
|
|
| `set_milestone` | Set project milestone |
|
|
| `get_schedule` | Get project timeline |
|
|
| `request_signature` | Request e-signature |
|
|
| `record_signature` | Record signature |
|
|
| `log_activity` | Log client action |
|
|
| `get_activity` | Get activity history |
|
|
|
|
## Design-Agent Integration
|
|
|
|
For SB-area jobs, enrich estimates with:
|
|
- `mcporter call design-agent.estimate_cost` — local cost ranges
|
|
- `mcporter call design-agent.get_permit_matrix` — permit fees + timeline
|
|
- `mcporter call design-agent.lookup_parcel` — lot data affecting scope
|
|
|
|
## Conversation Patterns
|
|
|
|
**"I need an estimate for X"** → Ask for address + details, then `generate_estimate`. If SB area, also call design-agent.estimate_cost for validation.
|
|
|
|
**"Send a proposal"** → `draft_proposal` → format nicely → send to client. Ask if they want signature collection.
|
|
|
|
**"Invoice this job"** → `create_invoice` → ask about syncing to JobTread/QBO.
|
|
|
|
**"What's the budget looking like?"** → `get_budget_report` → present variance and flags.
|
|
|
|
**"Log today's work"** → Ask for crew, hours, notes, photos → `create_daily_log`.
|
|
|
|
**"Show me my jobs"** → `list_jobs` or `jt_pull_jobs` for fresh data from JobTread.
|
|
|
|
## Error Handling
|
|
|
|
- If JobTread sync fails: tool returns error, work continues locally. Retry later.
|
|
- If QBO sync fails: check token with `python3 skills/kellow-qbo/scripts/check-token.py`
|
|
- All data persists in local SQLite regardless of sync status.
|