Files
handoff-pro/SKILL.md

4.6 KiB

name, description
name description
handoff-pro 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.