mcp
Ce que fait ce MCP
Provides public company and service information, knowledge-base search, standards and warranty references, estimate intake, photo review, scheduling, and appointment management for a concrete-coating business.
Outils
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token'], 'properties': {'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'photos'], 'properties': {'fields': {'type': 'object', 'properties': {'city': {'type': 'string', 'description': 'City'}, 'email': {'type': 'string', 'description': 'Email'}, 'phone': {'type': 'string', 'description': 'Phone'}, 'state': {'type': 'string', 'description': 'State'}, 'width': {'type': 'number', 'description': 'Width (ft)'}, 'length': {'type': 'number', 'description': 'Length (ft)'}, 'postal_code': {'type': 'string', 'description': 'ZIP code'}, 'concrete_age': {'type': 'string', 'description': 'Concrete age'}, 'project_type': {'enum': ['garage_floor', 'patio', 'driveway', 'basement', 'commercial_floor', 'warehouse', 'shop_floor', 'pool_deck', 'walkway', 'other'], 'type': 'string', 'description': 'Project type'}, 'customer_goal': {'type': 'string', 'description': 'Customer goal'}, 'customer_name': {'type': 'string', 'description': 'Name'}, 'cracks_present': {'type': 'boolean', 'description': 'Cracks present'}, 'customer_notes': {'type': 'string', 'description': 'Notes'}, 'current_surface': {'enum': ['bare_concrete', 'painted_concrete', 'coated_concrete', 'tile', 'carpet', 'other', 'unknown'], 'type': 'string', 'description': 'Current surface'}, 'number_of_areas': {'type': 'integer', 'description': 'Number of areas'}, 'project_subtype': {'type': 'string', 'description': 'Project detail'}, 'service_address': {'type': 'string', 'description': 'Service address'}, 'desired_timeline': {'type': 'string', 'description': 'Desired timeline'}, 'existing_coating': {'type': 'boolean', 'description': 'Existing coating present'}, 'moisture_concern': {'type': 'boolean', 'description': 'Moisture concern'}, 'preferred_finish': {'type': 'string', 'description': 'Preferred finish'}, 'spalling_present': {'type': 'boolean', 'description': 'Spalling or pitting'}, 'access_conditions': {'type': 'string', 'description': 'Access conditions'}, 'crack_description': {'type': 'string', 'description': 'Crack description'}, 'occupied_or_empty': {'enum': ['empty', 'partially_occupied', 'fully_occupied'], 'type': 'string', 'description': 'Occupied or empty'}, 'budget_range_optional': {'type': 'string', 'description': 'Budget range (optional)'}, 'existing_coating_type': {'type': 'string', 'description': 'Existing coating type'}, 'desired_color_or_flake': {'type': 'string', 'description': 'Desired color or flake'}, 'oil_or_grease_staining': {'type': 'boolean', 'description': 'Oil or grease staining'}, 'approximate_square_feet': {'type': 'number', 'description': 'Approximate square feet'}, 'coating_removal_required': {'type': 'boolean', 'description': 'Removal likely required'}, 'preferred_contact_method': {'enum': ['phone', 'text', 'email'], 'type': 'string', 'description': 'Preferred contact method'}, 'tile_or_adhesive_present': {'type': 'boolean', 'description': 'Tile or adhesive present'}, 'residential_or_commercial': {'enum': ['residential', 'commercial'], 'type': 'string', 'description': 'Residential or commercial'}}, 'description': 'Legacy internal-schema field bag. Prefer the top-level public fields; unknown keys are rejected. Never include pricing.', 'additionalProperties': False}, 'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['file_reference'], 'properties': {'note': {'type': 'string', 'description': 'What the customer said about this photo.'}, 'file_reference': {'type': 'string', 'description': 'A public https image URL.'}}}, 'maxItems': 12, 'description': 'Photo references to attach.'}, 'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'customer_authorized_cancellation'], 'properties': {'reason': {'type': 'string', 'description': 'Why the customer is cancelling.'}, 'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}, 'customer_authorized_cancellation': {'type': 'boolean', 'description': 'Must be true. The customer asked to cancel.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'proposal_id', 'customer_confirmation'], 'properties': {'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'proposal_id': {'type': 'string', 'description': 'The proposal_id returned with the proposed appointment.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}, 'customer_confirmation': {'type': 'boolean', 'description': 'Must be true. The customer accepted the proposed time.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['customer_name', 'phone', 'project_city', 'project_state', 'project_type', 'consent_to_contact'], 'properties': {'email': {'type': 'string', 'description': 'Email'}, 'phone': {'type': 'string', 'description': 'Phone'}, 'source': {'enum': ['ai_assistant', 'website', 'developer_api'], 'type': 'string', 'description': 'Source'}, 'timezone': {'type': 'string', 'description': 'Timezone (IANA)'}, 'test_mode': {'type': 'boolean', 'description': 'Diagnostics only. Marks the request as a synthetic smoke-test record: it is excluded from reporting, never holds real calendar availability and never notifies the office. Never set this for a real customer.'}, 'postal_code': {'type': 'string', 'description': 'ZIP code'}, 'test_run_id': {'type': 'string', 'format': 'uuid', 'description': 'Diagnostics only. Correlates a synthetic test record with one automated smoke-test run. Ignored unless test_mode is true.'}, 'project_city': {'type': 'string', 'description': 'Project city'}, 'project_type': {'enum': ['garage', 'patio', 'commercial', 'driveway', 'pool_deck', 'warehouse', 'showroom', 'other'], 'type': 'string', 'description': 'Project type'}, 'customer_name': {'type': 'string', 'description': 'Customer name'}, 'project_state': {'type': 'string', 'description': 'Project state'}, 'customer_notes': {'type': 'string', 'description': 'Customer notes'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'project_address': {'type': 'string', 'description': 'Project street address'}, 'existing_surface': {'enum': ['bare_concrete', 'paint', 'epoxy', 'tile', 'adhesive', 'unknown'], 'type': 'string', 'description': 'Existing surface'}, 'project_timeline': {'type': 'string', 'description': 'Project timeline'}, 'requested_system': {'enum': ['full_flake', 'metallic', 'solid_color', 'commercial_system', 'urethane_cement', 'unsure'], 'type': 'string', 'description': 'Requested coating system'}, 'surface_condition': {'type': 'string', 'description': 'Surface condition'}, 'consent_to_contact': {'type': 'boolean', 'description': 'Consent to be contacted'}, 'customer_statement': {'type': 'string', 'description': "The customer's own words for this step, stored verbatim as the evidence trail."}, 'external_reference_id': {'type': 'string', 'description': 'External reference id'}, 'scheduling_preferences': {'type': 'object', 'properties': {'notes': {'type': 'string', 'description': 'Access notes, gate codes to expect, pets, parking — anything the estimator should know.'}, 'latest_date': {'type': 'string', 'description': 'Latest acceptable date (YYYY-MM-DD).'}, 'earliest_date': {'type': 'string', 'description': 'Earliest acceptable date (YYYY-MM-DD).'}, 'preferred_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'description': 'Specific acceptable dates.'}, 'unavailable_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}}, 'preferred_dayparts': {'type': 'array', 'items': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string'}}, 'preferred_end_time': {'type': 'string', 'description': 'Latest local end time (HH:MM, 24h).'}, 'preferred_weekdays': {'type': 'array', 'items': {'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}}, 'preferred_start_time': {'type': 'string', 'description': 'Earliest local start time (HH:MM, 24h).'}}, 'description': "What the customer prefers. Precision's internal JoJo scheduler decides the actual time from authorized calendar availability — no external caller ever reads or writes the calendar directly.", 'additionalProperties': False}, 'approximate_square_feet': {'type': 'integer', 'description': 'Approximate square feet'}, 'preferred_contact_method': {'enum': ['phone', 'text', 'email'], 'type': 'string', 'description': 'Preferred contact method'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'tool': {'type': 'string', 'description': 'Return the documentation for a single registered tool instead of the whole catalog.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'goal': {'type': 'string', 'description': 'Optional destination topic. Paths that reach it rank higher.'}, 'subject': {'type': 'string', 'description': 'Optional explicit starting record title.'}, 'question': {'type': 'string', 'description': 'The question to reason about. Used to choose starting records and rank paths.'}, 'max_depth': {'type': 'integer', 'description': 'Maximum hops per reasoning path, 1–6. Default 4.'}, 'max_paths': {'type': 'integer', 'description': 'Maximum ranked paths returned, 1–12. Default 5.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'section': {'type': 'string', 'description': 'Restrict the response to a single lifecycle section, for example scheduling_process.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'entity': {'type': 'string', 'maxLength': 200, 'description': 'Canonical public id, slug or alias to centre the graph on.'}, 'relationship': {'type': 'string', 'maxLength': 100, 'description': 'Restrict the result to one relationship type.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token'], 'properties': {'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'subject': {'type': 'string', 'description': 'Filter to relationships whose subject or object matches this text.'}, 'relationship': {'type': 'string', 'description': 'Filter to a single relationship type, e.g. mitigates, governed_by, verifies.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'section': {'type': 'string', 'description': 'Restrict the response to a single care section, for example routine_cleaning.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token'], 'properties': {'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of entities to return (1-200, default 50).'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Zero-based offset for pagination.'}, 'entity_type': {'enum': ['organization', 'person', 'service', 'service_area', 'coating_system', 'preparation_method', 'trust_signal', 'expertise', 'community_involvement', 'standard', 'manufacturer_standard', 'manufacturer', 'product', 'manufacturer_document', 'failure_mode', 'warranty_term', 'maintenance_practice', 'material'], 'type': 'string', 'description': 'Restrict the result to one public entity type.'}, 'verification_status': {'enum': ['verified', 'needs_review', 'unverified'], 'type': 'string', 'description': 'Restrict the result to a verification status. Published entities are always `verified`.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Canonical public id (`pcc:service/garage-floor-coatings`), canonical URI, slug or alias.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['record'], 'properties': {'record': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Record slug or canonical public entity id (`pcc:preparation-method/diamond-grinding`).'}, 'record_kind': {'type': 'string', 'maxLength': 60, 'description': 'Optional record family filter (`installation_standard`, `inspection_standard`, `failure_analysis`, `warranty_term`, `maintenance_record`, `knowledge_entry`).'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Canonical public id (`pcc:standard/astm-f2170`), standard number (`ASTM F2170`) or alias.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'standard': {'type': 'string', 'maxLength': 200, 'description': 'Canonical standard id or standard number to centre on.'}, 'predicate': {'type': 'string', 'maxLength': 60, 'description': 'Restrict to one predicate.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of standards to return (1-200, default 50).'}, 'topic': {'type': 'string', 'maxLength': 100, 'description': 'Restrict to standards tagged with a topic such as `moisture`, `surface-preparation`, `adhesion`, `safety`.'}, 'lifecycle': {'enum': ['active', 'superseded', 'withdrawn'], 'type': 'string', 'description': 'Restrict to a lifecycle state.'}, 'organization': {'type': 'string', 'maxLength': 100, 'description': 'Restrict to one issuing organization (for example `ASTM`, `ICRI`, `OSHA`).'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'customer_authorized_reschedule'], 'properties': {'reason': {'type': 'string', 'description': 'Why the customer needs a different time.'}, 'timezone': {'type': 'string', 'description': 'IANA timezone for all appointment dates and times, e.g. America/Chicago. Defaults to America/Chicago.'}, 'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}, 'new_scheduling_preferences': {'type': 'object', 'properties': {'notes': {'type': 'string', 'description': 'Access notes, gate codes to expect, pets, parking — anything the estimator should know.'}, 'latest_date': {'type': 'string', 'description': 'Latest acceptable date (YYYY-MM-DD).'}, 'earliest_date': {'type': 'string', 'description': 'Earliest acceptable date (YYYY-MM-DD).'}, 'preferred_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'description': 'Specific acceptable dates.'}, 'unavailable_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}}, 'preferred_dayparts': {'type': 'array', 'items': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string'}}, 'preferred_end_time': {'type': 'string', 'description': 'Latest local end time (HH:MM, 24h).'}, 'preferred_weekdays': {'type': 'array', 'items': {'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}}, 'preferred_start_time': {'type': 'string', 'description': 'Earliest local start time (HH:MM, 24h).'}}, 'description': "What the customer prefers. Precision's internal JoJo scheduler decides the actual time from authorized calendar availability — no external caller ever reads or writes the calendar directly.", 'additionalProperties': False}, 'customer_authorized_reschedule': {'type': 'boolean', 'description': 'Must be true. The customer asked to reschedule.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'customer_authorized_scheduling'], 'properties': {'timezone': {'type': 'string', 'description': 'IANA timezone for all appointment dates and times, e.g. America/Chicago. Defaults to America/Chicago.'}, 'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}, 'scheduling_preferences': {'type': 'object', 'properties': {'notes': {'type': 'string', 'description': 'Access notes, gate codes to expect, pets, parking — anything the estimator should know.'}, 'latest_date': {'type': 'string', 'description': 'Latest acceptable date (YYYY-MM-DD).'}, 'earliest_date': {'type': 'string', 'description': 'Earliest acceptable date (YYYY-MM-DD).'}, 'preferred_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'description': 'Specific acceptable dates.'}, 'unavailable_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}}, 'preferred_dayparts': {'type': 'array', 'items': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string'}}, 'preferred_end_time': {'type': 'string', 'description': 'Latest local end time (HH:MM, 24h).'}, 'preferred_weekdays': {'type': 'array', 'items': {'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}}, 'preferred_start_time': {'type': 'string', 'description': 'Earliest local start time (HH:MM, 24h).'}}, 'description': "What the customer prefers. Precision's internal JoJo scheduler decides the actual time from authorized calendar availability — no external caller ever reads or writes the calendar directly.", 'additionalProperties': False}, 'customer_authorized_scheduling': {'type': 'boolean', 'description': 'Must be true. Confirms the customer explicitly asked for an appointment to be scheduled.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'properties': {'q': {'type': 'string', 'description': 'Search terms. When omitted the complete published record index is returned.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of results (1–50). Defaults to 10.'}, 'module': {'enum': ['company', 'services', 'service_areas', 'approved_knowledge', 'warranty', 'installation_standards', 'inspection_standards', 'failure_analysis', 'maintenance_care', 'business_operations'], 'type': 'string', 'description': 'Restrict results to a single knowledge module.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Search text.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum number of matches (1-50, default 10).'}, 'entity_type': {'enum': ['organization', 'person', 'service', 'service_area', 'coating_system', 'preparation_method', 'trust_signal', 'expertise', 'community_involvement', 'standard', 'manufacturer_standard', 'manufacturer', 'product', 'manufacturer_document', 'failure_mode', 'warranty_term', 'maintenance_practice', 'material'], 'type': 'string', 'description': 'Restrict the search to one public entity type.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Search text.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Maximum matches (1-50, default 10).'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token'], 'properties': {'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_statement': {'type': 'string', 'description': "The customer's own words for this step, stored verbatim as the evidence trail."}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', 'required': ['request_id', 'customer_access_token', 'updates'], 'properties': {'updates': {'type': 'object', 'properties': {'email': {'type': 'string', 'description': 'Email'}, 'phone': {'type': 'string', 'description': 'Phone'}, 'timezone': {'type': 'string', 'description': 'Timezone (IANA)'}, 'postal_code': {'type': 'string', 'description': 'ZIP code'}, 'project_city': {'type': 'string', 'description': 'Project city'}, 'project_type': {'enum': ['garage', 'patio', 'commercial', 'driveway', 'pool_deck', 'warehouse', 'showroom', 'other'], 'type': 'string', 'description': 'Project type'}, 'customer_name': {'type': 'string', 'description': 'Customer name'}, 'project_state': {'type': 'string', 'description': 'Project state'}, 'customer_notes': {'type': 'string', 'description': 'Customer notes'}, 'project_address': {'type': 'string', 'description': 'Project street address'}, 'existing_surface': {'enum': ['bare_concrete', 'paint', 'epoxy', 'tile', 'adhesive', 'unknown'], 'type': 'string', 'description': 'Existing surface'}, 'project_timeline': {'type': 'string', 'description': 'Project timeline'}, 'requested_system': {'enum': ['full_flake', 'metallic', 'solid_color', 'commercial_system', 'urethane_cement', 'unsure'], 'type': 'string', 'description': 'Requested coating system'}, 'surface_condition': {'type': 'string', 'description': 'Surface condition'}, 'consent_to_contact': {'type': 'boolean', 'description': 'Consent to be contacted'}, 'approximate_square_feet': {'type': 'integer', 'description': 'Approximate square feet'}, 'preferred_contact_method': {'enum': ['phone', 'text', 'email'], 'type': 'string', 'description': 'Preferred contact method'}}, 'description': 'The fields to change.', 'additionalProperties': False}, 'request_id': {'type': 'string', 'description': 'The request_id returned by create_estimate_request.'}, 'idempotency_key': {'type': 'string', 'description': 'Optional client-supplied key. Repeating a call with the same key never duplicates work.'}, 'customer_statement': {'type': 'string', 'description': "The customer's own words for this step, stored verbatim as the evidence trail."}, 'customer_access_token': {'type': 'string', 'description': 'The one-time customer_access_token returned by create_estimate_request. Required with request_id for every follow-up call. Stored hashed at rest and never re-issued.'}, 'scheduling_preferences': {'type': 'object', 'properties': {'notes': {'type': 'string', 'description': 'Access notes, gate codes to expect, pets, parking — anything the estimator should know.'}, 'latest_date': {'type': 'string', 'description': 'Latest acceptable date (YYYY-MM-DD).'}, 'earliest_date': {'type': 'string', 'description': 'Earliest acceptable date (YYYY-MM-DD).'}, 'preferred_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'description': 'Specific acceptable dates.'}, 'unavailable_dates': {'type': 'array', 'items': {'type': 'string', 'description': 'YYYY-MM-DD'}}, 'preferred_dayparts': {'type': 'array', 'items': {'enum': ['morning', 'afternoon', 'evening'], 'type': 'string'}}, 'preferred_end_time': {'type': 'string', 'description': 'Latest local end time (HH:MM, 24h).'}, 'preferred_weekdays': {'type': 'array', 'items': {'enum': ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'], 'type': 'string'}}, 'preferred_start_time': {'type': 'string', 'description': 'Earliest local start time (HH:MM, 24h).'}}, 'description': "What the customer prefers. Precision's internal JoJo scheduler decides the actual time from authorized calendar availability — no external caller ever reads or writes the calendar directly.", 'additionalProperties': False}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
mcp
Manages Nestr workspaces, roles, circles, tensions, governance proposals, comments, daily plans, graph relationships, agents, and…
ALM X++ MCP Server
Supports D365 Finance and Operations development with X++ and AOT search, code analysis, Azure DevOps workflows, telemetry querie…
StackFast FractWin Expert Brain
Provides governed sales, negotiation, strategy, operations, CRM, estimation, artifact, and risk-management workflows with human a…
Vendor Signals
Tracks changes in vendor documentation and changelogs to provide account and vendor signals.
Tiflux
Manages Tiflux help-desk operations including tickets, replies, internal notes, clients, assignments, SLAs, time entries, contrac…
Decision Log
Records append-only decisions with provenance, supersession tracking, retrieval, and audited actions.
happyfox
Manages HappyFox support tickets, contacts, replies, private notes, assignments, reporting, and customer-facing or internal knowl…