MCP 服务器

Sauna Guide Quotes

io.github.Ac0AI/sauna-guide-quotes
商业与运营 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Validates and, with explicit approval, submits private home sauna project quote requests.

prepare_sauna_quote_request
Prepare a sauna quote request
Validate a draft sauna project request and identify missing details. This is read-only: it does not store data, send email, select a provider, or share contact details.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['postalCode'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'City where the sauna will be installed.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': 'Email address for personal provider-search updates.'}, 'notes': {'type': 'string', 'maxLength': 2000, 'description': 'Optional project details such as space, access, foundation, or electrical work.'}, 'phone': {'type': 'string', 'maxLength': 30, 'description': 'US phone number for questions about the project.'}, 'state': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'Two-letter US state code for the project.'}, 'budget': {'enum': ['under_5k', '5k_10k', '10k_20k', '20k_plus', 'not_sure'], 'type': 'string', 'description': 'Expected project budget range in US dollars.'}, 'heatType': {'enum': ['traditional_electric', 'wood_fired', 'infrared', 'hybrid_or_unsure'], 'type': 'string', 'description': 'Preferred sauna heat type, or hybrid_or_unsure when not decided.'}, 'timeline': {'enum': ['within_30_days', '1_3_months', '3_6_months', 'researching'], 'type': 'string', 'description': 'Expected purchase or installation timeline.'}, 'postalCode': {'type': 'string', 'pattern': '^\\d{5}(?:-\\d{4})?$', 'description': 'US ZIP code where the sauna will be installed.'}, 'contactName': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Name of the person requesting the quote.'}, 'projectType': {'enum': ['prebuilt', 'custom_indoor', 'custom_outdoor', 'not_sure'], 'type': 'string', 'description': 'Prebuilt, custom indoor, custom outdoor, or not yet decided.'}, 'brandOrModel': {'type': 'string', 'maxLength': 160, 'description': 'Optional sauna brand or model already under consideration.'}, 'electricalReadiness': {'enum': ['240v_ready', '120v_only', 'no_site_power', 'not_sure'], 'type': 'string', 'description': 'Optional description of the electrical power currently available at the site.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'requestId', 'readyToSubmit', 'missingFields', 'reviewUrl', 'contactDetailsSharedWithProvider', 'newsletterOptIn', 'nextStep'], 'properties': {'status': {'type': 'string', 'const': 'draft_ready'}, 'nextStep': {'type': 'string'}, 'requestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'reviewUrl': {'type': 'string', 'format': 'uri'}, 'missingFields': {'type': 'array', 'items': {'type': 'string'}}, 'readyToSubmit': {'type': 'boolean'}, 'newsletterOptIn': {'type': 'boolean', 'const': False}, 'contactDetailsSharedWithProvider': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
submit_sauna_quote_request
Start a personal sauna provider search
Store a complete sauna project request and send confirmation and internal notification emails. Call only after prepare_sauna_quote_request and after the user explicitly approves submission. This never subscribes the user to a newsletter and never shares contact details with providers.
可能执行破坏性操作 可访问外部资源 幂等
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['requestId', 'postalCode', 'state', 'city', 'contactName', 'email', 'phone', 'projectType', 'heatType', 'budget', 'timeline', 'confirmRequest'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'City where the sauna will be installed.'}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': 'Email address for personal provider-search updates.'}, 'notes': {'type': 'string', 'maxLength': 2000, 'description': 'Optional project details such as space, access, foundation, or electrical work.'}, 'phone': {'type': 'string', 'maxLength': 30, 'description': 'US phone number for questions about the project.'}, 'state': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': 'Two-letter US state code for the project.'}, 'budget': {'enum': ['under_5k', '5k_10k', '10k_20k', '20k_plus', 'not_sure'], 'type': 'string', 'description': 'Expected project budget range in US dollars.'}, 'heatType': {'enum': ['traditional_electric', 'wood_fired', 'infrared', 'hybrid_or_unsure'], 'type': 'string', 'description': 'Preferred sauna heat type, or hybrid_or_unsure when not decided.'}, 'timeline': {'enum': ['within_30_days', '1_3_months', '3_6_months', 'researching'], 'type': 'string', 'description': 'Expected purchase or installation timeline.'}, 'requestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'The requestId returned by prepare_sauna_quote_request for this project.'}, 'postalCode': {'type': 'string', 'pattern': '^\\d{5}(?:-\\d{4})?$', 'description': 'US ZIP code where the sauna will be installed.'}, 'contactName': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'Name of the person requesting the quote.'}, 'projectType': {'enum': ['prebuilt', 'custom_indoor', 'custom_outdoor', 'not_sure'], 'type': 'string', 'description': 'Prebuilt, custom indoor, custom outdoor, or not yet decided.'}, 'brandOrModel': {'type': 'string', 'maxLength': 160, 'description': 'Optional sauna brand or model already under consideration.'}, 'confirmRequest': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly approves storing the request and sending confirmation and internal notification emails.'}, 'electricalReadiness': {'enum': ['240v_ready', '120v_only', 'no_site_power', 'not_sure'], 'type': 'string', 'description': 'Optional description of the electrical power currently available at the site.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['status', 'requestId', 'duplicate', 'testMode', 'contactDetailsSharedWithProvider', 'newsletterOptIn', 'updateTiming'], 'properties': {'status': {'enum': ['provider_search_started', 'review_fixture_validated'], 'type': 'string'}, 'testMode': {'type': 'boolean'}, 'duplicate': {'type': 'boolean'}, 'requestId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'updateTiming': {'enum': ['within_one_business_day', 'not_applicable'], 'type': 'string'}, 'newsletterOptIn': {'type': 'boolean', 'const': False}, 'contactDetailsSharedWithProvider': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
已添加
submit_sauna_quote_request
2026年9月17日 12:40
已添加
prepare_sauna_quote_request
2026年9月17日 12:40