Pool Pro Florida

Pool service scheduling and lead management for Pool Pro Florida in St. Lucie County, Florida.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,782Tokens (tool definitions)
~3.1 KBTypical response size
Significant attention impact (2.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "pool-pro-florida": {
      "url": "https://poolproflorida.com/mcp/"
    }
  }
}

Remote endpoints

https://poolproflorida.com/mcp/streamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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
}
🟢get_site_map(query, limit)

Read the current PoolProFlorida.com sitemap index and discover published site pages. Use this to find the correct Pool Pro Florida page before reading current website content. An optional query ranks likely relevant page URLs first.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Optional Pool Pro Florida topic, such as weekly service, green pool, service area, pricing, Pool School, or a neighborhood name."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Maximum number of matching sitemap URLs to return."
    }
  },
  "additionalProperties": false
}
🟢read_site_page(url)

Read the current text of a PoolProFlorida.com page. The page must be present in the current Pool Pro Florida sitemap index. Use this for current published services, pricing, service areas, hours, policies, and page-specific business information.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Exact PoolProFlorida.com URL returned by get_site_map. A site-relative path beginning with / is also accepted."
    }
  },
  "required": [
    "url"
  ],
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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.

Input Schema

{
  "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
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded7 tools