Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"safeguard_count": 0,
"summary": {
"bulk_access_tools": 0,
"capability_distribution": {},
"destructive_tools": 0,
"egress_tools": 0,
"exec_tools": 0,
"high_risk_tools": 0,
"risk_distribution": {
"critical": 0,
"high": 0,
"low": 0,
"medium": 0
},
"secret_tools": 0,
"tool_count": 0
}
},
"latency_ms": null,
"status": "ok"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": false,
"resources": false,
"roots": false,
"sampling": false,
"structured_outputs": false
},
"enabled": [],
"enabled_count": 0,
"initialize_capability_keys": [
"prompts",
"tools"
]
},
"latency_ms": null,
"status": "missing"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"tools_list",
"transport_compliance",
"server_card",
"tool_surface"
],
"criteria": {
"action_safety": true,
"auth_flow": true,
"connector_replay": true,
"initialize": true,
"protocol_version": true,
"remote_transport": true,
"request_association": true,
"server_card": false,
"session_resume": true,
"step_up_auth": true,
"tool_surface": false,
"tools_list": false,
"transport_compliance": false
},
"high_risk_tools": 0,
"tool_count": 0,
"transport": "streamable-http"
},
"latency_ms": null,
"status": "error"
},
"connector_replay_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"determinism_probe": {
"details": {
"reason": "tools_list_unavailable"
},
"latency_ms": null,
"status": "missing"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream",
"mcp-session-id": "ab3651e5-c00e-4582-b3d3-e41609e32aeb",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"prompts": {
"listChanged": true
},
"tools": {
"listChanged": true
}
},
"protocolVersion": "2025-03-26",
"serverInfo": {
"description": "MCP server for Seattle-area home remodeling: 35 tools (cost estimation, weather scheduling, renovation ROI, contractor license verification, financing, project portfolio, neighborhood activity, reviews, permits, address-first parcel lookup, NL project parser, grounded permit Q&A, neighbor permit activity, source-freshness telemetry, material catalog, blog, author bios, procurement codes, service-area coverage, project testimonials, quotes) + 6 workflow prompts (estimate_project, check_permit_needs, plan_renovation, verify_contractor, compare_financing, explore_neighborhood).",
"name": "kolmo-construction",
"version": "1.3.0"
}
}
},
"url": "https://www.kolmo.io/mcp"
},
"latency_ms": 179.31,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"risk_hits": [],
"safe_hits": []
},
"latency_ms": null,
"status": "missing"
},
"oauth_authorization_server": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"oauth_protected_resource": {
"details": {
"error": "Client error '404 Not Found' for url 'https://www.kolmo.io/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://www.kolmo.io/.well-known/oauth-protected-resource"
},
"latency_ms": 186.64,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_identifiers": [
"io.github.arcar-org/arcar-mcp",
"io.github.linxule/vox-mcp",
"ai.borealhost/mcp",
"com.meetvalis/valis-credit-intelligence",
"ai.primeta/primeta",
"io.github.bookyo/nsfw-image-detector",
"io.github.buildingapplications/mcp",
"com.exploit-intel/eip-mcp",
"io.github.Fabric-Protocol/fabric",
"io.github.gogogadgetbytes/planka"
],
"official_peer_count": 10,
"registry_source": "github_topic_registry"
},
"latency_ms": null,
"status": "warning"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"headers": {
"content-type": "text/plain; charset=utf-8",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"url": "https://www.kolmo.io/robots.txt"
},
"latency_ms": 22.27,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://www.kolmo.io/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 400,
"payload": {},
"reason": "not_advertised",
"url": "https://www.kolmo.io/mcp"
},
"latency_ms": 174.53,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"direct_official_match": false,
"drift_fields": [],
"metadata_document_count": 1,
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": null,
"server_card_version": null
},
"latency_ms": null,
"status": "ok"
},
"request_association_probe": {
"details": {
"reason": "no_request_association_capabilities_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resource_read": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"resources_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://www.kolmo.io/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 400,
"payload": {},
"reason": "not_advertised",
"url": "https://www.kolmo.io/mcp"
},
"latency_ms": 189.07,
"status": "missing"
},
"server_card": {
"details": {
"error": "Client error '404 Not Found' for url 'https://www.kolmo.io/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://www.kolmo.io/.well-known/mcp/server-card.json"
},
"latency_ms": 255.24,
"status": "error"
},
"session_resume_probe": {
"details": {
"headers": {
"content-type": "text/event-stream",
"mcp-session-id": "ab3651e5-c00e-4582-b3d3-e41609e32aeb",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 200,
"payload": {
"id": 301,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"description": "Get Kolmo Construction company information: contact details, hours, service area, specializations, and tools.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "get_business_info"
},
{
"description": "List all residential remodeling services with slugs, descriptions, and page URLs. Use `search` to find by keyword.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max results (default 50)",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
},
"search": {
"description": "Filter by keyword in service name or description",
"type": "string"
}
},
"type": "object"
},
"name": "list_services"
},
{
"description": "Get full details for a specific residential service by its slug. If not found, returns a list of available slugs to help you pick the right one.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"slug": {
"description": "The URL slug, e.g. \"kitchen-remodeling\"",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_service"
},
{
"description": "List commercial construction services. Optionally filter by category: office, retail, industrial, hospitality, public. The \"public\" category covers public works and government contracts \u2014 Kolmo is WA State SEDBE-certified (#D700031098), King County SCS-certified (#7259), prevailing wage compliant, and MRSC Small Works Roster eligible (projects under $350K).",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter: office, retail, industrial, hospitality, public",
"type": "string"
},
"limit": {
"description": "Max results (default 50)",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "list_commercial_services"
},
{
"description": "List Kolmo's vendor procurement codes (NAICS, NIGP, UNSPSC) for government and agency portals such as SAM.gov, WA WEBS, OpenGov, MRSC, King County, and City of Seattle. Use this when vetting Kolmo for gov bids or setting up Kolmo as a vendor. Primary NAICS is 236118 (Residential Remodelers); secondary codes cover commercial building and specialty trades (painting, flooring, drywall, windows, roofing, siding, etc.).",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"system": {
"description": "Code system to return (default: all)",
"enum": [
"all",
"naics",
"nigp",
"unspsc"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_procurement_codes"
},
{
"description": "List completed remodeling projects with before/after photos and locations. Filter by category or keyword.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter: kitchen, bathroom, full-home, outdoor, basement",
"type": "string"
},
"limit": {
"description": "Max results (default 20)",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
},
"search": {
"description": "Filter by keyword in project title, description, or location",
"type": "string"
}
},
"type": "object"
},
"name": "list_projects"
},
{
"description": "Get full details for a specific project by its slug, including before/after images and testimonial. If not found, returns a list of available slugs.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"slug": {
"description": "The URL slug of the project",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_project"
},
{
"description": "Get customer testimonials tied to a specific project (by slug or keyword) from the testimonials table. Returns star rating, customer name, project name, and quote text. Use to source social proof or case-study quotes for a particular job. For unfiltered reviews, use list_reviews.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"keyword": {
"description": "Keyword to fuzzy-match against testimonial project name or content (e.g. \"kitchen\", \"deck\")",
"type": "string"
},
"limit": {
"description": "Max results (default 10)",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"minRating": {
"description": "Minimum star rating (1-5, default 1)",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"projectSlug": {
"description": "Project slug to match (e.g. \"ballard-kitchen-remodel\"). Falls back to title match.",
"type": "string"
}
},
"type": "object"
},
"name": "get_project_testimonials"
},
{
"description": "List published blog posts about home remodeling, renovation costs, and construction tips. Filter by tag or author name.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"author": {
"description": "Filter posts by author name, e.g. \"Marcus Reid\"",
"type": "string"
},
"limit": {
"description": "Max posts to return (default 20)",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
},
"tag": {
"description": "Filter posts by tag, e.g. \"flooring\", \"deck\", \"painting\"",
"type": "string"
}
},
"type": "object"
},
"name": "list_blog_posts"
},
{
"description": "Get the full markdown content of a blog post by its slug.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"slug": {
"description": "The URL slug of the blog post",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_blog_post"
},
{
"description": "Enumerate every tag and category used across Kolmo's published blog posts, with post counts. Use this to discover what topics Kolmo publishes on before calling list_blog_posts, or to surface coverage gaps.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "list_blog_tags_and_categories"
},
{
"description": "Submit a contact or quote request to Kolmo Construction on behalf of a user. Set dryRun: true to preview what would be sent without actually submitting.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"dryRun": {
"description": "If true, validate and preview without submitting (default false)",
"type": "boolean"
},
"email": {
"description": "Email address",
"format": "email",
"type": "string"
},
"message": {
"description": "Project description or question",
"minLength": 10,
"type": "string"
},
"name": {
"description": "Full name",
"minLength": 1,
"type": "string"
},
"phone": {
"description": "Phone number (optional)",
"type": "string"
},
"service": {
"description": "Service needed, e.g. \"kitchen remodel\"",
"type": "string"
}
},
"required": [
"name",
"email",
"message"
],
"type": "object"
},
"name": "submit_contact_request"
},
{
"description": "List all 11 supported calculator project types with their required input fields and descriptions. Useful for discovery before calling get_estimate.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "list_project_types"
},
{
"description": "Get available material choices for a project type \u2014 flooring types, paint grades, decking materials, kitchen/bath scope tiers, ADA modifications, etc. Use the returned IDs in the project fields of get_estimate.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"projectType": {
"description": "The project type to list materials for",
"enum": [
"interior-painting",
"deck",
"exterior-painting",
"flooring",
"windows",
"siding",
"fence",
"landscaping",
"kitchen",
"bathroom",
"ada"
],
"type": "string"
}
},
"required": [
"projectType"
],
"type": "object"
},
"name": "get_material_options"
},
{
"description": "Calculate a Seattle-area cost estimate. Returns total, material, labor costs, days, and itemized line items.\n\nMaterial IDs: use get_material_options to get exact IDs, or pass a close match (e.g. \"lvp\", \"composite\", \"cedar\") and the server will resolve it. If ambiguous, the error message lists valid options.\n\nRequired fields by projectType:\n\ninterior-painting: rooms (Array<{id,name,length(ft),width(ft),height(6-30),paintCeiling(bool),paintTrim(bool),doorCount,windowCount,surfaceCondition(\"new-drywall\"|\"good-condition\"|\"poor-condition\"),trimComplexity(\"baseboards-only\"|\"simple-trim\"|\"complex-trim\"),wallTexture(\"smooth\"|\"light-texture\"|\"heavy-texture\"),roomEmpty(bool)}>) | paintQuality (material ID) | paintFinish (\"flat\"|\"eggshell\"|\"satin\"|\"semi-gloss\"|\"gloss\") | includesPrimer (bool) | majorColorChange (bool)\n\nexterior-painting: wallArea(sqft) | trimArea(sqft) | doorCount | paintQuality (material ID) | surfacePrepLevel (\"minimal\"|\"moderate\"|\"extensive\") | includesPrimer (bool) | stories (1-3) | colorChange (bool)\n\nflooring: rooms (Array<{id,name,length(ft),width(ft)}>) | flooringMaterial (material ID, e.g. \"vinyl-plank-lvp\",\"solid-hardwood\",\"ceramic-tile\") | includesUnderlayment (bool) | underlaymentType? (material ID) | includesBaseboard (bool) | baseboardType? (material ID) | baseboardLinearFeet? | includesRemoval (bool) | removalType? (\"carpet\"|\"tile\"|\"hardwood\") | includesSubfloorPrep (bool) | transitionCount\n\ndeck: deckType (\"new\"|\"existing\") | dimensions ({length,width,height(ft above ground)}) | deckingMaterial (material ID, e.g. \"pressure-treated-decking\",\"composite-decking-basic\") | framingMaterial (material ID, e.g. \"pressure-treated-framing-2x6\") | includesRailing (bool) | railingMaterial? (material ID) | railingLinearFeet? | includesStairs (bool) | stairSteps? (0-20) | deckShape (\"rectangle\"|\"l-shape\"|\"angled-corners\"|\"multi-level\") | skirtingType (\"none\"|\"lattice\"|\"matching-board\")\n\nwindows: windows (Array<{id,windowType(e.g.\"double-hung\",\"casement\",\"slider\",\"bay\"),width(inches 12-120),height(inches 12-120),quantity}>) | qualityLevel (\"standard\"|\"premium\"|\"luxury\") | includesTrimWork (bool) | trimMaterial? (material ID) | includesRemoval (bool) | energyEfficient (bool)\n\nsiding: wallArea(sqft) | sidingMaterial (material ID) | includesInsulation (bool) | insulationType? (string) | homeHeight (\"single-story\"|\"two-story\"|\"three-story\") | includesRemoval (bool) | existingSidingType? (string) | trimLinearFeet (number) | soffit (bool) | soffitLinearFeet? (number)\n\nfence: linearFeet | fenceMaterial (material ID) | height (ft, 3-8) | gateCount (number 0-10) | gateWidth? (ft) | style? (e.g. \"privacy\",\"picket\") | includesRemoval (bool) | terrain (\"flat\"|\"sloped\"|\"mixed\") | concreteFootings (bool)\n\nlandscaping: yardArea(sqft, 100\u201350000) | includesIrrigation(bool) | irrigationType?(string) | irrigationZones?(1\u201320) | includesSod(bool) | sodSquareFeet?(defaults to yardArea) | includesMulch(bool) | mulchSquareFeet?(defaults to yardArea) | includesSitePrep(bool) | plants?(Array<{id,plantType,quantity,size(\"small\"|\"medium\"|\"large\")}>) | hardscapeFeatures?(Array<{id,featureType,squareFeet,material}>)\n\nkitchen: kitchenSize(sqft, 40-600) | scope(\"cosmetic\"|\"standard\"|\"full-gut\") | cabinets(\"keep\"|\"reface\"|\"prefab\"|\"semi-custom\"|\"custom\") | countertop(\"keep\"|\"laminate\"|\"butcher-block\"|\"quartz\"|\"granite\"|\"marble\") | appliances(\"keep\"|\"budget\"|\"mid-range\"|\"premium\") | flooring(\"keep\"|\"lvp\"|\"tile\"|\"hardwood\") | backsplash?(bool) | plumbingRelocation?(bool) | electricalUpgrade?(bool) | island?(bool) | lighting?(bool)\n\nbathroom: bathroomType(\"half-bath\"|\"full-bath\"|\"primary-bath\"|\"accessible\") | bathroomSize(sqft, 20-300) | scope(\"cosmetic\"|\"standard\"|\"full-gut\") | showerTub(\"keep\"|\"tub-to-shower\"|\"walk-in-shower\"|\"tub-replacement\"|\"freestanding-tub\") | vanity(\"keep\"|\"budget\"|\"mid-range\"|\"premium\") | tileWork(\"none\"|\"floor-only\"|\"floor-and-shower\"|\"full-tile\") | heatedFloors?(bool) | newLighting?(bool) | ventilation?(bool) | plumbingRelocation?(bool)\n\nada: projectScope(\"single-room\"|\"whole-home\"|\"bathroom-specific\") | modifications({grabBars?,walkInShower?,widerDoorways?,ramp?,nonSlipFlooring?,leverHandles?,raisedToilet?,rollUnderSink?,accessibleCounters?,stairLift?} all bool) | currentCondition(\"minor\"|\"moderate\"|\"major\") | homeStories?(1-3) | doorwayCount?(0-20) | rampLengthFeet?(0-60) | flooringSquareFeet?(0-5000)",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"project": {
"additionalProperties": {},
"description": "Project input fields \u2014 see tool description for required fields per projectType.",
"type": "object"
},
"projectType": {
"description": "The type of project",
"enum": [
"interior-painting",
"deck",
"exterior-painting",
"flooring",
"windows",
"siding",
"fence",
"landscaping",
"kitchen",
"bathroom",
"ada"
],
"type": "string"
}
},
"required": [
"projectType",
"project"
],
"type": "object"
},
"name": "get_estimate"
},
{
"description": "List customer reviews and testimonials for Kolmo Construction. Combines verified Google reviews and on-site testimonials. Filter by minimum star rating.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max results (default 20)",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"minRating": {
"description": "Minimum star rating to include (1-5, default 1)",
"maximum": 5,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
},
"source": {
"description": "Source to query: all (default), google, testimonials",
"enum": [
"all",
"google",
"testimonials"
],
"type": "string"
}
},
"type": "object"
},
"name": "list_reviews"
},
{
"description": "Check whether a residential construction project in King/Pierce/Snohomish counties requires a permit. Returns timeline, fee notes, inspection sequence, required submittals, and official source URL \u2014 preferring jurisdiction-verified rules. Use for \"Do I need a permit to build a deck in Seattle?\" or \"What permits are required for a kitchen remodel in Bellevue?\"",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"location": {
"description": "City or jurisdiction slug, e.g. \"Seattle\", \"Bellevue\", \"Tacoma\", \"king-county-unincorporated\"",
"type": "string"
},
"projectType": {
"description": "Project type \u2014 canonical: kitchen, bathroom, basement, deck, fence, siding, windows, flooring, adu, roofing, hvac, electrical, plumbing, addition",
"type": "string"
}
},
"type": "object"
},
"name": "check_permit_requirements"
},
{
"description": "Enumerate permit rules with full detail \u2014 timeline, fee model, inspection sequence, submittals, required contractor specialties. Filter by jurisdiction slug or keyword. Use for \"what does a Seattle ADU permit require?\" or to list all rules for a jurisdiction.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"jurisdiction": {
"description": "Jurisdiction slug or display name (e.g. \"seattle\", \"bellevue\", \"tacoma\")",
"type": "string"
},
"keyword": {
"description": "Keyword in project type, trigger, thresholds, or notes (e.g. \"deck\", \"adu\", \"egress\")",
"type": "string"
},
"limit": {
"description": "Max results (default 50)",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"onlyAuthoritative": {
"description": "If true, exclude legacy LLM-seeded rows. Default true.",
"type": "boolean"
}
},
"type": "object"
},
"name": "get_permit_rule_details"
},
{
"description": "Cross-reference a WA contractor's L&I license specialty against a permit's required specialties. Returns whether the contractor is qualified to pull/work the permit, with explicit gap callouts (e.g. \"missing electrical specialty 02\"). Combines real-time L&I data with Kolmo's authoritative permit catalog.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contractorQuery": {
"description": "Contractor license number or business name",
"type": "string"
},
"jurisdictionSlug": {
"description": "Permit jurisdiction slug (e.g. \"seattle\", \"tacoma\")",
"type": "string"
},
"projectType": {
"description": "Canonical project type (kitchen, bathroom, basement, deck, fence, siding, windows, flooring, adu, roofing, hvac, electrical, plumbing, addition)",
"type": "string"
}
},
"required": [
"contractorQuery",
"jurisdictionSlug",
"projectType"
],
"type": "object"
},
"name": "match_contractor_to_permit"
},
{
"description": "Estimate the permit fee for a residential project based on jurisdiction, project type, and project valuation. Returns numeric breakdown when the authoritative rule has fee inputs, or qualitative feeNotes (with source URL) when the city publishes fees only as PDFs/spreadsheets. Never fabricates dollar amounts.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"jurisdictionSlug": {
"description": "Jurisdiction slug, e.g. \"seattle\", \"bellevue\", \"tacoma\" (use list_permit_jurisdictions to discover)",
"type": "string"
},
"projectType": {
"description": "Canonical project type",
"enum": [
"kitchen",
"bathroom",
"basement",
"deck",
"fence",
"siding",
"windows",
"flooring",
"adu",
"roofing",
"hvac",
"electrical",
"plumbing",
"addition"
],
"type": "string"
},
"valuationUsd": {
"description": "Project valuation in USD (materials + labor)",
"minimum": 0,
"type": "number"
}
},
"required": [
"jurisdictionSlug",
"projectType",
"valuationUsd"
],
"type": "object"
},
"name": "estimate_permit_fee"
},
{
"description": "List the jurisdictions in Kolmo's permit catalog (King, Pierce, Snohomish counties). Returns portal URLs, contact info, code-cycle metadata, and verification status. Use to discover which cities are supported and where to submit permits.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"county": {
"description": "Filter by county",
"enum": [
"King",
"Pierce",
"Snohomish"
],
"type": "string"
},
"verifiedOnly": {
"description": "If true, only return rows where portal_url is populated (verified from official source). Default false.",
"type": "boolean"
}
},
"type": "object"
},
"name": "list_permit_jurisdictions"
},
{
"description": "Address-first parcel lookup powering the /permits experience. Geocodes a Seattle-area address (King, Pierce, or Snohomish County, WA), resolves the parcel from the county GIS, and returns zoning, setbacks, overlays (shoreline / ECA / flood / historic), lot area, jurisdiction routing, and prior-permit history. Every fact is cited to the city/county source. Use for \"what can be built at 123 Main St Seattle?\" or before calling check_permit_requirements / estimate_permit_fee for a specific parcel.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"address": {
"description": "Full street address (e.g., \"1234 NE 65th St, Seattle, WA 98115\"). Must be in King, Pierce, or Snohomish County, WA.",
"maxLength": 250,
"minLength": 3,
"type": "string"
},
"forceRefresh": {
"description": "Skip the 30-day cache and re-fetch from county GIS + overlay sources. Default false.",
"type": "boolean"
}
},
"required": [
"address"
],
"type": "object"
},
"name": "lookup_parcel_by_address"
},
{
"description": "Parse a homeowner's natural-language project description into structured permit-relevant fields: projectType (kitchen|bathroom|deck|adu|fence|...), areaSqft, heightClass, attached/detached, position, and materials. Returns confidence + a single clarifyingQuestion when the parse is ambiguous. Use this before calling check_permit_requirements / estimate_permit_fee when you only have free text from the homeowner. Backed by Gemini 2.5 Pro with a constrained JSON schema.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cityName": {
"description": "City name (e.g., \"Seattle\", \"Bellevue\")",
"type": "string"
},
"description": {
"description": "Free-text project description (e.g., \"I want to add a 200 sqft deck off my master bedroom on the second floor\")",
"maxLength": 2000,
"minLength": 1,
"type": "string"
},
"jurisdictionSlug": {
"description": "Jurisdiction slug from lookup_parcel_by_address (helps disambiguate region-specific terminology)",
"type": "string"
},
"zoningCode": {
"description": "Zoning code from lookup_parcel_by_address (e.g., \"NR2\", \"LR1\")",
"type": "string"
}
},
"required": [
"description"
],
"type": "object"
},
"name": "parse_project_description"
},
{
"description": "Grounded permit Q&A for a specific Seattle-area address. Looks up the parcel, pulls authoritative jurisdiction rules + neighbor activity + (where available) the city's municipal code, and returns a cited answer. NEVER fabricates fees or thresholds \u2014 falls back to \"I don't have that on file\" when data is missing. Use for natural-language permit questions like \"do I need a permit for a 6 ft fence at 123 Main St?\" or \"what permits does an ADU at this address require?\"",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"address": {
"description": "Full street address in King, Pierce, or Snohomish County, WA",
"maxLength": 250,
"minLength": 3,
"type": "string"
},
"question": {
"description": "A single permit/zoning/setback/overlay question about this parcel",
"maxLength": 1000,
"minLength": 3,
"type": "string"
}
},
"required": [
"address",
"question"
],
"type": "object"
},
"name": "answer_permit_question"
},
{
"description": "Aggregate permit activity within ~1500 ft of a Seattle-area parcel over the last 24 months. Returns total count, breakdown by category, and recent example permits (anonymized \u2014 no addresses). Sourced from city open-data portals (Socrata). Currently supports Seattle; other jurisdictions return jurisdictionSupported=false. Use to gauge neighborhood activity before quoting an unusual project, or to set homeowner expectations on what neighbors have built.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"address": {
"description": "Full street address in King, Pierce, or Snohomish County, WA",
"maxLength": 250,
"minLength": 3,
"type": "string"
}
},
"required": [
"address"
],
"type": "object"
},
"name": "get_neighbor_permit_activity"
},
{
"description": "Source-freshness telemetry for the permit catalog. Returns per-jurisdiction last-verified dates plus the latest results from the weekly source-of-truth snapshot pipeline (HTTP status, change-detection vs prior fetch). Use to answer \"how current is this fee/timeline?\" or to surface confidence in a permit answer. The /permits/data-quality page exposes the same signals.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"jurisdictionSlug": {
"description": "Optional jurisdiction filter (e.g., \"seattle\", \"bellevue\"). When omitted, returns rollup across all jurisdictions.",
"type": "string"
},
"limit": {
"description": "Max snapshots to return (default 50, newest first)",
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "get_permit_data_freshness"
},
{
"description": "Browse the full material catalog with pricing \u2014 flooring types, paint grades, decking materials, siding, windows, fencing, and more. Use category to filter. Returns material IDs compatible with get_estimate.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter by category: painting, flooring, decking, siding, windows, fencing, landscaping",
"type": "string"
},
"limit": {
"description": "Max results (default 50)",
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"offset": {
"description": "Pagination offset (default 0)",
"minimum": 0,
"type": "integer"
},
"search": {
"description": "Filter by keyword in material name or description",
"type": "string"
}
},
"type": "object"
},
"name": "get_material_catalog"
},
{
"description": "Check if upcoming weather in Seattle is suitable for an exterior construction project. Returns a day-by-day forecast with go/no-go recommendations based on project-specific requirements (temperature, rain, wind). Perfect for scheduling exterior painting, decking, roofing, landscaping, siding, or fencing.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"days": {
"description": "Number of days to forecast (1-14, default 7)",
"maximum": 14,
"minimum": 1,
"type": "integer"
},
"projectType": {
"description": "Type of project to check weather suitability for",
"enum": [
"exterior-painting",
"deck",
"roofing",
"landscaping",
"siding",
"fence",
"windows",
"interior"
],
"type": "string"
}
},
"required": [
"projectType"
],
"type": "object"
},
"name": "get_weather_window"
},
{
"description": "See what remodeling projects Kolmo Construction has completed in a specific Seattle neighborhood or city. Returns project counts by category, example projects, and typical project descriptions. Great for hyperlocal social proof \u2014 e.g. \"Has Kolmo worked in Ballard?\" or \"What has Kolmo done in Capitol Hill?\"",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"neighborhood": {
"description": "Seattle neighborhood or city, e.g. \"Ballard\", \"Capitol Hill\", \"Bellevue\", \"Queen Anne\"",
"type": "string"
}
},
"required": [
"neighborhood"
],
"type": "object"
},
"name": "get_neighborhood_project_activity"
},
{
"description": "Check whether Kolmo services a given city, neighborhood, or ZIP in the Seattle / King County area. Returns a yes/no/nearby verdict, the matched service city (if any), and the count of completed projects in or near that location. Use before recommending Kolmo to a lead to confirm coverage.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"location": {
"description": "City, neighborhood, or ZIP to check, e.g. \"Ballard\", \"Bellevue\", \"98105\", \"Tacoma\"",
"type": "string"
}
},
"required": [
"location"
],
"type": "object"
},
"name": "check_service_area_coverage"
},
{
"description": "Get the estimated return on investment (ROI) for a home remodeling project in the Seattle area. Based on Remodeling Magazine Cost vs. Value data for the Pacific Northwest. Helps homeowners decide which projects add the most resale value \u2014 e.g. \"What ROI does a kitchen remodel get in Seattle?\" or \"Which remodel pays off the most?\"",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"estimatedCost": {
"description": "Your estimated project budget in USD. If provided, returns expected resale value added.",
"type": "number"
},
"projectType": {
"description": "Type of project, e.g. \"kitchen\", \"bathroom\", \"deck\", \"windows\", \"siding\", \"ADU\", \"basement\". Omit to see all projects ranked by ROI.",
"type": "string"
}
},
"type": "object"
},
"name": "get_project_roi"
},
{
"description": "Look up any Washington State contractor's license, bond, and insurance status using public L&I data (updated daily). Works for Kolmo or any competitor. Great for verifying a contractor before hiring \u2014 checks if they are licensed, bonded, and insured in WA.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"query": {
"description": "Contractor license number (e.g. \"KOLMOL*753JS\") or business name (e.g. \"Kolmo Construction\")",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "check_contractor_license_status"
},
{
"description": "Get the biography, credentials, expertise areas, and recent articles for a Kolmo Construction blog author. Use this to answer \"who wrote this?\" or to add author context to blog content.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"author": {
"description": "Author name or slug, e.g. \"Marcus Reid\", \"marcus-reid\", \"Emily Chen\", \"emily-chen\"",
"type": "string"
}
},
"required": [
"author"
],
"type": "object"
},
"name": "get_author_bio"
},
{
"description": "Search across all Kolmo content \u2014 services, projects, and blog posts \u2014 with a single keyword query. Returns ranked results grouped by type. Use this instead of calling list_services + list_projects + list_blog_posts separately.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Max results per type (default 5)",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Search keyword or phrase, e.g. \"deck Seattle\", \"kitchen cost\", \"permit\"",
"minLength": 1,
"type": "string"
},
"types": {
"description": "Content types to include (default: all three)",
"items": {
"enum": [
"services",
"projects",
"blog"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_content"
},
{
"description": "Get home improvement financing options for a Seattle remodeling project. Returns loan types, estimated monthly payments, typical terms, and eligibility notes. Helps homeowners understand how to pay for a remodel \u2014 HELOC, home improvement loans, cash-out refinance, and contractor payment plans.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"creditProfile": {
"description": "Approximate credit profile: excellent (750+), good (680-749), fair (620-679). Default: good",
"enum": [
"excellent",
"good",
"fair"
],
"type": "string"
},
"projectBudget": {
"description": "Estimated project cost in USD",
"minimum": 1000,
"type": "number"
}
},
"required": [
"projectBudget"
],
"type": "object"
},
"name": "get_financing_options"
}
]
}
},
"requested_protocol_version": "2025-03-26",
"resumed": true,
"session_id_present": true,
"transport": "streamable-http",
"url": "https://www.kolmo.io/mcp"
},
"latency_ms": 238.36,
"status": "ok"
},
"step_up_auth_probe": {
"details": {
"auth_required_checks": [],
"broad_scopes": [],
"challenge_headers": [],
"minimal_scope_documented": false,
"oauth_present": false,
"scope_specificity_ratio": 0.0,
"step_up_signals": [],
"supported_scopes": []
},
"latency_ms": null,
"status": "missing"
},
"tool_snapshot_probe": {
"details": {
"reason": "no_tools"
},
"latency_ms": null,
"status": "missing"
},
"tools_list": {
"details": {
"error": "Client error '400 Bad Request' for url 'https://www.kolmo.io/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 400,
"payload": {},
"url": "https://www.kolmo.io/mcp"
},
"latency_ms": 188.19,
"status": "error"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": 204,
"expired_session_error": null,
"expired_session_status_code": 400,
"issues": [
"missing_protocol_header",
"expired_session_not_404"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": true,
"transport": "streamable-http"
},
"latency_ms": 160.38,
"status": "error"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": null
},
"initialize_capability_keys": [
"prompts",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 400,
"probe_status": "missing"
}
},
"latency_ms": 89.26,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://www.kolmo.io/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://www.kolmo.io/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"server_card": {
"error": "Client error '404 Not Found' for url 'https://www.kolmo.io/.well-known/mcp/server-card.json'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://www.kolmo.io/.well-known/mcp/server-card.json"
},
"tools_list": {
"error": "Client error '400 Bad Request' for url 'https://www.kolmo.io/mcp'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400",
"headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"http_status": 400,
"payload": {},
"url": "https://www.kolmo.io/mcp"
},
"transport_compliance_probe": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"ratelimit-limit": "300",
"ratelimit-remaining": "299",
"ratelimit-reset": "900",
"strict-transport-security": "max-age=31536000; includeSubDomains"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": 204,
"expired_session_error": null,
"expired_session_status_code": 400,
"issues": [
"missing_protocol_header",
"expired_session_not_404"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": true,
"transport": "streamable-http"
}
},
"remote_url": "https://www.kolmo.io/mcp",
"server_card_payload": null,
"server_identifier": "github-kolmo-construction/kolmo-mcp-server"
}