此 MCP 可以做什么
Provides measured running courses, route and terrain data, activity metrics, training history, workout detection, and planned training blocks.
工具
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'Run id from ourpr_list_runs.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['detection'], 'properties': {'detection': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The course's slug, exactly as ourpr_list_courses returns it. Example: 'boston-marathon'."}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'place', 'alternate_names', 'kind', 'course_type', 'distance_mi', 'one_way_mi', 'next_race_date', 'days_out', 'climb_ft', 'descent_ft', 'min_ft', 'max_ft', 'steepest_pct', 'measured_mi', 'provenance', 'sources', 'recorded_on', 'main_ways', 'through', 'photo_count', 'counts', 'page_url', 'gpx_url'], 'properties': {'kind': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'place': {'type': ['string', 'null']}, 'counts': {'type': 'object', 'required': ['named_climbs_and_descents', 'amenities', 'mile_markers', 'profile_points'], 'properties': {'amenities': {'type': 'number'}, 'mile_markers': {'type': 'number'}, 'profile_points': {'type': 'number'}, 'named_climbs_and_descents': {'type': 'number'}}, 'additionalProperties': False}, 'max_ft': {'type': ['number', 'null']}, 'min_ft': {'type': ['number', 'null']}, 'gpx_url': {'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'value'], 'properties': {'label': {'type': 'string'}, 'value': {'type': 'string'}}, 'additionalProperties': False}}, 'through': {'type': 'array', 'items': {'type': 'string'}}, 'climb_ft': {'type': ['number', 'null']}, 'days_out': {'type': ['number', 'null']}, 'page_url': {'type': 'string'}, 'main_ways': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'mi', 'share_pct'], 'properties': {'mi': {'type': 'number'}, 'name': {'type': 'string'}, 'share_pct': {'type': 'number'}}, 'additionalProperties': False}}, 'descent_ft': {'type': ['number', 'null']}, 'one_way_mi': {'type': ['number', 'null']}, 'provenance': {'type': ['string', 'null']}, 'course_type': {'type': 'string'}, 'distance_mi': {'type': 'number'}, 'measured_mi': {'type': ['number', 'null']}, 'photo_count': {'type': 'number'}, 'recorded_on': {'type': ['string', 'null']}, 'steepest_pct': {'type': ['number', 'null']}, 'next_race_date': {'type': ['string', 'null']}, 'alternate_names': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The course's slug."}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'distance_mi', 'source', 'is_race_aid_station_list', 'water_count', 'toilet_count', 'longest_gap_without_water_mi', 'longest_gap_from_mi', 'longest_gap_to_mi', 'amenities', 'page_url'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'source': {'type': 'string'}, 'page_url': {'type': 'string'}, 'amenities': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'mi', 'lat', 'lng'], 'properties': {'mi': {'type': 'number'}, 'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'kind': {'type': 'string'}}, 'additionalProperties': False}}, 'distance_mi': {'type': 'number'}, 'water_count': {'type': 'number'}, 'toilet_count': {'type': 'number'}, 'longest_gap_to_mi': {'type': ['number', 'null']}, 'longest_gap_from_mi': {'type': ['number', 'null']}, 'is_race_aid_station_list': {'type': 'boolean', 'description': 'Always false. These are public amenities, not race aid stations.'}, 'longest_gap_without_water_mi': {'type': ['number', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The course's slug."}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}, 'include_polyline': {'type': 'boolean', 'default': False, 'description': 'Add the encoded centerline. It runs to about 9,800 characters and only helps if you will decode it. Leave it off and hand over `gpx_url` instead.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'course_type', 'distance_mi', 'start', 'finish', 'bbox', 'mile_markers', 'streets_in_order', 'polyline', 'gpx_url', 'page_url'], 'properties': {'bbox': {'anyOf': [{'type': 'object', 'required': ['min_lat', 'min_lng', 'max_lat', 'max_lng'], 'properties': {'max_lat': {'type': 'number'}, 'max_lng': {'type': 'number'}, 'min_lat': {'type': 'number'}, 'min_lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'start': {'anyOf': [{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'finish': {'anyOf': [{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'gpx_url': {'type': 'string'}, 'page_url': {'type': 'string'}, 'polyline': {'type': ['string', 'null']}, 'course_type': {'type': 'string'}, 'distance_mi': {'type': 'number'}, 'mile_markers': {'type': 'array', 'items': {'type': 'object', 'required': ['mile', 'lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'mile': {'type': 'number'}}, 'additionalProperties': False}}, 'streets_in_order': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'from_mi', 'to_mi'], 'properties': {'name': {'type': 'string'}, 'to_mi': {'type': 'number'}, 'from_mi': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The course's slug."}, 'points': {'type': 'integer', 'default': 40, 'maximum': 200, 'minimum': 2, 'description': 'How many elevation samples to return. The stored profile holds up to 4,873 points, which no agent should read whole. 40 describes the shape; 200 is close to the source.'}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'distance_mi', 'climb_ft', 'descent_ft', 'min_ft', 'max_ft', 'steepest_pct', 'climb_ft_per_mi', 'elevation_source', 'profile_points_stored', 'profile', 'named_sections', 'page_url'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'max_ft': {'type': ['number', 'null']}, 'min_ft': {'type': ['number', 'null']}, 'profile': {'type': 'array', 'items': {'type': 'object', 'required': ['mi', 'ft'], 'properties': {'ft': {'type': 'number'}, 'mi': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Sampled elevation. The highest and lowest points are kept.'}, 'climb_ft': {'type': ['number', 'null']}, 'page_url': {'type': 'string'}, 'descent_ft': {'type': ['number', 'null']}, 'distance_mi': {'type': 'number'}, 'steepest_pct': {'type': ['number', 'null']}, 'named_sections': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'name', 'from_mi', 'to_mi', 'net_ft', 'grade_pct'], 'properties': {'kind': {'type': 'string'}, 'name': {'type': 'string'}, 'to_mi': {'type': 'number'}, 'net_ft': {'type': 'number'}, 'from_mi': {'type': 'number'}, 'grade_pct': {'type': 'number'}}, 'additionalProperties': False}}, 'climb_ft_per_mi': {'type': ['number', 'null']}, 'elevation_source': {'type': 'string'}, 'profile_points_stored': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'Run id from ourpr_list_runs.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['run', 'splits'], 'properties': {'run': {'type': 'object', 'additionalProperties': {}}, 'splits': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The trail system's slug. Example: 'trinity-trails'."}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['slug', 'name', 'region', 'total_mi', 'mapped_ways', 'source', 'bbox', 'page_url'], 'properties': {'bbox': {'anyOf': [{'type': 'object', 'required': ['min_lat', 'min_lng', 'max_lat', 'max_lng'], 'properties': {'max_lat': {'type': 'number'}, 'max_lng': {'type': 'number'}, 'min_lat': {'type': 'number'}, 'min_lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'region': {'type': ['string', 'null']}, 'source': {'type': ['string', 'null']}, 'page_url': {'type': 'string'}, 'total_mi': {'type': 'number'}, 'mapped_ways': {'type': ['number', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'kind': {'enum': ['race', 'trail', 'route'], 'type': 'string', 'description': "Keep only this kind. 'race' is a published event course, 'trail' is a trail segment, 'route' is an everyday loop."}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'The most courses to return.'}, 'query': {'type': 'string', 'maxLength': 120, 'description': "Match against the course name and its place. Case-insensitive, partial. Example: 'boston', 'fort worth', 'half'."}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'How many courses to skip. Use it with `next_offset`.'}, 'course_type': {'enum': ['loop', 'out-and-back', 'point-to-point'], 'type': 'string', 'description': 'Keep only this shape of course.'}, 'upcoming_only': {'type': 'boolean', 'default': False, 'description': 'Keep only courses whose next race date is today or later. A course with no date is dropped by this filter.'}, 'max_distance_mi': {'type': 'number', 'maximum': 200, 'minimum': 0, 'description': 'Keep only courses no longer than this, in miles.'}, 'min_distance_mi': {'type': 'number', 'maximum': 200, 'minimum': 0, 'description': 'Keep only courses at least this long, in miles.'}, 'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['total', 'count', 'offset', 'has_more', 'published_total', 'courses'], 'properties': {'count': {'type': 'number', 'description': 'Courses in this answer.'}, 'total': {'type': 'number', 'description': 'Courses that matched the filters.'}, 'offset': {'type': 'number'}, 'courses': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'place', 'kind', 'course_type', 'distance_mi', 'climb_ft', 'steepest_pct', 'next_race_date', 'days_out', 'page_url'], 'properties': {'kind': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'place': {'type': ['string', 'null']}, 'climb_ft': {'type': ['number', 'null']}, 'days_out': {'type': ['number', 'null']}, 'page_url': {'type': 'string'}, 'course_type': {'type': 'string'}, 'distance_mi': {'type': 'number'}, 'steepest_pct': {'type': ['number', 'null']}, 'next_race_date': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'has_more': {'type': 'boolean'}, 'next_offset': {'type': 'number'}, 'published_total': {'type': 'number', 'description': 'Every published course, before any filter.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last day, YYYY-MM-DD. Default 13 days after the first.'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First day, YYYY-MM-DD. Default yesterday, so today is in the window in every time zone.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['plans', 'start_date', 'end_date', 'truncated'], 'properties': {'plans': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'end_date': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'start_date': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Most rows to return.'}, 'distance': {'enum': ['5K', '10K', 'Half Marathon', 'Marathon', 'Ultra'], 'type': 'string', 'description': 'Only races at this distance.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['races', 'fastest', 'returned', 'total'], 'properties': {'races': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'total': {'type': 'number'}, 'fastest': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'returned': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['start_date', 'end_date'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Most rows to return. The answer says what it left out.'}, 'end_date': {'type': 'string', 'description': 'Last day to include, YYYY-MM-DD. Example: 2026-06-30'}, 'start_date': {'type': 'string', 'description': 'First day to include, YYYY-MM-DD. Example: 2026-01-01'}, 'include_non_runs': {'type': 'boolean', 'default': False, 'description': 'Include rides, gym and other types. Runs only by default.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['runs', 'returned', 'total_in_window', 'truncated'], 'properties': {'runs': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'returned': {'type': 'number'}, 'truncated': {'type': 'boolean'}, 'total_in_window': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'response_format': {'enum': ['markdown', 'json'], 'type': 'string', 'default': 'markdown', 'description': "Output format. 'markdown' reads well in a chat answer. 'json' carries every field for further computation."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['count', 'trail_systems'], 'properties': {'count': {'type': 'number'}, 'trail_systems': {'type': 'array', 'items': {'type': 'object', 'required': ['slug', 'name', 'region', 'total_mi', 'page_url'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'region': {'type': ['string', 'null']}, 'page_url': {'type': 'string'}, 'total_mi': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['plans'], 'properties': {'plans': {'type': 'array', 'items': {'type': 'object', 'required': ['date'], 'properties': {'tag': {'enum': ['easy', 'workout', 'race'], 'type': 'string', 'description': 'How hard: easy, workout or race.'}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'YYYY-MM-DD, after today.'}, 'name': {'type': 'string', 'maxLength': 120, 'description': 'A short name for the run.'}, 'note': {'type': 'string', 'maxLength': 500, 'description': 'A line the runner will read.'}, 'miles': {'type': 'number', 'maximum': 200, 'minimum': 0.1, 'description': 'Planned distance.'}, 'is_long': {'type': 'boolean', 'description': "The week's long run."}, 'minutes': {'type': 'number', 'maximum': 1440, 'minimum': 1, 'description': 'Planned time.'}}, 'additionalProperties': False}, 'maxItems': 14, 'minItems': 1, 'description': 'One run, or up to fourteen.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['written'], 'properties': {'written': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 200, 'maximum': 1000, 'minimum': 10, 'description': 'How many recent activities to read.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['workouts', 'scanned'], 'properties': {'scanned': {'type': 'number'}, 'workouts': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'Run id from ourpr_list_runs.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['laps'], 'properties': {'laps': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['activity_id'], 'properties': {'activity_id': {'type': 'string', 'description': 'Run id from ourpr_list_runs.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['grid_m', 'total_miles', 'samples', 'channels'], 'properties': {'grid_m': {'type': 'number'}, 'samples': {'type': 'number'}, 'channels': {'type': 'object', 'additionalProperties': {}}, 'total_miles': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['miles', 'gain_ft'], 'properties': {'limit': {'type': 'integer', 'default': 8, 'maximum': 25, 'minimum': 1, 'description': 'How many to return.'}, 'miles': {'type': 'number', 'maximum': 200, 'minimum': 0.1, 'description': 'Target distance in miles.'}, 'gain_ft': {'type': 'number', 'maximum': 30000, 'minimum': 0, 'description': 'Target climb in feet.'}, 'tolerance_ft': {'type': 'number', 'default': 15, 'maximum': 200, 'minimum': 1, 'description': 'Climb tolerance, feet.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['matches', 'scanned'], 'properties': {'matches': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'scanned': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'past': {'type': 'integer', 'default': 3, 'maximum': 30, 'minimum': 0, 'description': 'How many past Blocks to include, newest first.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['goal', 'past', 'total_races'], 'properties': {'goal': {'anyOf': [{'type': 'object', 'additionalProperties': {}}, {'type': 'null'}]}, 'past': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': {}}}, 'total_races': {'type': 'number'}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
SupplyGraph.AI Data
Provides China-focused location, surrounding-area, company, industry-chain, property, population, retail, and regional business i…
Microburbs Australian Property Data
Provides Australian property, suburb, valuation, sales, rental, zoning, school, risk, geospatial, and census statistics.
AIOProductOS MCP
Combines customer records, support conversations, feedback, product analytics, roadmaps, tasks, experiments, releases, and retent…
Wakatime
Provides WakaTime coding-activity data, including durations, projects, commits, goals, heartbeats, editor usage, leaders, and use…
Timeapi Io
Provides timezone and date utilities, along with routed access to structured research and data sources.
UK Environmental Intelligence MCP Server from MCPBundles
Provides UK environmental intelligence covering flood warnings, river and groundwater readings, bathing water quality, ecology ob…
roadflow
Creates and shares roadmap graphs, and manages structured model registers containing parameters, observations, formulas, dictiona…
Ca Dmv
Provides California DMV data on vehicle and EV registrations, driver licenses, DMV offices, forms, and insurer NAIC codes.