Pool Pro Florida
Pool service scheduling and lead management for Pool Pro Florida in St. Lucie County, Florida.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"pool-pro-florida": {
"url": "https://poolproflorida.com/mcp/"
}
}
}원격 엔드포인트
https://poolproflorida.com/mcp/streamable-http할 수 있는 일
도구 목록
도구 (7)
🟡create_lead(name, email, phone, address, service, ...)
Create a Pool Pro Florida service lead in Pool Founder when a customer is interested in service but is not yet booking an appointment. Do not call this before book_appointment for the same inquiry because a successful Cal.com booking creates the Pool Founder lead through the booking webhook.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Customer full name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"phone": {
"type": "string",
"description": "Customer phone number."
},
"address": {
"type": "string",
"description": "Pool service address."
},
"service": {
"type": "string",
"description": "Requested service, such as Pool Cleaning or Pool Consultation."
},
"message": {
"type": "string",
"description": "Customer request or useful notes."
}
},
"required": [
"name",
"service"
],
"additionalProperties": false
}🟢get_available_times(start, end, timeZone)
Get real Cal.com appointment availability for Pool Pro Florida. Use date-only YYYY-MM-DD values. Use this when a customer wants to schedule a pool consultation or service appointment.
입력 스키마
{
"type": "object",
"properties": {
"start": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "First date to check, YYYY-MM-DD."
},
"end": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Last date to check, YYYY-MM-DD."
},
"timeZone": {
"type": "string",
"description": "IANA time zone. Defaults to America/New_York."
}
},
"required": [
"start",
"end"
],
"additionalProperties": false
}🟢book_appointment(name, email, phone, address, start, ...)
Book a confirmed Pool Pro Florida appointment through Cal.com after the customer has selected an available time. Requires customer name, email, service address, and the exact start value returned by get_available_times. A successful booking triggers the existing Cal.com webhook, which creates the lead in Pool Founder.
입력 스키마
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Customer full name."
},
"email": {
"type": "string",
"format": "email",
"description": "Customer email address."
},
"phone": {
"type": "string",
"description": "Customer phone number. Normal U.S. formatting is accepted."
},
"address": {
"type": "string",
"description": "Pool service address; Cal.com uses this as the attendee address/location."
},
"start": {
"type": "string",
"description": "Exact ISO 8601 slot start returned by get_available_times."
},
"notes": {
"type": "string",
"description": "Optional notes about the pool or requested service."
},
"timeZone": {
"type": "string",
"description": "IANA time zone. Defaults to America/New_York."
}
},
"required": [
"name",
"email",
"address",
"start"
],
"additionalProperties": false
}🟡upsert_customer_contact(generatedAt, customer)
Create or update one private Pool Pro Florida CardDAV contact from Pool Founder. Owner-only and non-destructive: this tool never removes any other contacts.
입력 스키마
{
"type": "object",
"properties": {
"generatedAt": {
"type": "string",
"description": "ISO 8601 generation time."
},
"customer": {
"type": "object",
"properties": {
"sourceId": {
"type": "string",
"description": "Permanent Pool Founder customer ID."
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"company": {
"type": [
"string",
"null"
]
},
"phones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"label": {
"type": "string"
},
"primary": {
"type": "boolean"
}
},
"required": [
"value"
],
"additionalProperties": false
}
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"format": "email"
},
"label": {
"type": "string"
},
"primary": {
"type": "boolean"
}
},
"required": [
"value"
],
"additionalProperties": false
}
},
"locations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sourceId": {
"type": "string"
},
"primary": {
"type": "boolean"
},
"address": {
"type": "object",
"properties": {
"street": {
"type": "string"
},
"street2": {
"type": [
"string",
"null"
]
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"postalCode": {
"type": "string"
},
"country": {
"type": "string"
}
},
"required": [
"street",
"city",
"state",
"postalCode",
"country"
],
"additionalProperties": false
}
},
"required": [
"address"
],
"additionalProperties": false
}
},
"serviceDays": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourceId",
"displayName",
"phones",
"emails",
"locations"
],
"additionalProperties": false
}
},
"required": [
"generatedAt",
"customer"
],
"additionalProperties": false
}🟡upsert_route_stop_event(generatedAt, event)
Create or update one private Pool Pro Florida CalDAV VEVENT from a Pool Founder route stop. The identity is jobId plus serviceDate, so planned timing can later be replaced by actual arrival and departure without duplication. Owner-only and non-destructive.
입력 스키마
{
"type": "object",
"properties": {
"generatedAt": {
"type": "string",
"description": "ISO 8601 generation time."
},
"event": {
"type": "object",
"properties": {
"jobId": {
"type": "string",
"description": "Permanent Pool Founder job ID."
},
"routeId": {
"type": "string",
"description": "Permanent Pool Founder route ID."
},
"routeName": {
"type": "string"
},
"serviceDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Service date in YYYY-MM-DD."
},
"stopIndex": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"customerName": {
"type": "string"
},
"phone": {
"type": "string",
"description": "Optional structured customer phone number from Pool Founder. Included in event notes for tap-to-call on mobile calendars."
},
"email": {
"type": "string",
"format": "email",
"description": "Optional structured customer email from Pool Founder. Included in event notes for tap-to-email on mobile calendars."
},
"address": {
"type": "string",
"description": "Service address. Written to LOCATION so mobile calendars can open Maps."
},
"serviceName": {
"type": "string"
},
"start": {
"type": "string",
"description": "ISO 8601 start with UTC offset or Z. Planned before service; actual arrival after completion."
},
"end": {
"type": "string",
"description": "ISO 8601 end with UTC offset or Z. Planned before service; actual departure after completion."
},
"status": {
"type": "string",
"enum": [
"planned",
"in_progress",
"completed",
"skipped",
"cancelled"
]
},
"timingSource": {
"type": "string",
"enum": [
"planned",
"actual"
]
}
},
"required": [
"jobId",
"routeId",
"serviceDate",
"stopIndex",
"customerName",
"address",
"serviceName",
"start",
"end",
"status",
"timingSource"
],
"additionalProperties": false
}
},
"required": [
"generatedAt",
"event"
],
"additionalProperties": false
}⚪sync_route_calendar(snapshot, events)
Synchronize one complete Pool Founder route-date window into the private Pool Pro Florida CalDAV calendar. Each stop is one stable VEVENT. Completed events are historical records and are never removed. Missing non-completed events inside a validated complete window are retained and marked cancelled instead of deleted.
입력 스키마
{
"type": "object",
"properties": {
"snapshot": {
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "poolfounder"
},
"complete": {
"type": "boolean",
"const": true
},
"generatedAt": {
"type": "string",
"description": "ISO 8601 snapshot generation time."
},
"windowStart": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"windowEnd": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"eventCount": {
"type": "integer",
"minimum": 0
}
},
"required": [
"source",
"complete",
"generatedAt",
"windowStart",
"windowEnd",
"eventCount"
],
"additionalProperties": false
},
"events": {
"type": "array",
"maxItems": 5000,
"items": {
"type": "object",
"properties": {
"jobId": {
"type": "string",
"description": "Permanent Pool Founder job ID."
},
"routeId": {
"type": "string",
"description": "Permanent Pool Founder route ID."
},
"routeName": {
"type": "string"
},
"serviceDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Service date in YYYY-MM-DD."
},
"stopIndex": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"customerName": {
"type": "string"
},
"phone": {
"type": "string",
"description": "Optional structured customer phone number from Pool Founder. Included in event notes for tap-to-call on mobile calendars."
},
"email": {
"type": "string",
"format": "email",
"description": "Optional structured customer email from Pool Founder. Included in event notes for tap-to-email on mobile calendars."
},
"address": {
"type": "string",
"description": "Service address. Written to LOCATION so mobile calendars can open Maps."
},
"serviceName": {
"type": "string"
},
"start": {
"type": "string",
"description": "ISO 8601 start with UTC offset or Z. Planned before service; actual arrival after completion."
},
"end": {
"type": "string",
"description": "ISO 8601 end with UTC offset or Z. Planned before service; actual departure after completion."
},
"status": {
"type": "string",
"enum": [
"planned",
"in_progress",
"completed",
"skipped",
"cancelled"
]
},
"timingSource": {
"type": "string",
"enum": [
"planned",
"actual"
]
}
},
"required": [
"jobId",
"routeId",
"serviceDate",
"stopIndex",
"customerName",
"address",
"serviceName",
"start",
"end",
"status",
"timingSource"
],
"additionalProperties": false
}
}
},
"required": [
"snapshot",
"events"
],
"additionalProperties": false
}🔴sync_customer_contacts(snapshot, customers)
Replace the private Pool Pro Florida CardDAV address book from one complete Pool Founder active-customer snapshot. Owner-only. Creates and updates stable vCards and removes stale Pool Founder contacts only after the complete snapshot validates.
입력 스키마
{
"type": "object",
"properties": {
"snapshot": {
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "poolfounder"
},
"complete": {
"type": "boolean",
"const": true
},
"generatedAt": {
"type": "string",
"description": "ISO 8601 snapshot generation time."
},
"customerCount": {
"type": "integer",
"minimum": 0
}
},
"required": [
"source",
"complete",
"generatedAt",
"customerCount"
],
"additionalProperties": false
},
"customers": {
"type": "array",
"maxItems": 5000,
"items": {
"type": "object",
"properties": {
"sourceId": {
"type": "string",
"description": "Permanent Pool Founder customer ID."
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"displayName": {
"type": "string"
},
"company": {
"type": [
"string",
"null"
]
},
"phones": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"label": {
"type": "string"
},
"primary": {
"type": "boolean"
}
},
"required": [
"value"
],
"additionalProperties": false
}
},
"emails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"format": "email"
},
"label": {
"type": "string"
},
"primary": {
"type": "boolean"
}
},
"required": [
"value"
],
"additionalProperties": false
}
},
"locations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sourceId": {
"type": "string"
},
"primary": {
"type": "boolean"
},
"address": {
"type": "object",
"properties": {
"street": {
"type": "string"
},
"street2": {
"type": [
"string",
"null"
]
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"postalCode": {
"type": "string"
},
"country": {
"type": "string"
}
},
"required": [
"street",
"city",
"state",
"postalCode",
"country"
],
"additionalProperties": false
}
},
"required": [
"address"
],
"additionalProperties": false
}
},
"serviceDays": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourceId",
"displayName",
"phones",
"emails",
"locations"
],
"additionalProperties": false
}
}
},
"required": [
"snapshot",
"customers"
],
"additionalProperties": false
}커뮤니티
증거