{"serverId":"mcp-registry/com.crashstory/crashstory","tools":[{"name":"compare_attorneys","fixed":{"name":"compare_attorneys","description":"Compare 2-4 attorney profiles side-by-side. Use canonical slugs from search_attorneys. Returns key comparison metrics including ratings, reviews, specialties, practice areas, and known experience fields.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slugs"],"properties":{"slugs":{"type":"array","items":{"type":"string"},"maxItems":4,"minItems":2,"description":"Array of 2-4 attorney slugs to compare"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"compare_review_intelligence","fixed":{"name":"compare_review_intelligence","description":"Compare AI-analyzed review intelligence across 2-5 law firms. Returns side-by-side pain point dimensions, sentiment, trust signals, response quality, and case type distributions for competitive analysis.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["firm_slugs"],"properties":{"firm_slugs":{"type":"array","items":{"type":"string"},"maxItems":5,"minItems":2,"description":"Array of 2-5 firm slugs to compare"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"find_nearby_attorneys","fixed":{"name":"find_nearby_attorneys","description":"Find personal injury attorneys near a geographic location. Uses Haversine distance calculation. Returns attorneys sorted by distance with contact info and ratings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["latitude","longitude"],"properties":{"limit":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Max results (1-50, default 10)"},"latitude":{"type":"number","maximum":90,"minimum":-90,"description":"Latitude of the location"},"longitude":{"type":"number","maximum":180,"minimum":-180,"description":"Longitude of the location"},"radius_miles":{"type":"number","default":10,"maximum":100,"minimum":1,"description":"Search radius in miles (1-100, default 10)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":227,"tokensAfter":227},{"name":"get_attorney_leaderboard","fixed":{"name":"get_attorney_leaderboard","description":"Get the top-ranked personal injury attorneys in Colorado. Returns attorneys ranked by a composite score considering ratings, reviews, experience, and case outcomes.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Number of attorneys to return (1-50, default 20)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":132,"tokensAfter":132},{"name":"get_attorney_profile","fixed":{"name":"get_attorney_profile","description":"Get a detailed attorney profile by slug. Returns full bio, practice areas, reviews, credentials, office location, and AI-analyzed intelligence data when available.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","minLength":1,"description":"Canonical attorney slug from search_attorneys or list_attorney_cities (e.g. \"levine-law-llc-denver\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"get_attorney_reviews","fixed":{"name":"get_attorney_reviews","description":"Get paginated client reviews for a specific attorney. Includes review text, rating, reviewer name, date, and rating distribution breakdown.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"page":{"type":"integer","default":1,"minimum":1,"description":"Page number"},"slug":{"type":"string","minLength":1,"description":"Attorney slug identifier"},"limit":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Reviews per page (1-50, default 20)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":170,"tokensAfter":170},{"name":"get_city_review_leaderboard","fixed":{"name":"get_city_review_leaderboard","description":"Get the review-based leaderboard for attorneys in a specific Colorado city. Ranks attorneys by composite review metrics including velocity, freshness, momentum, and rating.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["city"],"properties":{"city":{"type":"string","minLength":1,"description":"City name (e.g. \"Denver\", \"Boulder\", \"Colorado Springs\")"},"limit":{"type":"integer","default":10,"maximum":50,"minimum":1,"description":"Number of attorneys to return (1-50, default 10)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":174,"tokensAfter":174},{"name":"get_crash_details","fixed":{"name":"get_crash_details","description":"Get full details of a specific Colorado crash by its CUID (Crash Unique Identifier). Returns complete crash record including all vehicles involved, injuries, contributing factors, road conditions, weather, and narrative.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["cuid"],"properties":{"cuid":{"type":"string","minLength":1,"description":"CDOT Crash Unique ID (e.g. \"2024-001234\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":143,"tokensAfter":143},{"name":"get_nearby_crashes","fixed":{"name":"get_nearby_crashes","description":"Get crash records near a specific attorney's office location. This tool is attorney-centered, not a raw lat/lng search. Use a canonical attorney slug from search_attorneys, then this tool will search around that office address.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["attorney_slug"],"properties":{"sort":{"enum":["distance","date"],"type":"string","default":"distance","description":"Sort by distance or date"},"limit":{"type":"integer","default":50,"maximum":200,"minimum":1,"description":"Max results (1-200, default 50)"},"months":{"type":"integer","default":12,"maximum":120,"minimum":1,"description":"Look-back period in months (1-120, default 12)"},"radius_km":{"type":"number","default":3,"maximum":50,"minimum":0.5,"description":"Search radius in km (0.5-50, default 3)"},"attorney_slug":{"type":"string","minLength":1,"description":"Canonical attorney slug from search_attorneys, used as the center point"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":292,"tokensAfter":292},{"name":"get_research_dataset_summary","fixed":{"name":"get_research_dataset_summary","description":"Get the structured summary/report for a CrashStory research dataset. Use this before row-level querying to understand coverage, methodology, findings, and limitations.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"enum":["gas-prices-vs-crashes","gas-prices-vs-fatalities-national"],"type":"string","description":"Dataset slug. Options: gas-prices-vs-crashes, gas-prices-vs-fatalities-national."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":157,"tokensAfter":157},{"name":"get_review_analytics","fixed":{"name":"get_review_analytics","description":"Get review velocity analytics for a specific attorney. Includes review frequency trends, freshness score, momentum indicators, composite score, city percentile rank, and month-over-month time series.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug"],"properties":{"slug":{"type":"string","minLength":1,"description":"Canonical attorney slug from search_attorneys (e.g. \"levine-law-llc-denver\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":147,"tokensAfter":147},{"name":"get_review_intelligence","fixed":{"name":"get_review_intelligence","description":"Get AI-analyzed review intelligence for a law firm. Returns plain-language praise and complaint summaries, 12 consumer pain point dimensions, case type distribution, trust signals, response quality, and highlight reviews.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["firm_slug"],"properties":{"firm_slug":{"type":"string","minLength":1,"description":"Canonical firm slug from search_attorneys (e.g. \"levine-law-llc-denver\")"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":156,"tokensAfter":156},{"name":"list_attorney_cities","fixed":{"name":"list_attorney_cities","description":"List all Colorado cities that have active personal injury attorneys, with the count of attorneys in each city. Useful for discovering which cities have coverage.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":86,"tokensAfter":86},{"name":"list_research_datasets","fixed":{"name":"list_research_datasets","description":"List CrashStory research datasets that can be queried through the MCP server, including gas-price analysis datasets and their available data views.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"query_research_dataset","fixed":{"name":"query_research_dataset","description":"Query rows from CrashStory research datasets. Supports the gas-price analysis datasets with optional state, year, and month filters so agents can perform their own follow-on analysis.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["slug","dataset"],"properties":{"slug":{"enum":["gas-prices-vs-crashes","gas-prices-vs-fatalities-national"],"type":"string","description":"Dataset slug. Options: gas-prices-vs-crashes, gas-prices-vs-fatalities-national."},"sort":{"type":"string","description":"Optional sort field."},"limit":{"type":"integer","default":50,"maximum":1000,"minimum":1,"description":"Maximum rows to return."},"order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order (default desc)."},"state":{"type":"string","description":"Optional two-letter state abbreviation filter, mainly for national datasets."},"dataset":{"enum":["analysis_window","full_window","state_year_panel","state_year_yoy","state_profiles","national_summary"],"type":"string","description":"Data view. Colorado options: analysis_window, full_window. National options: state_year_panel, state_year_yoy, state_profiles, national_summary."},"year_to":{"type":"integer","description":"Optional maximum year filter."},"month_to":{"type":"string","description":"Optional maximum month filter in YYYY-MM format, mainly for the Colorado monthly dataset."},"year_from":{"type":"integer","description":"Optional minimum year filter."},"month_from":{"type":"string","description":"Optional minimum month filter in YYYY-MM format, mainly for the Colorado monthly dataset."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":474,"tokensAfter":474},{"name":"search_attorney_reviews","fixed":{"name":"search_attorney_reviews","description":"Search a law firm's detailed reviews for the most relevant matches to a specific need, case type, injury, sentiment, or pain point. Use this when someone asks for reviews about communication, wrongful death, motorcycle crashes, fees, settlement clarity, or similar client concerns.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["firm_slug"],"properties":{"need":{"type":"string","description":"Natural-language client need or concern, e.g. \"good communication\" or \"fast settlement\""},"limit":{"type":"integer","default":10,"maximum":20,"minimum":1,"description":"Max ranked reviews to return"},"injury":{"type":"string","description":"Injury or harm keyword, e.g. \"back injury\", \"death\", \"concussion\""},"case_type":{"type":"string","description":"Case type, e.g. \"wrongful death\", \"motorcycle\", \"truck accident\""},"dimension":{"type":"string","description":"Specific review-intelligence dimension, e.g. \"Communication\" or \"FeeTransparency\""},"firm_slug":{"type":"string","minLength":1,"description":"Canonical firm slug from search_attorneys or get_review_intelligence"},"sentiment":{"enum":["any","positive","negative","mixed"],"type":"string","default":"any","description":"Filter toward praise, complaints, or mixed reviews"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":384,"tokensAfter":384},{"name":"search_attorneys","fixed":{"name":"search_attorneys","description":"Search for personal injury attorneys in Colorado. Filter by city, county, specialty, rating, and verification status. Returns attorney profiles plus the canonical slug to use with profile, review, and comparison tools.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"city":{"type":"string","description":"City name (e.g. \"Denver\", \"Colorado Springs\")"},"page":{"type":"integer","default":1,"minimum":1,"description":"Page number"},"limit":{"type":"integer","default":20,"maximum":50,"minimum":1,"description":"Max results (1-50)"},"query":{"type":"string","description":"Search by name or firm name"},"county":{"type":"string","description":"Service county name"},"sort_by":{"enum":["relevance","rating","reviews","experience"],"type":"string","default":"relevance","description":"Sort order"},"verified":{"type":"boolean","description":"Only return verified attorneys"},"specialty":{"type":"string","description":"Specialty filter (e.g. \"Car Accident\", \"Wrongful Death\")"},"min_rating":{"type":"number","maximum":5,"minimum":1,"description":"Minimum average rating (1.0-5.0)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":337,"tokensAfter":337},{"name":"search_crashes","fixed":{"name":"search_crashes","description":"Search Colorado crash records by location, date range, crash type, and severity. Database contains 500,000+ CDOT crash records. Returns key fields including location, date, severity, injuries, fatalities, and contributing factors.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Max results (1-100, default 20)"},"date_to":{"type":"string","description":"End date (ISO 8601, e.g. \"2024-12-31\")"},"location":{"type":"string","description":"City, county, or street name (case-insensitive partial match)"},"severity":{"type":"string","description":"Severity: FATAL, SERIOUS_INJURY, MINOR_INJURY, POSSIBLE_INJURY, PROPERTY_DAMAGE_ONLY"},"date_from":{"type":"string","description":"Start date (ISO 8601, e.g. \"2024-01-01\")"},"crash_type":{"type":"string","description":"Crash type: BROADSIDE, REAR_END, SIDESWIPE_SAME_DIRECTION, SIDESWIPE_OPPOSITE_DIRECTION, HEAD_ON, ROLLOVER, FIXED_OBJECT, ANIMAL, PEDESTRIAN, BICYCLE, MOTORCYCLE, OTHER"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":317,"tokensAfter":317}],"toolsChanged":18,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}