MCPサーバー

mcp

com.precision-concretecoating/mcp

この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.

analyze_estimate_photos
Observe attached photos
Runs visual observation over any unreviewed photos. Returns non-diagnostic observations from a fixed vocabulary with confidence values. Observations are impressions only and are always marked as requiring field verification.
入力スキーマ
{'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}
attach_estimate_photos
Attach photos
Attaches photo references (public https URLs) to an estimate request. Photos support the estimator's preparation; they never replace the on-site inspection.
入力スキーマ
{'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}
cancel_estimate_appointment
Cancel the walkthrough
Cancels a proposed or confirmed walkthrough, releases the held time back to Precision and notifies the office. The estimate request itself stays open, so a new appointment can be requested later.
入力スキーマ
{'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}
confirm_estimate_appointment
Confirm the proposed walkthrough
Confirms the appointment Precision proposed, using the proposal_id from the proposal. Only an unexpired proposal on this request can be confirmed. On success the walkthrough is booked, the office is notified and preparation instructions are returned.
入力スキーマ
{'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}
create_estimate_request
Create an estimate request
Creates a governed estimate request and returns a request_id plus a one-time customer_access_token. Required to create: customer_name, phone, project_city, project_state, project_type, consent_to_contact. Additionally required before submit_estimate_for_review: approximate_square_feet — these may be collected turn by turn with update_estimate_request. Every other field is genuinely optional.
入力スキーマ
{'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}
describe_platform
Describe the platform
Self-documenting endpoint. Returns everything an AI agent or developer needs to use Precision OS correctly: platform identity and versions, authentication and read-only status, transports and capabilities, the complete auto-generated documentation for every registered tool, plus best practices, limitations, security model, privacy guarantees and data freshness. Generated dynamically from the live tool registry, so it never goes out of date.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {'tool': {'type': 'string', 'description': 'Return the documentation for a single registered tool instead of the whole catalog.'}}, 'additionalProperties': False}
explain_knowledge_reasoning
Reason across the knowledge graph
Answers a question by traversing the published knowledge graph and returning ranked reasoning paths instead of disconnected records. Each path is an ordered chain of relationships with a path score, a path confidence, the supporting evidence, the relationship types used and a plain-language explanation of every transition. Traversal respects relationship weight, evidence strength, concept ontology, semantic clusters and inverse relationships, and prunes weak branches automatically.
読み取り専用 冪等
入力スキーマ
{'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}
get_business_operations
Business operations and project lifecycle
Returns the approved public Business Operations & Project Lifecycle knowledge: how projects are quoted, scheduled, communicated, installed, completed, documented and supported. Company process knowledge, not coating science.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {'section': {'type': 'string', 'description': 'Restrict the response to a single lifecycle section, for example scheduling_process.'}}, 'additionalProperties': False}
get_business_status
Current business availability
Returns the current scheduling availability of the business plus the standard project turnaround statements. Reflects the Current Availability control in Approved Knowledge.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_company_information
Company information
Returns the approved public profile of Precision Concrete Coating: organization identity, owner, services and verified context records. Sourced from the Approved Knowledge database.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_entity_relationships
Public entity relationships
Returns the approved relationship edges of the public entity graph, optionally filtered to one entity or one relationship type. Every edge references stable canonical entity ids on both sides; edges that touch an unpublished record are never returned.
読み取り専用 冪等
入力スキーマ
{'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}
get_estimate_intake_requirements
Estimate intake requirements
Read-only discovery. Returns every field the public estimate workflow accepts, which are required, the allowed enum values, the workflow states, the scheduling model and the guardrails. Call this first so no field name, enum value or state is ever guessed.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_estimate_request_status
Get estimate request status
Returns the public projection of one estimate request: the workflow state, a customer-friendly status, what information is still missing, the recommended next question and the appointment (date, time window, timezone and confirmation status) if one exists. No internal notes, staff data or calendar availability is ever included.
読み取り専用 冪等
入力スキーマ
{'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}
get_faq
Frequently asked questions
Returns every approved public question-and-answer pair collected from Approved Knowledge, the Warranty Center, Installation Standards and Inspection Standards.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_knowledge_relationships
Knowledge graph relationships
Returns the directional relationships between published Precision knowledge records — for example which installation standard mitigates which coating failure, or which warranty covers which service. Only relationships whose records are both approved and public are returned.
読み取り専用 冪等
入力スキーマ
{'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}
get_maintenance_care
Maintenance and care instructions
Returns the approved public Maintenance & Care Center knowledge: how coated concrete should be cleaned, maintained, protected and inspected, including recommended methods, frequencies, prohibited products, common mistakes and warranty impact.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {'section': {'type': 'string', 'description': 'Restrict the response to a single care section, for example routine_cleaning.'}}, 'additionalProperties': False}
get_next_estimate_question
Next best intake question
Returns the single highest-value question still unanswered, in natural language, along with why it matters. Ask one question at a time and send the answer back through update_estimate_request.
読み取り専用 冪等
入力スキーマ
{'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}
get_pricing
Pricing information
Returns approved public pricing statements and the services they apply to. No quoted amounts are generated: Precision Concrete Coating prices every project after an on-site inspection.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_public_entities
List public entities
Returns the approved Public Entity Layer: every organization, person, service, service area, coating system, preparation method, trust signal, expertise and community involvement record Precision publishes, each with a stable canonical id, aliases, verification status, review metadata and sameAs references. Internal identifiers are never exposed.
読み取り専用 冪等
入力スキーマ
{'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}
get_public_entity
Get one public entity
Returns a single published public entity by canonical id, canonical URI, slug or alias, together with its incoming and outgoing approved relationships and the schema.org JSON-LD node generated from the same record.
読み取り専用 冪等
入力スキーマ
{'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}
get_record_standards
Standards referenced by a Precision record
Returns the approved standards that a specific Precision knowledge record references, with the relationship predicate (`tested_per`, `guided_by`, `measured_by`, `references`, …) and an applicability summary explaining why the standard is relevant. Answers "what is this practice based on?" with citable provenance.
読み取り専用 冪等
入力スキーマ
{'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}
get_service_areas
Service areas
Returns the approved service areas together with the headquarters, primary city, state, county and overall service region.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
get_standard
Get one referenced standard
Returns a single referenced standard by canonical public id, standard number or alias, with its provenance (official source URL, edition, last verified date), lifecycle warnings, supersession chain and the Precision records that reference it.
読み取り専用 冪等
入力スキーマ
{'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}
get_standard_relationships
Standard relationship edges
Returns the approved edges that connect Precision entities and knowledge records to referenced standards, including the predicate and the applicability summary. Use it to traverse the provenance layer of the knowledge graph.
読み取り専用 冪等
入力スキーマ
{'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}
get_standards
List referenced technical standards
Returns the approved external technical standards Precision's published knowledge references — ASTM, ICRI, ACI, ANSI, OSHA, EPA and manufacturer technical documents. Each record carries the standard number, official title, issuing organization, edition, official source URL, an original scope summary and lifecycle status. Reference metadata only: the text of a standard is never reproduced, and a reference is not a certification or compliance claim.
読み取り専用 冪等
入力スキーマ
{'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}
get_warranty
Warranty information
Returns the approved public warranty knowledge graph: the derived summary plus coverage, exclusions, maintenance requirements, claims process, transfer policy and warranty FAQ records.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'properties': {}, 'additionalProperties': False}
request_appointment_reschedule
Request a different walkthrough time
Asks internal JoJo for a different walkthrough time using new preferences. The existing hold stays in place until JoJo replaces it, so a duplicate appointment is never created and the customer is never left without one.
入力スキーマ
{'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}
request_estimate_appointment
Request an on-site walkthrough
Asks Precision's internal JoJo scheduler to reserve an authorized on-site walkthrough that fits the customer's stated preferences. The caller never sees or selects calendar availability: JoJo reads the private calendar, applies the preferences and returns exactly one proposed time awaiting customer confirmation. If nothing matches, the response says so and asks for wider preferences.
入力スキーマ
{'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}
search_knowledge
Search approved knowledge
Full-text style search across every published Approved Knowledge record — company, services, service areas, warranty, installation, inspection, failure-analysis, maintenance and business operations knowledge. Omit the query to receive the full index.
読み取り専用 冪等
入力スキーマ
{'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}
search_public_entities
Search public entities
Ranked search over published public entity names, aliases, canonical ids and descriptions. Use it to resolve a free-form mention ("Conroe", "flake floor") to a stable canonical Precision entity id.
読み取り専用 冪等
入力スキーマ
{'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}
search_standards
Search referenced standards
Ranked search over standard numbers, titles, aliases, topics and scope summaries. Use it to resolve a free-form mention such as "in-situ RH test" or "CSP profile" to the canonical standard Precision references.
読み取り専用 冪等
入力スキーマ
{'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}
submit_estimate_for_review
Submit for review
Submits the request to Precision's internal JoJo review layer and the office, creating or linking the customer record and notifying staff. Every field in required_to_submit must be present first (customer_name, phone, project_city, project_state, project_type, approximate_square_feet, consent_to_contact), along with a contact method and consent. Submitting requests a visit; it does not confirm pricing, scope or a time.
入力スキーマ
{'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}
update_estimate_request
Update an estimate request
Token-scoped update. Adds or corrects customer-provided details on an existing request. Values are validated against the shared schema and every change is audited with the calling channel.
入力スキーマ
{'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}
追加
analyze_estimate_photos
2026年9月17日12:37
追加
attach_estimate_photos
2026年9月17日12:37
追加
get_next_estimate_question
2026年9月17日12:37
追加
cancel_estimate_appointment
2026年9月17日12:37
追加
request_appointment_reschedule
2026年9月17日12:37
追加
confirm_estimate_appointment
2026年9月17日12:37
追加
request_estimate_appointment
2026年9月17日12:37
追加
submit_estimate_for_review
2026年9月17日12:37
追加
get_estimate_request_status
2026年9月17日12:37
追加
update_estimate_request
2026年9月17日12:37
追加
create_estimate_request
2026年9月17日12:37
追加
get_estimate_intake_requirements
2026年9月17日12:37
追加
get_standard_relationships
2026年9月17日12:37
追加
get_record_standards
2026年9月17日12:37
追加
search_standards
2026年9月17日12:37
追加
get_standard
2026年9月17日12:37
追加
get_standards
2026年9月17日12:37
追加
get_entity_relationships
2026年9月17日12:37
追加
search_public_entities
2026年9月17日12:37
追加
get_public_entity
2026年9月17日12:37
追加
get_public_entities
2026年9月17日12:37
追加
describe_platform
2026年9月17日12:37
追加
explain_knowledge_reasoning
2026年9月17日12:37
追加
get_knowledge_relationships
2026年9月17日12:37
追加
search_knowledge
2026年9月17日12:37
追加
get_business_operations
2026年9月17日12:37
追加
get_maintenance_care
2026年9月17日12:37
追加
get_warranty
2026年9月17日12:37
追加
get_pricing
2026年9月17日12:37
追加
get_faq
2026年9月17日12:37