# com.courseprofiler/courseprofiler

Race course profiling, catalog search, course submission, and personalized race plans.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the content rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.1.0
- **Author:** com.courseprofiler
- **License:** Unknown
- **Endpoints:** streamable-http https://courseprofiler.com/mcp
- **Source:** https://courseprofiler.com/mcp.html
- **Endpoint health:** reachable (last checked 2026-10-03T06:28:49.753Z, 6 samples) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the content rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: clean
- Obfuscation scan: clean
- Evidence age: 22 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-12T15:50:19.515Z
- **Version scanned:** live
- **CVEs:** no coverage — this entry has no package coordinates to query OSV against, so "no known CVEs" is NOT asserted for it.

## Tools

24 declared. Observed from a live `tools/list` probe.
- `create_race_plan` — Primary CourseProfiler tool for creating a personalized race plan and optional PDF. Use this after obtaining both a course input and runner input. Course input 
- `search_race_catalog` — Search CourseProfiler's race catalog by race/course name and return direct CRSProf URLs that can be used as course sources.
- `import_course` — Import a fetchable official GPX/FIT/CRSProf URL, official ZIP containing exactly one GPX, uploaded source_file artifact, raw JSON payload, or inline/proxied cou
- `enrich_course_waypoints` — Add structured aid stations, checkpoints, cutoffs, and canonical resources to a CRSProf artifact that lacks them. Before enriching, inspect whether the imported
- `generate_course_segments` — Generate analytical course segments from an enriched CRSProf artifact after waypoint enrichment, or from a catalog CRSProf that already contains official waypoi
- `generate_runner_profile` — Generate a segment-evidence USRProf runner profile artifact from uploaded runner evidence or an existing .usrprof source. Confirm profile purpose and evidence s
- `submit_course` — Submit an official/trusted course for CourseProfiler catalog review. This is the only MCP tool that creates a catalog-review submission; import_course, enrich_c
- `get_course_submission_requirements` — Use this before submit_course when the user gives only a race name or incomplete inputs. Returns the catalog-first course submission workflow, accepted route so
- `get_race_plan_requirements` — Use this before create_race_plan when the user gives only a race name or incomplete inputs. Returns the required course and runner inputs and the next steps an 
- `get_runner_profile_requirements` — Use this when runner input is missing or unclear. Explains how to obtain or generate runner input, what USRProf/evidence files should contain, whether GPX/FIT a
- `get_artifact_upload_requirements` — Use this when an assistant needs instructions for CourseProfiler's REST artifact upload flow or needs to explain why hosted MCP cannot upload bare local paths. 
- `get_job` — Poll a CourseProfiler async job by job_id.
- `get_artifact` — Fetch artifact metadata and a private short-lived download URL by artifact_id.
- `validate_course_profile` — Validate a CRSProf artifact or inline CRSProf JSON before race planning or catalog submission. This does not mutate artifacts or submit courses.
- `validate_runner_profile` — Validate a USRProf artifact or inline USRProf JSON before creating personalized race plans. This does not mutate artifacts or generate a new profile.
- `export_race_plan_pdf` — Export a Hi-Fi PDF or standalone checkpoint card from an existing CRSProf artifact. The CRSProf supplies the course/profile/plan data; options are presentation-
- `build_runner_profile_from_strava` — Build a USRProf from Strava activities selected for a target course or distance. Ask the user for the target course or distance and, when an existing profile is
- `analyze_activity` — Analyze supplied GPX/FIT directly with the browser's canonical pipeline; no catalog search or runner profile is needed. Accept inline course_file, URL, or artif
- `inspect_analysis` — Read an existing v3 CRSProf artifact without reanalysis or downloading source points. Query segments, splits, climbs, stops, range, or quality. Pages default to
- `compare_execution` — Compare plan and execution v3 CRSProf artifacts with the full browser canonical comparison pipeline. Association defaults to 60 metres; override stop_associatio
- `inspect_runner_profile` — Read an existing USRProf or uploaded USRProf source artifact without reconstruction, scope replacement or model activation. For chat attachments without artifac
- `assess_finish_time_goal` — Assess a positive elapsed goal including saved dwell using the existing nine intensity/shape combinations (5% shapes). Preserve reference-plan movement locks, s
- `compare_pacing_strategies` — Compare all nine existing intensity/shape combinations without an elapsed goal. split_percent defaults to 5, inclusive range 0-15. Preserve reference-plan locks
- `import_profile_attachment` — Store an attached USRProf or CRSProf unchanged as a private source_file artifact (maximum 25 MiB). Prefer this for ChatGPT attachments when file handoff is avai

## Install

**Verdict: review** — Installable, but 2 things to check first: No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
**Cautions** (coverage gaps and advisories — never blocking)
- No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"courseprofiler\": {\n      \"type\": \"http\",\n      \"url\": \"https://courseprofiler.com/mcp\"\n    }\n  }\n}"
```

## Blast radius

Moderate to extensive — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: mutates data; runs on someone else's infrastructure.
- Floor 26, ceiling 50 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/com.courseprofiler%2Fcourseprofiler
- Install plan: https://forgeregistry.com/api/v1/packages/com.courseprofiler%2Fcourseprofiler/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/com.courseprofiler%2Fcourseprofiler
- HTML page: https://forgeregistry.com/registry/com.courseprofiler%2Fcourseprofiler
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
